<?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>apple2 &#8211; Pages of Fun</title>
	<atom:link href="https://robertgomez.org/blog/tag/apple2/feed/" rel="self" type="application/rss+xml" />
	<link>https://robertgomez.org</link>
	<description>Robert Wm. Gomez&#039;s Website</description>
	<lastBuildDate>Fri, 02 May 2025 21:46:15 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://robertgomez.org/wp-content/uploads/2020/10/cropped-garland_logo-32x32.png</url>
	<title>apple2 &#8211; Pages of Fun</title>
	<link>https://robertgomez.org</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Replacing the Battery on an Apple IIgs</title>
		<link>https://robertgomez.org/blog/2021/05/19/replacing-the-battery-on-an-apple-iigs/</link>
		
		<dc:creator><![CDATA[Robert Gomez]]></dc:creator>
		<pubDate>Wed, 19 May 2021 17:34:04 +0000</pubDate>
				<category><![CDATA[Robert's Blog]]></category>
		<category><![CDATA[apple2]]></category>
		<category><![CDATA[retrocomputing]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[video]]></category>
		<guid isPermaLink="false">https://robertgomez.org/?p=4355</guid>

					<description><![CDATA[A pandemic ago I decided to heed the warnings on the Apple ][ Facebook group and remove the 30-year-old battery from my Apple IIgs computer. This is harder than it should be since Apple thought it was a good idea to permanently attach this ticking time bomb to the motherboard. My solution was to clip [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>A pandemic ago I decided to heed the warnings on the Apple ][ Facebook group and remove the 30-year-old battery from my Apple IIgs computer. This is harder than it should be since Apple thought it was a good idea to permanently attach this ticking time bomb to the motherboard. My solution was to clip out the old battery and solder in a plastic battery holder instead. This is not that hard to do, but I am a complete klutz when it comes to soldering. Destroy the motherboard with a mountain of silvery metal was always a possible outcome. I documented the process and present it here. Originally I had intended to do a hilariously comic narration over the video but I eventually came to my senses. Enjoy the video, video enjoyers:</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="Replacing the Battery on an Apple IIgs" width="500" height="281" src="https://www.youtube.com/embed/67UUVGTmg9M?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>
					
		
		
			</item>
		<item>
		<title>Riddle Magic</title>
		<link>https://robertgomez.org/blog/2020/10/09/riddle-magic/</link>
		
		<dc:creator><![CDATA[Robert Gomez]]></dc:creator>
		<pubDate>Fri, 09 Oct 2020 06:00:00 +0000</pubDate>
				<category><![CDATA[Robert's Blog]]></category>
		<category><![CDATA[apple2]]></category>
		<category><![CDATA[joke]]></category>
		<category><![CDATA[screenshot]]></category>
		<guid isPermaLink="false">https://robertgomez.org/?p=3494</guid>

					<description><![CDATA[Mike Thaler uses Riddle Magic to come up with his stand-up material. Here he is honing his Kamala Harris routine. Classic.]]></description>
										<content:encoded><![CDATA[<img width="560" height="384" src="https://robertgomez.org/wp-content/uploads/2020/10/Riddle-Magic.png" class="attachment-large size-large wp-post-image" alt="Riddle Magic" style="display: block; margin: 0 0 14px 0;" decoding="async" fetchpriority="high" srcset="https://robertgomez.org/wp-content/uploads/2020/10/Riddle-Magic.png 560w, https://robertgomez.org/wp-content/uploads/2020/10/Riddle-Magic-300x206.png 300w" sizes="(max-width: 560px) 100vw, 560px" />
<p>Mike Thaler uses <em><a href="https://archive.org/details/RiddleMagic4amCrack">Riddle Magic</a></em> to come up with his stand-up material. Here he is honing his Kamala Harris routine. Classic.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Haunted House: Remastered</title>
		<link>https://robertgomez.org/blog/2020/02/05/haunted-house-remastered/</link>
		
		<dc:creator><![CDATA[Robert Gomez]]></dc:creator>
		<pubDate>Thu, 06 Feb 2020 03:48:11 +0000</pubDate>
				<category><![CDATA[Robert's Blog]]></category>
		<category><![CDATA[adventure]]></category>
		<category><![CDATA[apple2]]></category>
		<category><![CDATA[applesoft]]></category>
		<category><![CDATA[game development]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[programming]]></category>
		<guid isPermaLink="false">https://robertgomez.org/?p=3226</guid>

					<description><![CDATA[Followers of this site (ed. yeah like that&#8217;s a thing) will remember a few years ago I created a in-browser playable version of the Applesoft BASIC game Haunted House for this site. Over the past month or so I got it in my head to push my skills as a programmer and make a much more fully [&#8230;]]]></description>
										<content:encoded><![CDATA[<img width="1024" height="800" src="https://robertgomez.org/wp-content/uploads/2020/02/haunted-house-remastered.jpg" class="attachment-large size-large wp-post-image" alt="" style="display: block; margin: 0 0 14px 0;" decoding="async" srcset="https://robertgomez.org/wp-content/uploads/2020/02/haunted-house-remastered.jpg 1024w, https://robertgomez.org/wp-content/uploads/2020/02/haunted-house-remastered-300x234.jpg 300w, https://robertgomez.org/wp-content/uploads/2020/02/haunted-house-remastered-768x600.jpg 768w, https://robertgomez.org/wp-content/uploads/2020/02/haunted-house-remastered-800x625.jpg 800w" sizes="(max-width: 1024px) 100vw, 1024px" />
<p>Followers of this site (ed. yeah like that&#8217;s a thing) will remember a few years ago I created a in-browser playable version of the Applesoft BASIC game <em><a href="https://robertgomez.org/blog/2012/11/08/haunted-house-text-adventure/" data-type="post" data-id="2600">Haunted House</a></em> for this site. Over the past month or so I got it in my head to push my skills as a programmer and make a much more fully realized version of the game. Today I am releasing my new version of the game, <em><a href="https://projects.robertgomez.org/haunted-house/">Haunted House: Remastered</a>!</em> It&#8217;s a vast improvement on the original in almost every way possible. In other words, it&#8217;s actually fun to play.</p>



<p>While it&#8217;s nowhere near the level of sophistication of an Infocom game, I think it does some pretty impressive stuff (for my skill level as a programmer). It&#8217;s still a two word parser, but the vocabulary is increased. There are full-page help screens, triggered story events, a retro-styled monochrome monitor look, and a bunch of scary sound effects! Please take a few minutes and <a href="https://projects.robertgomez.org/haunted-house/">give the game a try</a>. It&#8217;s not too long and I try to keep the puzzle reasonably fair.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Apple ][ Graphic Adventure Part V</title>
		<link>https://robertgomez.org/blog/2018/03/22/apple-graphic-adventure-part-v/</link>
		
		<dc:creator><![CDATA[Robert Gomez]]></dc:creator>
		<pubDate>Thu, 22 Mar 2018 20:58:42 +0000</pubDate>
				<category><![CDATA[Robert's Blog]]></category>
		<category><![CDATA[apple2]]></category>
		<category><![CDATA[applesoft]]></category>
		<category><![CDATA[programming]]></category>
		<guid isPermaLink="false">https://robertgomez.org/?p=3012</guid>

					<description><![CDATA[Now that my&#160;memory issues&#160;are seemingly under control, let&#8217;s take a look at my modifications to the parser. Normally, in these types of graphical adventures the player enters two words in the form of&#160;VERB OBJECT. My interface limits the number of verb choices and allows the player to enter a verb with a single keystroke. In [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Now that my&nbsp;<a href="https://robertgomez.org/blog/2018/03/21/apple-graphic-adventure-part-iv/" data-type="post" data-id="3008">memory issues</a>&nbsp;are seemingly under control, let&#8217;s take a look at my modifications to the parser. Normally, in these types of graphical adventures the player enters two words in the form of&nbsp;<code>VERB OBJECT</code>. My interface limits the number of verb choices and allows the player to enter a verb with a single keystroke.</p>



<p>In Applesoft you can prompt for user input in two ways. First there is&nbsp;<code>INPUT A$</code>&nbsp;which will display a question mark on the screen and await user input followed by a&nbsp;<kbd>RETURN</kbd>. That user response then fills the variable A$. Similarly there is&nbsp;<code>GET A$</code>&nbsp;which also displays a question mark but&nbsp;<code>GET</code>&nbsp;will only accept a single keypress as user input. My main problem with both of these is an aesthetic one: that darn question mark.</p>



<p>The solution is to write your own input routine leveraging machine code routines via&nbsp;<code>PEEKs</code>&nbsp;and&nbsp;<code>POKEs</code>. To do this, first I simulate a cursor by placing a flashing underscore character at the bottom of the screen.</p>



<pre class="wp-block-code"><code>101 VTAB 24 : HTAB 1 : CALL -868 : PRINT ":"; : FLASH : PRINT "_"; : NORMAL : GOSUB 55</code></pre>



<p>A lot is going on in this line. The&nbsp;<code>VTAB</code>&nbsp;and&nbsp;<code>HTAB</code>&nbsp;commands position the screen cursor at line 24 and character 1.&nbsp;<code>CALL -868</code>&nbsp;is a special machine code call that clears that single line of text. Now that we have an empty line we type a colon and then a flashing underscore. The result looks like this:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="200" height="59" src="https://robertgomez.org/wp-content/uploads/2018/03/adventure-cursor.gif" alt="" class="wp-image-3014"/></figure>



<p>This looks like a user input prompt, but at this point it does nothing. The magic happens at the subroutine which is GOSUB&#8217;d at the end of that line.</p>



<pre class="wp-block-code"><code>55 KEY = PEEK (49152) : IF KEY &lt; 128 THEN 55
56 IF KEY &gt; 224 AND KEY &lt; 251 THEN KEY = KEY - 32 : REM UPPERCASE
57 POKE 49168,0 : BUZZ = PEEK (49200) : RETURN</code></pre>



<p>In line 55 we are creating a variable KEY and assigning to it the contents of memory location 49,152 to it ($C000 for you hex-heads). Turns out location 49,152 will read the keyboard and return the ASCII value of the currently pressed key. If that value is a character then we break out of the loop and go to line 56.</p>



<p>Line 56 insures that, if the ASCII value of the key denotes a lowercase key, it is converted to uppercase by shifting the ASCII value.&nbsp;<code>POKE 49168,0</code>&nbsp;clears the keyboard buffer so that the PEEK in 55 will work next time around and not just register the same value.&nbsp;Finally, that&nbsp;<code>BUZZ = PEEK (49200)</code>&nbsp;bit triggers a speaker click so that the player&#8217;s keystroke has and audible sound.</p>



<p>When we return to the main game loop we now have a variable KEY which contains an ASCII value of the key pressed. I can then branch the program based on this value. I can also test if it&#8217;s a <kbd>RETURN</kbd> keypress and then toggle text display. Later in my program I can concatenate keypresses into a single string value by returning to that subroutine again and again until a return press is detected. That&#8217;s how I collect the OBJECT half of the VERB OBJECT pair.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Apple ][ Graphic Adventure Part IV</title>
		<link>https://robertgomez.org/blog/2018/03/21/apple-graphic-adventure-part-iv/</link>
		
		<dc:creator><![CDATA[Robert Gomez]]></dc:creator>
		<pubDate>Wed, 21 Mar 2018 20:56:53 +0000</pubDate>
				<category><![CDATA[Robert's Blog]]></category>
		<category><![CDATA[apple2]]></category>
		<category><![CDATA[applesoft]]></category>
		<category><![CDATA[programming]]></category>
		<guid isPermaLink="false">https://robertgomez.org/?p=3008</guid>

					<description><![CDATA[Previously I discussed the&#160;overall structure&#160;of my soon-to-be hit adventure game. Well, last night was a milestone. I managed to write an Applesoft program so epic that it overwrote the high-resolution graphics page. Compared to other programs I have seen, mine isn&#8217;t that huge. Around 250 lines isn&#8217;t that huge, right?&#160;Transylvania&#160;clocks in at 464 lines. I [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Previously I discussed the&nbsp;<a href="https://robertgomez.org/blog/2018/03/19/apple-graphic-adventure-part-iii/" data-type="post" data-id="3003">overall structure</a>&nbsp;of my soon-to-be hit adventure game. Well, last night was a milestone. I managed to write an Applesoft program so epic that it overwrote the high-resolution graphics page. Compared to other programs I have seen, mine isn&#8217;t that huge. Around 250 lines isn&#8217;t that huge, right?&nbsp;<em><a href="https://robertgomez.org/fun-stuff/games/transylvania/" data-type="game_review" data-id="2985">Transylvania</a></em>&nbsp;clocks in at 464 lines.</p>



<p>I think the issue is the number of arrays that I am defining. For now I think I have a fix. I have set&nbsp;<code>LOMEM: 24576</code>&nbsp;at the top of my program.&nbsp;<a href="https://retrocomputing.stackexchange.com/questions/1919/apple-ii-applesoft-basic-memory-management">Supposedly</a>, this will force the interpreter to define variables in a memory location after the hi-res pages. We shall see.</p>



<p>In any event, the game is back and running again. And the text screen now has some text formatting enhancements:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="560" height="384" src="https://robertgomez.org/wp-content/uploads/2018/03/adventure-text-screen.jpg" alt="" class="wp-image-3010" srcset="https://robertgomez.org/wp-content/uploads/2018/03/adventure-text-screen.jpg 560w, https://robertgomez.org/wp-content/uploads/2018/03/adventure-text-screen-300x206.jpg 300w" sizes="auto, (max-width: 560px) 100vw, 560px" /></figure>



<p>One of the cooler things I have implemented is this text screen. If at any prompt you hit <kbd>RETURN</kbd> you turn off the hi-res graphics and can see this text screen. Here will be some valuable game info included the location&#8217;s name, exits and any TAKE-able objects. The code for this is rather simple:</p>



<pre class="wp-block-code"><code>58 IF GM = 1 THEN GM = 0 : TEXT : RETURN
59 GM = 1 : CALL -3100 : RETURN</code></pre>



<p>GM is a flag which tracks where you are in graphics mode (1) or text mode (0).&nbsp;<code>CALL -3100</code>&nbsp;triggers the hi-res graphics screen without erasing its contents. So exciting, right!?!</p>



<p><a href="https://robertgomez.org/blog/2018/03/22/apple-graphic-adventure-part-v/" data-type="post" data-id="3012">Continued in Part V</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Apple ][ Graphic Adventure Part III</title>
		<link>https://robertgomez.org/blog/2018/03/19/apple-graphic-adventure-part-iii/</link>
		
		<dc:creator><![CDATA[Robert Gomez]]></dc:creator>
		<pubDate>Mon, 19 Mar 2018 20:54:42 +0000</pubDate>
				<category><![CDATA[Robert's Blog]]></category>
		<category><![CDATA[adventure]]></category>
		<category><![CDATA[apple2]]></category>
		<category><![CDATA[applesoft]]></category>
		<category><![CDATA[programming]]></category>
		<guid isPermaLink="false">https://robertgomez.org/?p=3003</guid>

					<description><![CDATA[The&#160;previous post in this series&#160;explained how to get&#160;Graphics Magician&#160;images to display from Applesoft. Now, I&#8217;d like to go over the structure of the program listed in&#160;Write your Own Adventure Programs. The bulk of the program listing consists of the game data including objects, room descriptions, verbs and state flags. Most of the remaining code is [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>The&nbsp;<a href="https://robertgomez.org/blog/2018/03/18/apple-graphic-adventure-part-ii/" data-type="post" data-id="3001">previous post in this series</a>&nbsp;explained how to get&nbsp;<em>Graphics Magician</em>&nbsp;images to display from Applesoft. Now, I&#8217;d like to go over the structure of the program listed in&nbsp;<em>Write your Own Adventure Programs</em>. The bulk of the program listing consists of the game data including objects, room descriptions, verbs and state flags. Most of the remaining code is comprised of a series of conditions that check how the player&#8217;s actions affect the objects in the game world.</p>



<h2 class="wp-block-heading">Verbs</h2>



<p><a href="https://robertgomez.org/blog/2012/11/08/haunted-house-text-adventure/" data-type="post" data-id="2600"><em>Haunted House</em></a>&nbsp;used a simple, two-word input parser: VERB NOUN.&nbsp;But I wanted this new game to simplify the number of verb choices in the same way the LucasArts adventures streamlined the interface of Sierra-style adventure games. The player will be limited to around a dozen verbs that are entered with a single keystroke.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="560" height="93" src="https://robertgomez.org/wp-content/uploads/2018/03/parser-help-list.jpg" alt="Apple II Adventure Parser Help List" class="wp-image-3005" srcset="https://robertgomez.org/wp-content/uploads/2018/03/parser-help-list.jpg 560w, https://robertgomez.org/wp-content/uploads/2018/03/parser-help-list-300x50.jpg 300w" sizes="auto, (max-width: 560px) 100vw, 560px" /></figure>



<p>The verb list is largely based on the options in&nbsp;<em>Monkey Island</em>. PUSH and PULL have been combined into MOVE. To move you must hit&nbsp;<kbd>G</kbd>o then enter either&nbsp;<kbd>N</kbd>orth,&nbsp;<kbd>S</kbd>outh,&nbsp;<kbd>E</kbd>ast,&nbsp;<kbd>W</kbd>est,&nbsp;<kbd>U</kbd>p or&nbsp;<kbd>D</kbd>own. This is a little annoying, but there are only so many letters in on the keyboard and I needed that D, U and S elsewhere. Other commands require you to hit the keystroke, then type out an object NOUN and then hit&nbsp;<kbd>Return</kbd>. &#8220;Guess the verb&#8221; will no longer be an issue&#8230; welcome to 21st century &#8220;guess the noun&#8221; technology!</p>



<p>Each verb then get&#8217;s its own subroutine which contains the logic that triggers the various game actions (or provides a default message if nothing special happens). By assigning a number value&nbsp;<var>VB</var>&nbsp;to each verb, I can use the following to branch to the various subroutines:&nbsp;<code>ON VB GOSUB 1000,600,800,850, ...</code></p>



<h2 class="wp-block-heading">Game Data</h2>



<p>The game data is set in the program by assigning strings and numbers to several arrays. In Applesoft you need to declare the size of an array by dimensioning it with the <code>DIM</code> command. For the rooms I will set the size of the rooms array to the number of rooms <var>RM</var> by declaring <code>DIM RM$(RM)</code>. Then, near the start of my program I read data into the array by using <code>GOSUB</code> to a loop like this:</p>



<pre class="wp-block-code"><code>5000 DATA "Room description 1","Room Description 2", &#91;...]
5005 FOR I = 1 to RM : READ RM$(I) : NEXT
5010 RETURN</code></pre>



<p>The&nbsp;<code>DATA</code>&nbsp;can be listed anywhere in the code and it&#8217;s important to make sure that there are exactly as many data strings as&nbsp;<code>READ</code>&nbsp;commands. Otherwise, you might get&nbsp;<code>OUT OF DATA</code>&nbsp;errors.</p>



<p>This method of declaring rooms and object will eventually make your Applesoft program very long and hard to edit. I was pretty sure that I could figure out a way to read the data in from an external text file. But more on that later.</p>



<p><a href="https://robertgomez.org/blog/2018/03/21/apple-graphic-adventure-part-iv/" data-type="post" data-id="3008">Continued in Part IV</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Apple ][ Graphic Adventure Part II</title>
		<link>https://robertgomez.org/blog/2018/03/18/apple-graphic-adventure-part-ii/</link>
		
		<dc:creator><![CDATA[Robert Gomez]]></dc:creator>
		<pubDate>Sun, 18 Mar 2018 20:51:06 +0000</pubDate>
				<category><![CDATA[Robert's Blog]]></category>
		<category><![CDATA[apple2]]></category>
		<category><![CDATA[applesoft]]></category>
		<category><![CDATA[Graphics Magician]]></category>
		<category><![CDATA[programming]]></category>
		<guid isPermaLink="false">https://robertgomez.org/?p=3001</guid>

					<description><![CDATA[In my&#160;previous post&#160;I wrote about the impetus behind this project. To start, I knew that my code was going to be structured around the&#160;Haunted House&#160;program&#160;in the excellent book&#160;Write your Own Adventure Programs for your Microcomputer. As I have&#160;written before, this book was crucial in my development as a programmer (I haven&#8217;t developed much beyond it). [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>In my&nbsp;<a href="https://robertgomez.org/blog/2018/03/17/apple-graphic-adventure-part-i/" data-type="post" data-id="2995">previous post</a>&nbsp;I wrote about the impetus behind this project. To start, I knew that my code was going to be structured around the&nbsp;<a href="https://robertgomez.org/blog/2012/11/08/haunted-house-text-adventure/" data-type="post" data-id="2600"><em>Haunted House</em>&nbsp;program</a>&nbsp;in the excellent book&nbsp;<em>Write your Own Adventure Programs for your Microcomputer</em>. As I have&nbsp;<a href="https://robertgomez.org/blog/2009/07/14/my-apple-masterpiece-malfunction/" data-type="post" data-id="851">written before</a>, this book was crucial in my development as a programmer (I haven&#8217;t developed much beyond it). I would love to do this project in 6502 machine code and I have been trying very hard to learn 6502 assembly programming. But, although I&#8217;ve gotten a better understanding of machine code, there&#8217;s serious lack of noob-friendly practical learning exercises available out there. Sure I can draw pixels at lightning speed, but, after reading most of&nbsp;<a href="https://robertgomez.org/blog/2015/09/14/apple-assembly-language-programming/" data-type="post" data-id="2847"><em>Assembly Lines</em></a>, I still have no idea how to do a simple&nbsp;<code>INPUT</code>&nbsp;command or mimic an array.</p>



<p>So, Applesoft&nbsp;<abbr title="Beginner's All-purpose Symbolic Instruction Code">BASIC</abbr>&nbsp;it is! With emulation and modern computing I have been able to develop my code on a Windows PC and then quickly run it in emulation. My workflow isn&#8217;t nearly as fancy as some other retro-programmers. I type my Applesoft in a text editor, then in AppleWin I paste the entire code listing into an emulated apple using&nbsp;<kbd>SHIFT+INSERT</kbd>. The benefit of using emulation as a development environment is that you can throttle the emulation to run hundreds of times faster (hit&nbsp;<kbd>ScrLK</kbd>) than real hardware. This makes testing small changes a breeze.</p>



<p>My first task was to see if I could successfully load a&nbsp;<em>Graphics Magician</em>&nbsp;image into a program. The program itself is a bit of a UI nightmare. Without a&nbsp;<a href="ftp://ftp.apple.asimov.net/pub/apple_II/documentation/applications/misc/Graphics%20Magician%20Picture%20Painter.pdf">manual</a>&nbsp;or reference card, it&#8217;s nearly impossible to know what keys do what. On top of that, the program requires that you use a joystick to move the drawing cursor on the screen. Fortunately, the manual can be found online and you can use a PC mouse as a joystick within AppleWin. I managed to crank out a couple of silly images for testing and save them to my game disk.</p>



<p>I then used to code provided in the manual to write a simple Applesoft program that displays the image:</p>



<pre class="wp-block-code"><code>1 PRINT CHR$ (4);"MAXFILES1"5 HIMEM: 32768
10 PRINT CHR$ (4);"BLOAD PICDRAWH"
20 PRINT CHR$ (4);"BLOAD ROOM1.SPC,A32768"
30 HGR
40 A = 32768:HI = INT (A / 256):LO = A - HI * 256: POKE 0,LO: POKE 1,HI50 CALL 36096</code></pre>



<p>In order for this code to work, you are required to copy PICDRAWH from the&nbsp;<em>Graphics Magician</em>&nbsp;disk to your disk. This is the machine code rendering engine that is loaded into memory at the top of this program. The&nbsp;<code>MAXFILES1</code>&nbsp;DOS command apparently frees up some memory by limiting the amount of open files. This command needs to be the first one in your code, before any string assignments, etc. I think&nbsp;<code>HIMEM</code>&nbsp;does something similar with allocating memory locations. I have never written an Applesoft program so large that it required memory management so the purpose of these commands alludes me somewhat. As this project grows, I may have to familiarize myself with them.</p>



<p>You will see&nbsp;<code>CHR$(4)</code>&nbsp;often in Applesoft programs.&nbsp;<code>CHR$()</code>&nbsp;is a function that retrieves the keyboard character in assigned to the numerical value in then parenthesis. For example,&nbsp;<code>PRINT CHR$(65)</code>&nbsp;prints the letter A. In this case, character number four is the equivalent of keying in&nbsp;<kbd>CTRL+D</kbd>. That instructs the computer that the next PRINTed string should be executed as a DOS command rather than PRINTed to the screen.</p>



<p>The&nbsp;<em>Graphics Magician</em>&nbsp;file is ROOM1.SPC.&nbsp;<code>BLOAD ROOM1.SPC,A32768</code>&nbsp;loads the drawing code into memory location 32768. That seems like a crazy random number but it is actually $8000 in hexidecimal.&nbsp;<code>HGR</code>&nbsp;switches to high-resolution graphics mode and then line 40 stores the memory address of the picture into a location PICDRAWH will know to look. Finally, the&nbsp;<code>CALL 36096</code>&nbsp;triggers the PICDRAWH draw routines.</p>



<p>There&#8217;s a lot of fancy stuff going on here, but it does the job as advertised.&nbsp;<em>The Graphics Magician</em>&nbsp;manual also goes deeper with more code that shows how to string multiple images into slide shows&nbsp;and how to overlay objects over backgrounds. More on that when I get to my object code. For now, this proof-of-concept was enough to get a simple working prototype up and running.</p>



<p><a href="https://robertgomez.org/blog/2018/03/19/apple-graphic-adventure-part-iii/" data-type="post" data-id="3003">Continued in Part III</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Apple ][ Graphic Adventure Part I</title>
		<link>https://robertgomez.org/blog/2018/03/17/apple-graphic-adventure-part-i/</link>
		
		<dc:creator><![CDATA[Robert Gomez]]></dc:creator>
		<pubDate>Sat, 17 Mar 2018 20:48:52 +0000</pubDate>
				<category><![CDATA[Robert's Blog]]></category>
		<category><![CDATA[adventure]]></category>
		<category><![CDATA[apple2]]></category>
		<category><![CDATA[applesoft]]></category>
		<category><![CDATA[Graphics Magician]]></category>
		<category><![CDATA[programming]]></category>
		<guid isPermaLink="false">https://robertgomez.org/?p=2995</guid>

					<description><![CDATA[Having recently played the Apple ][ game&#160;Transylvania&#160;and its&#160;sequel, I was inspired to&#160;mess with the art program which those games used.&#160;The Graphics Magician&#160;was a huge hit for Penguin Software, but I never actually had a chance to use it when we had an Apple ][. I just remember it being advertised in every computer magazine I [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Having recently played the Apple ][ game&nbsp;<a href="https://robertgomez.org/fun-stuff/games/transylvania/" data-type="game_review" data-id="2985"><em>Transylvania</em></a>&nbsp;and its&nbsp;<a href="https://robertgomez.org/fun-stuff/games/the-crimson-crown/" data-type="game_review" data-id="2990">sequel</a>, I was inspired to&nbsp;mess with the art program which those games used.&nbsp;<em>The Graphics Magician</em>&nbsp;was a huge hit for Penguin Software, but I never actually had a chance to use it when we had an Apple ][. I just remember it being advertised in every computer magazine I had.</p>



<p>My go to art program back in the day was always&nbsp;<em>Alpha Plot</em>&nbsp;from Beagle Bros. It wasn&#8217;t the easiest software to use. In fact, it came bundled with a cardboard overlay for your keyboard so you had an immediate reference as to what the various keys did. Still, I managed to draw pixel by pixel and create masterpieces like this:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="560" height="384" src="https://robertgomez.org/wp-content/uploads/2018/03/alpha-plot-gross.png" alt="" class="wp-image-2997" srcset="https://robertgomez.org/wp-content/uploads/2018/03/alpha-plot-gross.png 560w, https://robertgomez.org/wp-content/uploads/2018/03/alpha-plot-gross-300x206.png 300w" sizes="auto, (max-width: 560px) 100vw, 560px" /></figure>



<p><em>The Graphics Magician</em>&nbsp;is something altogether different though. Instead of meticulously drawing each point on the screen, you create images programatically using a language of lines, fills and brushes.&nbsp;The end product is what today we would call vector art.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="560" height="384" src="https://robertgomez.org/wp-content/uploads/2018/03/graphics-magician-weirdo.png" alt="" class="wp-image-2998" srcset="https://robertgomez.org/wp-content/uploads/2018/03/graphics-magician-weirdo.png 560w, https://robertgomez.org/wp-content/uploads/2018/03/graphics-magician-weirdo-300x206.png 300w" sizes="auto, (max-width: 560px) 100vw, 560px" /></figure>



<p>The advantage of vector art is that file sizes are small. The other advantage is that these drawing routines can be used within one&#8217;s own Apple ][ programs.</p>



<p>This gave me an idea for a project. Take the text-based&nbsp;<a href="https://robertgomez.org/node/467">adventure game</a>&nbsp;I had made years ago, and use these routines to add graphics to the game. As I type this, I am already pretty far along in the project, but I will be going back and documenting my progress.&nbsp;Hopefully someone might find this informative and, if I am able to follow through, maybe I will have a releasable game in the end. It&#8217;s doing more than I ever imagined already:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="700" height="462" src="https://robertgomez.org/wp-content/uploads/2018/03/parser-inprogress-01.jpg" alt="" class="wp-image-2999" srcset="https://robertgomez.org/wp-content/uploads/2018/03/parser-inprogress-01.jpg 700w, https://robertgomez.org/wp-content/uploads/2018/03/parser-inprogress-01-300x198.jpg 300w" sizes="auto, (max-width: 700px) 100vw, 700px" /></figure>



<p>Continue to <a href="https://robertgomez.org/blog/2018/03/18/apple-graphic-adventure-part-ii/" data-type="post" data-id="3001">Part II</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The Music Studio Instrument Samples</title>
		<link>https://robertgomez.org/blog/2017/03/25/music-studio-instrument-samples/</link>
		
		<dc:creator><![CDATA[Robert Gomez]]></dc:creator>
		<pubDate>Sat, 25 Mar 2017 19:27:13 +0000</pubDate>
				<category><![CDATA[Robert's Blog]]></category>
		<category><![CDATA[Apple IIgs]]></category>
		<category><![CDATA[apple2]]></category>
		<category><![CDATA[retrocomputing]]></category>
		<category><![CDATA[samples]]></category>
		<guid isPermaLink="false">https://robertgomez.org/?p=2942</guid>

					<description><![CDATA[I recently took the time to sample all of the default sounds from the Apple IIgs music composition program The Music Studio for use with my new sampler. The sounds were recorded directly out of my IIgs via an Applied Engineering sound card and into the Octatrack. I then took the WAV files into my PC and [&#8230;]]]></description>
										<content:encoded><![CDATA[<img width="600" height="423" src="https://robertgomez.org/wp-content/uploads/2017/03/ms_gs_samples.jpg" class="attachment-large size-large wp-post-image" alt="" style="display: block; margin: 0 0 14px 0;" decoding="async" loading="lazy" srcset="https://robertgomez.org/wp-content/uploads/2017/03/ms_gs_samples.jpg 600w, https://robertgomez.org/wp-content/uploads/2017/03/ms_gs_samples-300x212.jpg 300w" sizes="auto, (max-width: 600px) 100vw, 600px" />
<p>I recently took the time to sample all of the default sounds from the Apple IIgs music composition program <em>The Music Studio</em> for use with my new sampler. The sounds were recorded directly out of my IIgs via an Applied Engineering sound card and into the Octatrack. I then took the WAV files into my PC and cleaned up the audio a bit. The IIgs outputs a rather noisy signal.</p>



<div class="wp-block-file"><a id="wp-block-file--media-594d88fa-5612-4bd9-9f1d-e30b05b82034" href="https://robertgomez.org/wp-content/uploads/2017/03/gs_music_studio.zip">The Music Studio &#8211; IIgs &#8211; Instrument Samples</a><a href="https://robertgomez.org/wp-content/uploads/2017/03/gs_music_studio.zip" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-594d88fa-5612-4bd9-9f1d-e30b05b82034">Download</a></div>



<p>The samples are organized into four sets: Jazz, Rock, Classical and Voices. Each set has about fifteen instruments and each instrument was sampled at six octaves of C. Jazz also contains a couple drum kits which I broke apart and sliced into eight notes each. I tried to create nice evenly sliced sample chains but they are a tad off so they require a little manual tweaking after auto-slicing them.</p>



<figure class="wp-block-image alignright size-large"><img loading="lazy" decoding="async" width="150" height="157" src="https://robertgomez.org/wp-content/uploads/2017/03/music-box-files-small.png" alt="" class="wp-image-2945"/></figure>



<p><em>The Music Studio</em>&nbsp;was one of the first music composition programs I ever used. Certainly, it was the best one I had used up until that time. Technically, the first would have been&nbsp;<em>Will Harvey&#8217;s Music Construction Set</em>&nbsp;on the Apple ][+ with a Mockingboard sound card, but I don&#8217;t think any of my compositions from that program have survived (I&#8217;ll have to dig around my old disks one of these days). Fortunately(?), my IIgs compositions have survived and have&nbsp;<a href="https://robertgomez.org/blog/2013/07/10/imaging-my-iigs-personal-data-disks/" data-type="post" data-id="2634">been imaged and archived</a>. Now such classics as &#8220;Kill Your Mama&#8221; and &#8220;Robert is Coll&#8221; have been preserved for the ages. Most of what we did in&nbsp;<em>The Music Studio</em>&nbsp;was transcribe my brother&#8217;s heavy metal guitar tab sheet music. So there&#8217;s a lot of G&#8217;n&#8217;R and Metallica riffs.</p>



<p>What made the program so cool (or &#8220;coll&#8221; if your are my typo prone teen aged self) was the inclusion of drum sounds. In hindsight, really bad drum sounds but drums nonetheless. It was my first real go at creating electronic music. I had no idea how performers like Cabaret Voltaire or even Devo were able to program their keyboards to play music automatically. There was that Jan Hammer&nbsp;<em>Miami Vice</em>&nbsp;video where you actually got a glimpse of a&nbsp;computerized rig (probably a Fairlight or something else that cost more than a car) and this seemed about as close to that as I could ever get.</p>



<p>Unfortunately,&nbsp;<em>The Music Studio</em>&nbsp;had a lot of quirks that made it really difficult to use. Although it uses a standard music staff for notation, it really plays notes like a piano roll. Meaning, if you have a whole note you want to ring out under several quarter notes you have to insert a bunch of redundant looking rests above the whole note. Otherwise, it plays the entirety of that long note before playing the quarter notes that are after it. Confusing, yes.&nbsp;Practically speaking, what this means for the composer is they have to put a bunch of evenly spaced rests across the top of the song scroll to insure the play head keeps moving along.&nbsp;The other major limitation is that you can&#8217;t have two instruments play the same note at the same time. That made any sort of complex arrangement a matter of spacing instruments across the staff all while avoiding your kludge of rests.</p>



<p>Until I was exposed to MOD files and tracking software on my PC this is how I thought music was made on a computer. Even&nbsp;<em><a href="http://www.moonrock.com/qbob/">Q-Bob&#8217;s</a></em>&nbsp;music was created using a similar looking MIDI composition program.&nbsp;<em>FastTracker</em>&nbsp;and&nbsp;<em>MadTracker</em>&nbsp;freed me of this notion and from there on I began to make music more in line with what I wanted to do as a teen.</p>



<p><em>The Music Studio</em>&nbsp;did have a very recognizable sound though. If you ever played&nbsp;<em><a href="https://robertgomez.org/fun-stuff/games/dream-zone/" data-type="game_review" data-id="2604">Dream Zone</a></em>&nbsp;you know exactly what I mean. These samples now allow us&nbsp;to get some of that distinctive sound into modern music apps and hardware. So, use the link at the bottom to download the set for yourself. In the meantime, here&#8217;s the first composition I made using the samples:</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Octatrack &quot;Jam&quot; with Apple IIgs Music Studio Samples" width="500" height="281" src="https://www.youtube.com/embed/nouvA0VmjiM?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>
					
		
		
			</item>
		<item>
		<title>Apple ][ Assembly Language Programming</title>
		<link>https://robertgomez.org/blog/2015/09/14/apple-assembly-language-programming/</link>
		
		<dc:creator><![CDATA[Robert Gomez]]></dc:creator>
		<pubDate>Mon, 14 Sep 2015 16:50:59 +0000</pubDate>
				<category><![CDATA[Robert's Blog]]></category>
		<category><![CDATA[apple2]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[programming]]></category>
		<guid isPermaLink="false">https://robertgomez.org/?p=2847</guid>

					<description><![CDATA[The past few weeks I have been diving into the world of assembly language programming on the Apple ][ computer. My interest in the topic stems from the recent book release of a compilation of articles on assembly language programming called&#160;Assembly Lines: The Complete Book. The articles were written by Roger Wagner and originally published [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>The past few weeks I have been diving into the world of assembly language programming on the Apple ][ computer. My interest in the topic stems from the recent book release of a compilation of articles on assembly language programming called&nbsp;<em>Assembly Lines: The Complete Book</em>. The articles were written by Roger Wagner and originally published in&nbsp;<em>Softalk</em>&nbsp;magazine back in the early eighties. This edition was edited by&nbsp;<a href="https://www.youtube.com/channel/UCrnCRkPLoXXzTtWX9dBJsnA">Chris Torrence</a>&nbsp;and is available for&nbsp;<a href="https://openlibrary.org/works/OL17078830W/Assembly_Lines">download</a>&nbsp;and&nbsp;<a href="http://www.lulu.com/shop/roger-wagner/assembly-lines-the-complete-book/hardcover/product-21959093.html">purchase</a>&nbsp;from a number of locations.</p>



<p>Now, I am pretty familiar with Applesoft Basic programming, but I was always in awe of commercially released software on the Apple ][ that ran so fast, had fancy hi-res graphics and used sounds other than the system beep. What was the secret of these mythical programs that required you to type &#8220;BRUN&#8221; in order to get them to load? The secret was machine language.</p>



<figure class="wp-block-image alignright size-large"><img loading="lazy" decoding="async" width="190" height="142" src="https://robertgomez.org/wp-content/uploads/2015/09/machine-code.png" alt="" class="wp-image-2849"/></figure>



<p>This image shows you just how intuitive and user-friendly machine code is. It&#8217;s almost like it was written by the Terminator himself (just after he finished cutting out his eyeball with an Xacto knife). Despite the seeming impenetrability of machine code, in the past I made a few attempts to learn it. I would get a few chapters into&nbsp;<a href="http://www.amazon.com/Apple-Machine-Language-Don-Inman/dp/0835902307"><em>Apple Machine Language</em></a>&nbsp;and then the endless diversions into binary math would addle my art-school trained brain. It never really clicked for me.</p>



<p>What I didn&#8217;t know is that there was this thing called &#8220;assembly language&#8221; which is a human-readable method of creating machine code. It still is pretty brutal compared with Basic or JavaScript, but for the first time I think I am starting to understand machine language and, more generally, just how the Apple ][ works. Cryptic hex numbers and even the aforementioned binary math are still a part of assembly, but it uses three letter abbreviations for various functions and allows for comments and labels. The assembler will translate the letters into their numeric machine language equivalents and assemble the source code into a BRUN-able program. Woo-hoo!</p>



<p>The first hundred pages or so of <em>Assembly Lines</em> has been very informative and I have dutifully typed in many of the example programs. At one point I had a pretty nice &#8220;ah ha!&#8221; moment when I was messing around with creating tones. I created a small program that generated an annoying high pitch noise and decided I would further enhance the interactivity by outputting a stream of numbers to the screen showing the paddle positions. Before I got very far beyond just reading the paddles I noticed that I could use the joystick to change the pitch of the sound. I had no idea why this would change the pitch so I decided to look at the machine code in the built-in paddle routine. To my surprise, I was able to see that it got the paddle value by using a count down loop. The longer the count down, the lower the tone. I couldn&#8217;t really say why this was the case, but at least I was starting to be able to decipher that wall of hex values.</p>



<p>Now, back in the late eighties I got my hands on an issue of&nbsp;<em>Compute!</em>&nbsp;magazine. Kids nowadays with their fancy iWatches and download services may not believe this, but in the olden days there would be program listings in computer magazines. Readers could carefully type in the program and, &#8220;Voila!&#8221;, you had new software to use.&nbsp;<a href="https://archive.org/details/1985-05-compute-magazine">This issue</a>&nbsp;contained a listing for a game called&nbsp;<em>Space Dodger</em>, with a separate listing for just about every machine available at the time. Most were written in basic, but the one for Apple ][ was pure machine code. I had no idea what any of it meant, but I dutifully typed every line into my Apple&#8217;s monitor. The result was a pretty slick little arcade game:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="560" height="384" src="https://robertgomez.org/wp-content/uploads/2015/09/space-dodger.png" alt="" class="wp-image-2850" srcset="https://robertgomez.org/wp-content/uploads/2015/09/space-dodger.png 560w, https://robertgomez.org/wp-content/uploads/2015/09/space-dodger-300x206.png 300w" sizes="auto, (max-width: 560px) 100vw, 560px" /></figure>



<p>You moved your ship to avoid the space junk which flew by from right to left at varying speeds. However, playing the game in emulation, I noticed a slight problem: the ship movement was mapped to the wrong joystick axis.</p>



<p>And now we get to my second assembly language &#8220;Ah ha!&#8221; moment. I now know the memory address where the paddles are read. I just needed to search the code listing for 00 1E FB and it would just be a matter of changing the 00 to 01. I found the values at $706B, made my edit and, magically, the joystick now worked correctly!</p>



<p>I still have no clue as to what the other 99% of the code does, but this was a breakthrough. Assembly language&#8230; I think I can do this. In the meantime, download&nbsp;<em>Space Dodger</em>&nbsp;and play it in your favorite emulator.</p>



<div class="wp-block-file"><a href="https://robertgomez.org/wp-content/uploads/2015/09/space_dodger.zip">Space Dodger Disk Image from Compute! Magazine Issue #60</a><a href="https://robertgomez.org/wp-content/uploads/2015/09/space_dodger.zip" class="wp-block-file__button wp-element-button" download>Download</a></div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>IIGS Memory Fail</title>
		<link>https://robertgomez.org/blog/2013/08/12/iigs-memory-fail/</link>
		
		<dc:creator><![CDATA[Robert Gomez]]></dc:creator>
		<pubDate>Mon, 12 Aug 2013 21:27:16 +0000</pubDate>
				<category><![CDATA[Robert's Blog]]></category>
		<category><![CDATA[apple2]]></category>
		<guid isPermaLink="false">https://robertgomez.org/?p=2642</guid>

					<description><![CDATA[Apparently there is something wrong with my IIgs. A couple of weeks ago I noticed that&#160;Briel Computers&#160;(a small company dedicated to making retro computer kits) put their 4 meg Apple IIgs RAM card on sale on eBay. My IIgs runs pretty well, but I that extra 2.8 megs of RAM would make things run a [&#8230;]]]></description>
										<content:encoded><![CDATA[<img width="600" height="342" src="https://robertgomez.org/wp-content/uploads/2013/08/iigs-4meg.jpg" class="attachment-large size-large wp-post-image" alt="" style="display: block; margin: 0 0 14px 0;" decoding="async" loading="lazy" srcset="https://robertgomez.org/wp-content/uploads/2013/08/iigs-4meg.jpg 600w, https://robertgomez.org/wp-content/uploads/2013/08/iigs-4meg-300x171.jpg 300w" sizes="auto, (max-width: 600px) 100vw, 600px" />
<p>Apparently there is something wrong with my IIgs. A couple of weeks ago I noticed that&nbsp;<a href="http://www.brielcomputers.com/">Briel Computers</a>&nbsp;(a small company dedicated to making retro computer kits) put their 4 meg Apple IIgs RAM card on sale on eBay. My IIgs runs pretty well, but I that extra 2.8 megs of RAM would make things run a lot better (it would be nice to have more than 5 windows open in Finder without getting memory warnings). I clicked the &#8220;Buy it now&#8221; button and waited patiently for my card to arrive so I could supercharge my nerditude. Well, when the card came I carefully installed it and powered up the Apple II. At first everything seemed cool. The control panel indicated I was brimming with RAM and the CFFA3000 was not showing any problems. But when I attempted to boot into System 6, everything just froze.</p>



<p>Fortunately, Briel was about as helpful as could be and offered to send me a new card. Something must have broken in transit, right? Well, the second card came and I had the same problems. We were never able to figure out what was going on. We thought it may be that my motherboard is the issue. I wouldn&#8217;t doubt that, but, personally, I think my power supply is very suspect. That thing emits buzzing noises that only my daughter can hear. She refuses to come into my room when the GS is fired up.</p>



<p>In any event, I am back down to a whopping 1.2 meg ram and am now keeping my eye open for another GS. In the end I got my money back and, but if I ever get a new Apple IIgs, I will contact Briel again about buying RAM. So, if you live in the Chicago area and have an old Apple IIgs you want to unload for cheap, drop me a line.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Imaging My IIgs Personal Data Disks</title>
		<link>https://robertgomez.org/blog/2013/07/10/imaging-my-iigs-personal-data-disks/</link>
		
		<dc:creator><![CDATA[Robert Gomez]]></dc:creator>
		<pubDate>Wed, 10 Jul 2013 21:23:19 +0000</pubDate>
				<category><![CDATA[Robert's Blog]]></category>
		<category><![CDATA[apple2]]></category>
		<guid isPermaLink="false">https://robertgomez.org/?p=2634</guid>

					<description><![CDATA[This evening I took the time to archive all my old Apple IIgs floppies. This is something I have been meaning to do since I got my CFFA3000 card. I have been pretty lucky in that, having been told since the early nineties that floppy discs will just disintegrate over time, all of my disks are in good shape [&#8230;]]]></description>
										<content:encoded><![CDATA[<img width="600" height="503" src="https://robertgomez.org/wp-content/uploads/2013/07/apple-iigs-disks.jpg" class="attachment-large size-large wp-post-image" alt="" style="display: block; margin: 0 0 14px 0;" decoding="async" loading="lazy" srcset="https://robertgomez.org/wp-content/uploads/2013/07/apple-iigs-disks.jpg 600w, https://robertgomez.org/wp-content/uploads/2013/07/apple-iigs-disks-300x252.jpg 300w" sizes="auto, (max-width: 600px) 100vw, 600px" />
<p>This evening I took the time to archive all my old Apple IIgs floppies. This is something I have been meaning to do since I got my <a href="https://robertgomez.org/blog/2012/11/07/cffa3000/" data-type="post" data-id="2593">CFFA3000</a> card. I have been pretty lucky in that, having been told since the early nineties that floppy discs will just disintegrate over time, all of my disks are in good shape and I have never had one fail on me. But I know it will eventually happen, and probably soon. Ripping floppies to disc images on the CFFA is a piece of cake. Each of these discs took about 3 minutes to pull down onto a thumb drive as a .PO disk image. The most difficult part of the process was scanning the actual disks into photoshop so that I could have a nice digital record of my horrible teenage handwriting (seen above). The best labels are the ones where I crossed out the name of some old pirated game and reused the disk for my files. You&#8217;d think there would be a nice application on the IIgs for printing disk labels?</p>



<p>For as much as I loved my old Apple IIgs (and the Apple ][+ before that), I didn&#8217;t really have that much personal data to save. I guess I wasn&#8217;t using the raw computing power of the Apple II for productivity and content creation and was more focused on gaming. What I do have is a bunch of college term papers and essays that are filled with the grammatical atrocities you&#8217;ve come to expect on this Web site. There is also a fair share of musical compositions that my brother and I churned out in Music Studio. Classics like &#8220;Robert is Coll&#8221; (sic) and &#8220;Ultra Coolness.&#8221; Yeah, I was really concerned about my cool factor in those days (but too lazy to fix my <em>coll</em> typo). Finally, there are a few discs of drawings and images that we created in Deluxepaint and PaintWorks Gold. I may post some of those in the near future. They are quite.. ahem&#8230; cool.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Haunted House Text Adventure</title>
		<link>https://robertgomez.org/blog/2012/11/08/haunted-house-text-adventure/</link>
					<comments>https://robertgomez.org/blog/2012/11/08/haunted-house-text-adventure/#comments</comments>
		
		<dc:creator><![CDATA[Robert Gomez]]></dc:creator>
		<pubDate>Thu, 08 Nov 2012 20:50:58 +0000</pubDate>
				<category><![CDATA[Robert's Blog]]></category>
		<category><![CDATA[adventure]]></category>
		<category><![CDATA[apple2]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[video games]]></category>
		<guid isPermaLink="false">https://robertgomez.org/?p=2600</guid>

					<description><![CDATA[Back in the late 80s, I learned much about computer programming from this book:&#160;Write Your Own Adventure Programs For Your Microcomputer. This is the same book that I used as a guide when creating&#160;Malfunction&#160;for my Apple IIgs back in 1988. The book takes you step-by-step through the process of creating a simple text adventure game [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Back in the late 80s, I learned much about computer programming from this book:&nbsp;<em><a href="http://amzn.com/0860207412">Write Your Own Adventure Programs For Your Microcomputer</a></em>. This is the same book that I used as a guide when creating&nbsp;<em><a href="https://robertgomez.org/blog/2009/07/14/my-apple-masterpiece-malfunction/" data-type="post" data-id="851">Malfunction</a></em>&nbsp;for my Apple IIgs back in 1988.</p>



<p>The book takes you step-by-step through the process of creating a simple text adventure game using Applesoft Basic. The final product is an adventure called &#8220;Haunted House.&#8221; It&#8217;s about as crude and bare bones as a work of interactive fiction can be, but it does what it needs to: there are objects, rooms and key puzzles.</p>



<figure class="wp-block-image size-large"><a class="no-popup" href="http://projects.robertgomez.org/haunted-house/v1.50/" target="_blank" rel="noopener noreferrer"><img loading="lazy" decoding="async" width="732" height="524" src="https://robertgomez.org/wp-content/uploads/2012/11/Haunted-House-Version-1.png" alt="" class="wp-image-2602" srcset="https://robertgomez.org/wp-content/uploads/2012/11/Haunted-House-Version-1.png 732w, https://robertgomez.org/wp-content/uploads/2012/11/Haunted-House-Version-1-300x215.png 300w" sizes="auto, (max-width: 732px) 100vw, 732px" /></a></figure>



<p>Well, in a recent flurry of Apple retro computing I got side tracked into porting this game into JavaScript. The result is <a href="http://projects.robertgomez.org/haunted-house/v1.50/" target="_blank" rel="noreferrer noopener">here</a>. Click the screenshot to launch the game in a new browser window (requires JavaScript, duh &#8211; View the actual page if you are viewing this in an RSS feed reader). It&#8217;s a fully working port of the original, with all its flaws and quirks. The only additions I made were to make the EXITS display more cleanly and added the verb &#8220;drop&#8221; to the vocabulary.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://robertgomez.org/blog/2012/11/08/haunted-house-text-adventure/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>CFFA3000</title>
		<link>https://robertgomez.org/blog/2012/11/07/cffa3000/</link>
		
		<dc:creator><![CDATA[Robert Gomez]]></dc:creator>
		<pubDate>Wed, 07 Nov 2012 20:36:34 +0000</pubDate>
				<category><![CDATA[Robert's Blog]]></category>
		<category><![CDATA[apple2]]></category>
		<category><![CDATA[retrocomputing]]></category>
		<guid isPermaLink="false">https://robertgomez.org/?p=2593</guid>

					<description><![CDATA[One of the more popular pages on this site is my guide to coverting Apple ][gs disk images into real, working ][gs floppies. In order to ease this process and bring some life back to my old computer, this year I splurged and bought a CFFA3000 for my birthday. CFFA3000 is an expansion card for the Apple 2 [&#8230;]]]></description>
										<content:encoded><![CDATA[<img width="600" height="275" src="https://robertgomez.org/wp-content/uploads/2012/11/cffa3000-med.jpg" class="attachment-large size-large wp-post-image" alt="CFFA3000" style="display: block; margin: 0 0 14px 0;" decoding="async" loading="lazy" srcset="https://robertgomez.org/wp-content/uploads/2012/11/cffa3000-med.jpg 600w, https://robertgomez.org/wp-content/uploads/2012/11/cffa3000-med-300x138.jpg 300w" sizes="auto, (max-width: 600px) 100vw, 600px" />
<p>One of the more popular pages on this site is my <a href="https://robertgomez.org/blog/2009/09/27/apple-ii-running-your-favorite-software-from-the-past/" data-type="post" data-id="945">guide to coverting Apple ][gs disk images into real, working ][gs floppies</a>. In order to ease this process and bring some life back to my old computer, this year I splurged and bought a <a href="http://dreher.net/?s=projects/CFforAppleII&amp;c=projects/CFforAppleII/main.php">CFFA3000</a> for my birthday.</p>



<p>CFFA3000 is an expansion card for the Apple 2 series of computers that allows you to use a standard USB flash stick or compact flash card as a storage media for all your Apple ][ disk images. Now you can take a standard Apple disk image, such as a .2MG, .DSK or .PO file, and save it to a USB stick. The USB stick can then be plugged into the CFFA3000, and, with a few settings tweaks, you can boot that disk image on your original Apple ][ hardware. Really cool!</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="600" height="450" src="https://robertgomez.org/wp-content/uploads/2012/11/cffa3000-installed.jpg" alt="CFFA3000 Installed" class="wp-image-2596" srcset="https://robertgomez.org/wp-content/uploads/2012/11/cffa3000-installed.jpg 600w, https://robertgomez.org/wp-content/uploads/2012/11/cffa3000-installed-300x225.jpg 300w" sizes="auto, (max-width: 600px) 100vw, 600px" /></figure>



<p>Installing the card is just a matter of opening the Apple ][, and inserting the card into an empty slot (I used slot 7). I hooked up a short USB extension cable to the card which allows me to swap out a USB stick without having to open up the computer case. The CFFA3000 even allows you to swap out the flash memory while the computer is up and running. I also have a compact flash card directly plugged in to the card. I have put a few essentials like system software and utilities on that card, but the set up program allows me to pull disk images from both the USB and compact flash at the same time.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="600" height="483" src="https://robertgomez.org/wp-content/uploads/2012/11/cffa3000-screen.jpg" alt="CFFA screen" class="wp-image-2597" srcset="https://robertgomez.org/wp-content/uploads/2012/11/cffa3000-screen.jpg 600w, https://robertgomez.org/wp-content/uploads/2012/11/cffa3000-screen-300x242.jpg 300w" sizes="auto, (max-width: 600px) 100vw, 600px" /></figure>



<p>Disk images are mounted from a simple and intuitive menu system that is access via the IIgs control panel access screen. For the first time ever I have been able to run System 6 without having constantly to swap disks (I never owned a hard drive for my IIgs) and it only takes seconds to boot up. Booting system software from a floppy literally used to take minutes for me. 32MB disk images are easily created and can be use to then store all my documents like this kick ass Paintworks drawing I did of Adam Ant:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="600" height="375" src="https://robertgomez.org/wp-content/uploads/2012/11/iigs-adam-ant.png" alt="Adam Ant - Prince Charming - Paintworks Gold" class="wp-image-2598" srcset="https://robertgomez.org/wp-content/uploads/2012/11/iigs-adam-ant.png 600w, https://robertgomez.org/wp-content/uploads/2012/11/iigs-adam-ant-300x188.png 300w" sizes="auto, (max-width: 600px) 100vw, 600px" /></figure>



<p>The CFFA3000 is not only about IIgs software. It can also can be used to mount and run disk images of 5.25&#8243; floppies. Now I can&nbsp;<em>Lode Runner</em>&nbsp;and&nbsp;<em>Alpha Plot</em>&nbsp;without worrying about the fragile disk media getting eaten alive by my ancient disk drives. This isn&#8217;t perfect. I have noticed that one of my favorite Apple games of all time,&nbsp;<em>Beyond Castle Wolfenstein</em>, does not work when running off of the card (same disk image runs fine from booted from a floppy in the real drive).</p>



<p>One additional benefit is that the CFFA3000 makes it dead simple to rip physical disks, 3.5&#8243; or 5.25&#8243;, into disk images for use on a PC emulator or the CFFA itself. I&#8217;m still getting the hang of that process. It won&#8217;t work for copy protected disks.</p>



<p>So far my only problem with it is that there is a limit to the amount of images you can pack on the flash media. This is somewhere around 250 disk images. But all-in-all, this is a great product and an essential add-on if you want to get serious about turning that old Apple ][ back on.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Apple II: Running Your Favorite Software from the Past</title>
		<link>https://robertgomez.org/blog/2009/09/27/apple-ii-running-your-favorite-software-from-the-past/</link>
		
		<dc:creator><![CDATA[Robert Gomez]]></dc:creator>
		<pubDate>Mon, 28 Sep 2009 01:25:28 +0000</pubDate>
				<category><![CDATA[Robert's Blog]]></category>
		<category><![CDATA[apple2]]></category>
		<category><![CDATA[IIgs]]></category>
		<category><![CDATA[retrocomputing]]></category>
		<category><![CDATA[tutorial]]></category>
		<guid isPermaLink="false">https://robertgomez.org/?p=945</guid>

					<description><![CDATA[I recently have been on a bit of an Apple II retro-computing kick. There was so much great software for the Apple 2 and I&#160;have many-a-fond memories of games like Karateka, Star Blazer and Ultima. In the early eighties my dad bought a Apple ][+ and this is where I&#160;learned the ins and outs of [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>I recently have been on a bit of an Apple II retro-computing kick. There was so much great software for the Apple 2 and I&nbsp;have many-a-fond memories of games like Karateka, Star Blazer and Ultima. In the early eighties my dad bought a Apple ][+ and this is where I&nbsp;learned the ins and outs of programming. In fact, I&nbsp;have posted a few of my better creations on this very web site (check out&nbsp;<a href="https://robertgomez.org/blog/2009/07/17/dippy-golf-another-apple-game-i-wrote-as-a-kid/" data-type="post" data-id="858">Dippy Golf</a>&nbsp;and&nbsp;<a href="https://robertgomez.org/blog/2009/07/14/my-apple-masterpiece-malfunction/" data-type="post" data-id="851">Malfunction</a>).</p>



<p>I still own an Apple IIgs—the last of the Apple 2 computers before Apple went all Macintoshy—and Apple&#8217;s direct competitor to the Commodore Amiga. It&#8217;s fun to fire it up every now and again and listen to those 5.25&#8243; drives grind away. What&#8217;s great about playing around with a twenty year old computer is that all that software that looked so cool, expensive and unattainable back in the day is now widely available for download on the Internet.</p>



<h2 class="wp-block-heading">Disk Images and Emulators</h2>



<p>The ultimate resource for all things Apple //e and earlier is&nbsp;<a href="http://mirrors.apple2.org.za/ftp.apple.asimov.net/">Asimov FTP Archive</a>. From here you can find just about every piece of software ever created for the Apple II in disk image format (usually a .DSK, .PO or .NIB file). Be warned, even though most of the companies that created this software are long gone, downloading old &#8220;Abandoned&#8221; software is still a legal gray area and there&#8217;s always a chance, albeit quite slim, that you may get in trouble for this.</p>



<p>On a PC you can get these disk images running quite easily in&nbsp;<a href="http://applewin.berlios.de/">AppleWin</a>&nbsp;by just dragging the .DSK file into the program window. AppleWin is an Apple II emulator, a program that mimics the hardware of another computer in software. There are several Apple emulators out there, but this one is the best.</p>



<p>There is also a great resource for IIgs called&nbsp;<a href="http://www.whatisthe2gs.apple2.org.za/">What Is the Apple IIgs?</a>&nbsp;In addition to being a pretty complete history of the system, they also host disk images and packaging for most of the software ever released for the IIgs. In this case the file format is the .2MG disk image format. AppleWin can&#8217;t emulate the IIgs so you will need to use another program.</p>



<p>Emulators for the IIgs are not nearly as good as AppleWin. There seem to be many choices if you are running OSX. However, if you are running Windows, you are a bit limited. The one that I&nbsp;have gotten familiar with is&nbsp;<del>Kegs32 (a Geocities link&#8230; you&#8217;ve been warned)</del>&nbsp;<a href="http://activegs.freetoolsassociation.com/">ActiveGS</a>. It is far from perfect and can&#8217;t run everything. The developers could learn a thing or two about usability from AppleWin. Flaws aside, once you get over the initial learning curve it can do a fairly good job with several IIgs programs, especially system software.</p>



<p>If all this downloading is a bit much for you, the easiest way to explore Apple II software is via a browser applet/plug-in/activex widget at&nbsp;<a href="http://www.virtualapple.org/">Virtual Apple ][</a>.</p>



<h2 class="wp-block-heading">Using Disk Images on an Actual Apple II</h2>



<p>Running old software in emulation can be good and bad. Most of the times emulation is much faster and convenient. In the case of AppleWin you can save the state of the machine. This means you can save your game even in a program that doesn&#8217;t natively support save games. Also, you can throttle the disk speed and machine speed to make productivity software run much better than it ever ran on the actual hardware. As good as the programs look on a modern LCD-type screen, they still look better on a nice tiny tube monitor. It gives the graphics a pleasant contrasty glow.</p>



<p>In the case of the IIgs, no one has quite nailed the emulation as accurate as they could. For this reason, you&#8217;ll be pleased to know that you can take those disk images you grabbed off of the Web and transfer them to actual floppy disks! I was really excited when I&nbsp;discovered this, but my hopes were squashed when I&nbsp;actually tried to get files from my PC&nbsp;to my IIgs. It took me a very long time combing through usenet and other on-line resources to figure out just how to do it with my set up. There are a few ways to accomplish this, but many of the methods involve things like null modems and SSH. A bit too nerdy even for me. On this page I will go through&nbsp;<em>my&nbsp;</em>process step-by-step to show you how it&#8217;s done.</p>



<h3 class="wp-block-heading">The Tools You&#8217;ll Need</h3>



<p>Hardware requirements are one of the biggest hurdles in this process. Here is the list of things you will need to get disk images off your PC and on to your Apple 2:</p>



<ol class="wp-block-list">
<li><strong>An Apple IIgs with 3.5&#8243; and 5.25&#8243; floppy drives.</strong><br>If you don&#8217;t have a IIgs, I can&#8217;t help you. All of the software I use is IIgs specific, so if you only have your //e you&#8217;ll have to look elsewhere for help</li>



<li><strong>A PC with 3.5&#8243; floppy drive.</strong><br>Seems simple enough, except that they don&#8217;t build 3.5&#8243; drives into PC these days. I bought a Sony USB floppy drive from NewEgg.com for around $20 and it does the job very well.</li>



<li><strong>A Macintosh computer running System 9 or earlier.</strong><br>This is the biggie. Not many people have old Macs just lying around. Fortunately, I inherited one from my office, but you may have to troll eBay or Freecycle to find one. OS X will not cut it. System 7,8,9 supported the ProDos disk format, which is the Apple II format, and I don&#8217;t think OS X supports this (besides, most OS X Macs don&#8217;t have floppy drives either)</li>



<li><strong>Lots of Blank 3.5&#8243; or 5.25&#8243; disks!</strong><br>These are getting quite hard to find nowadays, but there are still sources out on the net if you search. I have tons of 3.5&#8243; floppies from a 32 disk backup installation of Windows 95 that I never needed to use.</li>
</ol>



<h3 class="wp-block-heading">Step 1: Getting Files Off Your PC</h3>



<figure class="wp-block-image alignright size-large"><img loading="lazy" decoding="async" width="300" height="477" src="https://robertgomez.org/wp-content/uploads/2009/09/ciderpress.png" alt="Ciderpress" class="wp-image-947" title="" srcset="https://robertgomez.org/wp-content/uploads/2009/09/ciderpress.png 300w, https://robertgomez.org/wp-content/uploads/2009/09/ciderpress-189x300.png 189w" sizes="auto, (max-width: 300px) 100vw, 300px" /></figure>



<p>So you found a .2MG file that you want to get on your IIgs. The problem with .2mg files is that the IIgs doesn&#8217;t know what to do with them, and, in most cases, a .2MG file is larger than the 800K that can fit on a ProDos floppy. You will need to compress the .2MG file into a ShrinkIt file. ShrinkIt is the .ZIP file equivalent for the IIgs. In addition to being able to archive a group of files you can also use it to create a compressed disk image.</p>



<p><em>(What Is the Apple IIgs?</em>&nbsp;used to allow you to download files in .SHK ShrinkIt format. Due to bandwidth issues, they now only offer the .2MG files. Oh well)</p>



<p>Never fear. There is an open-source Windows software out there than can decipher and convert all sorts of Apple ][ files and disk images:&nbsp;<a href="http://ciderpress.sourceforge.net/">CiderPress</a>. After installing CiderPress, run it and choose the&nbsp;<strong>Disk Image Converter</strong>&nbsp;function from the&nbsp;<strong>Tools</strong>&nbsp;menu. Simply select your .2MG file then choose&nbsp;<strong>ShrinkIt Disk Archive (.SDK)</strong>&nbsp;from the options and save your converted file.&nbsp;This .SDK file can now be saved to a PC formatted floppy. You will notice that this file is actually compressed and smaller in file size than the original.</p>



<h3 class="wp-block-heading">Step 2: Transferring the Image to a ProDos Disk.</h3>



<p>This next step is simple, but is dependent on you having access to an older Macintosh computer running System 7, 8 or 9. If you are lucky enough to have one of these machines, you can simply insert your PC formatted floppy in the drive and drag the .SDK file on to your desktop. Then format a ProDos floppy (either on the Mac or your IIgs) and insert it into your Mac&#8217;s floppy drive. Next, drag the .SDK file from your Mac desktop on to this ProDos floppy. Now your disk image is ready to make its way to your IIgs via good old fashioned sneaker net.</p>



<h3 class="wp-block-heading">Step 3: Creating and Actual Disk from the Disk Image</h3>



<figure class="wp-block-image alignright size-large"><img loading="lazy" decoding="async" width="274" height="156" src="https://robertgomez.org/wp-content/uploads/2009/09/GsShrinkIt.png" alt="GS ShrinkIt" class="wp-image-948" title=""/></figure>



<p>Now, the rest of the action will take place on your Apple IIgs. Boot up your IIgs System disk. The essential piece of software that you will need is GS ShrinkIt. ShrinkIt is a common compression format on the Apple 2. If you don&#8217;t already have GS ShrinkIt for your ][gs, getting it up and running can be a bit of a challenge. I was lucky to have it already from back in the day, but if you need it, I&#8217;d suggest reading&nbsp;<a href="http://stason.org/TULARC/pc/apple2/faq/10-003-How-do-I-get-ShrinkIt-or-GS-ShrinkIt-going-on-my-Appl.html">this page from the Apple II Csa2 FAQ</a>.</p>



<p>Run GS ShrinkIt and select&nbsp;<strong>OPEN ARCHIVE&nbsp;</strong>from the&nbsp;<strong>FILE&nbsp;</strong>menu. Now insert your disk with the .SDK file on it and open the file. You may need to check the &#8220;Show All Files&#8221; radio button in order to find the file. If all went well, you should be able to open the file and see the contents of the compressed .SDK file.</p>



<figure class="wp-block-image alignright size-large"><img loading="lazy" decoding="async" width="300" height="190" src="https://robertgomez.org/wp-content/uploads/2009/09/GsShrinkIt-OpenSDK.png" alt="GS ShrinkIt" class="wp-image-949" title=""/></figure>



<p>Have a blank 3.5&#8243; floppy ready and click the&nbsp;<strong>Extract&nbsp;</strong>button. Insert your floppy and follow the prompts to select the drive in which your blank disk resides. You will then have to wait while the computer grinds away and copies your disk image to the floppy. If all goes well you should now have a working copy of the software which you downloaded off the Internet. Have fun!</p>



<p>UPDATE: I no longer need to follow this method. To find out why, read my post about the&nbsp;<a href="https://robertgomez.org/content/cffa3000">CFFA 3000</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
