<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
 	<channel>
		<title>the blog | 65816 dot com</title>
		<link>http://65816.com/</link>
		<description></description>
		<language>en</language>
		<lastBuildDate>Tue, 10 Mar 2009 22:39:10 -0400</lastBuildDate>
		<docs>http://blogs.law.harvard.edu/tech/rss</docs>
		<generator>Sandvox Pro 1.5.4</generator>
		<item>
			<title>Some Toys I Got</title>
			<link>http://65816.com/some_toys_i_got.html</link>
			<description>
&lt;div&gt;&lt;p&gt;I had fun playing with the Amiga 500, eventually got it up to 4MB of RAM, 750MB of hard disk, upgraded the Kickstart ROMs to 3.1, and put a ton of WHDLoad games on the hard drive by way of RS232 and ZModem (I kid you not). Eventually I got kind of stuck with its slow speed, lack of affordable upgrade path, and worst of all, no ethernet to speak of (yes I'm aware of the rare sidecars or the possibility of adding a Zorro card, good luck with that).&lt;/p&gt;
&lt;p&gt;So it's in a closet now. In its place is a brand spankin new Escom Amiga 1200. I got a PCMCIA ethernet card, a 40GB (!) internal 2.5&amp;quot; HDD, 8MB of clockport RAM from Germany, and a brand new Indivision AGA internal scan doubler from their most recent run. The Amiga and Apple IIGS now each get their own displays thus:&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://65816.com/_Media/vintages1.jpg&quot; alt=&quot;vintages1&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;Hey, what's that thing sitting on top of the Apple IIGS? The postman also brought me an AE Audio Animator for the Apple IIGS. I always liked the stupid mixer box, but I haven't tried the MIDI yet. In that shot, the Amiga is running Lion King AGA. Let's have a shot of System 6.0.1 and AmigaOS 3.9 side by side:&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://65816.com/_Media/vintages2.jpg&quot; alt=&quot;vintages2&quot; /&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;You can barely see it, but there it is, in 640x480 mode, with colorful icons and the enormous red mouse pointer. I should add that with the Indivision AGA, the Amiga 1200 can push 1024x768. Unfortunately the un-upgraded 14MHz 020 is rather pokey and it runs you out of graphics RAM. Someday I'll spring for what ebay.de (the Amiga supermarket!) calls a &amp;quot;turbokarte&amp;quot;, but for now I'm satisfied with the Amiga collection.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;Lately I'm getting back to my IIGS video game development (what can I say, goodness takes time), using the IIGS partitions off the CF card, dumped into KEGS-OSX. I'd really like to release something, but I want it to be good. Someday.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;-Chris&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Tue, 10 Mar 2009 22:26:54 -0400</pubDate>
			<guid>http://65816.com/some_toys_i_got.html</guid>
		</item>
		<item>
			<title>What Is The IIGS Disk Images</title>
			<link>http://65816.com/what_is_the_iigs_disk_image.html</link>
			<description>
&lt;div&gt;&lt;p&gt;&lt;a href=&quot;http://www.whatisthe2gs.apple2.org.za/&quot;&gt;The What Is The Apple IIGS&lt;/a&gt; people have come through again.&lt;/p&gt;
&lt;p&gt;They appear to have recently gotten onto a CompactFlash kick, by way of the CFFA card. And they've published 10 .hdv hard drive partitions on &lt;a href=&quot;http://www.whatisthe2gs.apple2.org.za/cffa-card-review/&quot;&gt;this page&lt;/a&gt;. I've been installing a game or two at a time onto my (Microdrive Turbo) CF card as time permits, but they were way ahead of me. Someone out there actually made sense of all the HD installers and patches.&lt;/p&gt;
&lt;p&gt;After playing with the .hdv images in KEGS-OSX and seeing that they were in fact awesome, I ran to Walgreens and paid way too much for a new 256M CF card. Here's the procedure I followed, using a Mac with USB CF reader (which came up as /dev/disk1):&lt;/p&gt;
&lt;p&gt;1. Insert old (256M, 8-partition) IIGS CF card, and&lt;/p&gt;
&lt;p&gt;dd if=/dev/disk1 of=cfimage bs=512 count=256&lt;/p&gt;
&lt;p&gt;This gave me a backup image of my original CF card. The first 256 blocks hold the Microdrive configuration and the partition map, and I need to carry that information over to the new card.&lt;/p&gt;
&lt;p&gt;2. Insert new IIGS CF card, and use Disk Utility to re-partition it as 1 partition of 'free space', to keep it from automounting, which kept me from being able to use /dev/disk1. Then,&lt;/p&gt;
&lt;p&gt;dd if=cfimage of=/dev/disk1 bs=512&lt;/p&gt;
&lt;p&gt;3. Select .hdv partitions to use and install them:&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;cat WhatIs/System\ 6\ +\ Free\ Games.hdv  WhatIs/Action\ Games.hdv  WhatIs/Adventure\ and\ Sim\ Games.hdv  WhatIs/Sports\ and\ Unreleased\ Games.hdv WhatIs/Social\ History\ and\ Computers.hdv  WhatIs/Reading\ Writing\ and\ Maths.hdv WhatIs/Board\ Games\ and\ RPGs.hdv WhatIs/Productivity\ and\ Graphics.hdv &amp;gt; cfimage&lt;/p&gt;
&lt;div&gt;&lt;div&gt;dd if=cfimage of=/dev/disk1 bs=512 seek=256&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;Bingo, just like that, it worked. But understand that because of that 256-block header, the last partition is going to be 128Kbytes short, so some files or directories might not exactly work properly (I think just Emerald Visions 2 in this case).&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://65816.com/_Media/dscn3360.jpg&quot; alt=&quot;DSCN3360&quot; /&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://65816.com/_Media/shot.jpg&quot; alt=&quot;shot&quot; /&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;Between this, and a Golden Orchard CDROM in the AppleCD drive, a stunning percentage of All Things IIGS is available for the clicking. Forgive me as I waste another beautiful Key West Sunday playing games on the Apple IIGS.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;-Chris&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Sun, 21 Dec 2008 15:35:54 -0500</pubDate>
			<guid>http://65816.com/what_is_the_iigs_disk_image.html</guid>
		</item>
		<item>
			<title>Adventures Continue</title>
			<link>http://65816.com/adventures_continue.html</link>
			<description>
&lt;div&gt;&lt;p&gt;You know how these things go. Work happens. Life happens. Actually, first work got out of hand, then I may have overreacted by moving to the Florida Keys to enjoy a more laid-back atmosphere as it were. But I assure you I'm no stranger to retrogaming despite the recent transplantation of my entire life.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://65816.com/_Media/dscn3356.jpg&quot; alt=&quot;DSCN3356&quot; /&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;Who's that next to the IIGS? Yes, its old nemesis the Amiga 500. They say they've gotten over that stupid misunderstanding from their BBS years and are the best of friends now. Which is nice because they share a scan doubler (I hesitate to lay out the cash for another one of those).&lt;/p&gt;
&lt;p&gt;I've become a Master Detective on &lt;span&gt;&lt;i&gt;Where In The USA Is Carmen San Diego?&lt;/i&gt;&lt;/span&gt;, having solved some 37 cases. I've also played a ton of &lt;span&gt;&lt;i&gt;Gateway To Apshai&lt;/i&gt;&lt;/span&gt; on the Atari 130XE and Commodore 64 (DTV Joystick actually) and pondered the ease of porting it to the IIGS, particularly in light of rather &lt;a href=&quot;http://bringerp.free.fr/RE/Gta/news.php5&quot;&gt;complete documentation of how the entire game works&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Thank you to the gentleman who emailed me a couple weeks ago. The dream is alive, and I'll keep these pages up to date.
&lt;/p&gt;
&lt;p&gt;-Chris&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Sat, 20 Dec 2008 20:23:10 -0500</pubDate>
			<guid>http://65816.com/adventures_continue.html</guid>
		</item>
		<item>
			<title>Downgrade</title>
			<link>http://65816.com/downgrade.html</link>
			<description>
&lt;div&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://65816.com/_Media/rom01.gif&quot; alt=&quot;rom01&quot; /&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;So I finally decided that since I had both motherboards laying around, perhaps it was time to revert to ROM 01, and at least evaluate its merits. I think I'm going to stick with it. I'm not sure that the performance difference from running tools out of ROM, or not loading them from mass storage, is subjectively all that great, and yeah I really did miss the Sales Demo, Shufflepuck Cafe, and Alien Mind. Yes, sound artifacts seem to be increased somewhat, the old familiar cadence of ROM 01 at idle in Finder was frighteningly recognizable from childhood, versus the quieter ROM 03. But that's the biggest difference. Nothing broke. And on a platform where nostalgia clearly matters, I felt it was prudent to aim for maximum compatibility.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;To be honest, I tried it the other way, at first. I began stepping through the IIGS Sales Demo and finding out exactly what was breaking on ROM 03. The first hitch was easy enough to see: A BRK crash into E1/00A8, the inline-based GS/OS or ProDOS 16 dispatch vector. But the Sales Demo was written for ProDOS 8. The explanation is that in ROM 03, one of the tool startup calls (I didn't look far enough to see which, I hope it wasn't _QDStartUp) actually makes a GS/OS (or ProDOS 16) stack-based call, thus dispatched via E1/00B0, to open FastFont. E1/00B0 is set up at cold boot, to jump to a ROM-based subroutine that pulls the parameters off of the stack, and allocates new space on the stack to store a dynamically-generated subroutine to make a class-0 (inline) translation of the same OS call (presumably for greater compatibility), and dispatch that via E1/00A8.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Without commenting too deeply on the merits of that decision, I have to say that must have been a tough call for the firmware engineers to make, coupling the ROM tools that closely with the operating system. In the past, I've seen tool calls made from ProDOS 8 very often, and this appears to break them.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;But it's an easy fix, right? Change E1/00A8 to something like 5C 00 00 30 6B, to JML to 30/0000, and at 30/0000, add something like:&lt;/p&gt;
&lt;p&gt;  PLA&lt;/p&gt;
&lt;p&gt;  CLC&lt;/p&gt;
&lt;p&gt;  ADC #0006&lt;/p&gt;
&lt;p&gt;  PHA&lt;/p&gt;
&lt;p&gt;  SEC&lt;/p&gt;
&lt;p&gt;  LDA #0046&lt;/p&gt;
&lt;p&gt;  RTL&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Pull the return address off the stack, increment it so the RTL will return to the address after the inline parameters, set carry to indicate error, and set A to $0046 (File Not Found). Fixes everything, right?&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Nope. Things do get a few seconds farther, but it only leads up to another crash. But after pondering the number of patches I'd end up doing to make everything run, as well as the nature of ROM changes such as this, I decided to give downgrading a shot.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Oh, and the silly stuff I wrote back in high school that uses $C4xx on the mouse instead of _ReadMouse, magically works again. Ha.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;-Chris&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Tue, 08 Apr 2008 20:36:00 -0400</pubDate>
			<guid>http://65816.com/downgrade.html</guid>
		</item>
		<item>
			<title>February Update</title>
			<link>http://65816.com/february_update.html</link>
			<description>
&lt;div&gt;&lt;p&gt;Hello!&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;Lately I've gone through another one of my phases where the IIGS gets a lot of attention. I started by checking out the new &lt;a href=&quot;http://www.cirruscomms.com.au/~mike_stephens/apple2/Pascal_Programming/DoraColour/DoraColour.html&quot;&gt;Dora the Explorer Coloring application&lt;/a&gt; for the IIGS, and then I was simply blown away by all the goodies on the new &lt;a href=&quot;http://www.brutal-deluxe.fr/&quot;&gt;Brutal Deluxe website&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;After that, I checked out the new &lt;a href=&quot;http://www.reactivemicro.com/&quot;&gt;Reactive Micro&lt;/a&gt; site, and got myself a LittlePower adapter and one of the recommended external ATX PSU's. The externalization of the power supply is always a good thing. I also threw a fan inside the IIGS, thanks to &lt;a href=&quot;http://www.mcpb.com/&quot;&gt;MC Price Breakers&lt;/a&gt;. The resulting airflow (and lack of hot noisy internal brick) was enough to make the GS more stable at 12MHz, although 16 is still too hot. Oh well, all TWGS'es (and GS logic boards) are not created equal.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;I'm migrating away from using USB/PS2 devices for keyboard and mouse, in favor of an authentic IIGS keyboard and a (super cheap on eBay) ADB Alps Glidepoint. Also picked up a Sirius RAM card, although it has a couple hiccups and will need a bit more TLC before I can make oh-so-important leap from 5MB to 8MB of RAM.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;When I'm not playing old Apple II games from &lt;a href=&quot;http://www.apple2.org.za/gswv/a2zine/Sel/The202collection.html#000&quot;&gt;The 202 Collection&lt;/a&gt;, or coaxing nice IIGS games into installing onto CompactFlash, I'm even working on my game, which is very close to finally hitting Milestone 1, which is to say that I've got a tiled world scrolling while fully digitized music plays through my Oversampler ripoff sound engine. If I ever ship my game, or even show it off at KansasFest, I promise we'll both be surprised.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;Anyhow, I just wanted to drop a line and say that work has been hell, but I've still found time to use and enhance my favorite computer of all time, and that we're a lot closer to the day I'll pull back the cover and show you the secret game I've been working on. Till then, what's most important to both you and I, is that this 22 year old computer continues to surprise us.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;I've also been collecting a ton of software in anticipation of collecting our old arch-rivals the Commodore 128 and Amiga 1200. These machines have a lot in common with our IIGS, except of course the IIGS's crippling graphics IO bottleneck (and its comparably gorgeous desktop environment).&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;-Chris&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Sat, 23 Feb 2008 20:38:48 -0500</pubDate>
			<guid>http://65816.com/february_update.html</guid>
		</item>
		<item>
			<title>Eureka</title>
			<link>http://65816.com/eureka.html</link>
			<description>
&lt;div&gt;&lt;p&gt;I've received all the development tools I needed, plus a copy of the incomparable Spectrum. Recently, I also yanked the Video Overlay and Superdrive cards out of the IIGS on the suspicion that the machine would behave itself better without them. I wasn't wrong. This probably has nothing to do with those cards themselves, but rather the amount of amperage being pulled through the traces of the board and subsequently converted to heat. Interestingly, without those two cards, I have zero stability problems now, which, when combined with the new software (and all the games I've painstakingly and individually tricked into running from the CF card) makes the IIGS a much more appealing computer to use regularly.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;So did I get anywhere with the new stuff? Yes.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;For the first time ever, I've seen the tiled world of the game I've been working on, scrolling on a IIGS screen in both axes. I'll be working all weekend to combine this with my sound driver into a fun little demo to show off. We're cookin with gas now. I just can't wait to show you what I've been working on all this time.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;-Chris&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Thu, 13 Dec 2007 20:14:27 -0500</pubDate>
			<guid>http://65816.com/eureka.html</guid>
		</item>
		<item>
			<title>Winter Update</title>
			<link>http://65816.com/winter_update.html</link>
			<description>
&lt;div&gt;&lt;p&gt;&lt;img src=&quot;http://65816.com/_Media/hardball.jpeg&quot; alt=&quot;hardball&quot; /&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;Hardball! (Screen grab not mine)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;The IIGS Project did sit idle for a few weeks, no doubt about that, but primarily because I've worked so much. Tonight I got the inspiration to tear the IIGS open and remove a couple cards (VOC and Superdrive), which ironed out a few problems I was having. Now that everything except the ROM 03 incompatible stuff is running, and I'm not having any heat issues, the IIGS is looking welcoming again.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;What about your game, Chris?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;Yes, that. Well, I'm still waiting on the delivery of some development tools I ordered back in July, honest injun, and I believe they'll be here soon finally. But it isn't all because of that. There's also plenty of work for me to do without that stuff, and it's still getting done. Sorry! Did I mention I hold two full-time jobs? How did you think I managed to afford that eBay IIGS shopping spree?&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;What I did tonight, was spend a few early morning hours playing all the fun IIGS games and rediscovering, for the umpteenth time this year, the joy of computing. And nothing's going to be me back in the thick of things faster than that, I promise you.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;-Chris&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Sat, 01 Dec 2007 04:34:42 -0500</pubDate>
			<guid>http://65816.com/winter_update.html</guid>
		</item>
		<item>
			<title>Atari 130XE</title>
			<link>http://65816.com/atari_130xe.html</link>
			<description>
&lt;div&gt;&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://65816.com/_Media/atari_800.jpeg&quot; alt=&quot;atari_800&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;i&gt;(Atari 800, my first computer)&lt;/i&gt;&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://65816.com/_Media/xe130.jpeg&quot; alt=&quot;xe130&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;i&gt;(My stylin' 130XE)&lt;/i&gt;&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;I know I have this general rule against collecting even more old computers, but I feel sort of an obligation to make sure I have operational Atari 8-bit hardware. An Atari 800 was my first computer, and in December of 1981 (I would have been 4 and a half, roughly), I began programming it in BASIC. It got an almost-daily workout by me until it was replaced in approximately October 1986, by the Apple IIGS (yeah I know that's an early date to have an Apple IIGS at retail, but it was a dealer demo, a ROM 00 without a Woz signature. But let's leave Apples alone for just one blog entry here).&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;So in 2003, I'd added an XE Game System to my collection, choosing it for its detachable keyboard. A little while ago, I went to boot it up, and found that its ROM was bad. Now, I'm fully aware that I could fix this problem with the soldering iron I love so much, and a $12 order from Best Electronics, and I probably will someday, but at this point I'd also had enough of the XEGS' enormous footprint for the device + keyboard. I decided to get a 130XE as my new &quot;main&quot; Atari8, because it has that amazing 128K of RAM and FREDDIE memory management chip, and because I think many enthusiasts had also chosen it as the modern jumping-off point. A few clicks on eBay, and a week of waiting, and I had a 130XE in mint condition (the cellophane hasn't even been pulled off label) in its retail box.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;I already had an RS232-SIO cable that I had used on the XEGS, but the SIO host back then was a Windows machine running APE, and this time it would have to be the Intel Mac Mini running SIO2OSX. So I also had to order the specific USB-RS232 cable they recommend, because (and I know this from experience attempting to write SIO hosts on the Mac before) the hardware-handshake lines, which are pretty important on SIO, are unreliable on nearly all USB-RS232 cables.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;Anyway, after all that, my Atari stuff is working again and I'm pretty happy about that. I have grander plans for it, like installing the 30-in-1 OS ROM switcher, and experimenting with MyIDE and flash carts. But for now, I'm just happy to blast away on some of the first videogames I enjoyed.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;When I'm not working on the IIGS game project, of course.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;-Chris&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Thu, 06 Sep 2007 17:03:17 -0400</pubDate>
			<guid>http://65816.com/atari_130xe.html</guid>
		</item>
		<item>
			<title>Making Moves</title>
			<link>http://65816.com/making_moves.html</link>
			<description>
&lt;div&gt;&lt;p&gt;Hello, I haven't forgotten about this project in the least. Since last update, I've...&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;- Sold the RAMFast-D and PC Transporter back to the community via eBay because they weren't going to get used&lt;/p&gt;
&lt;p&gt;- Replaced S5,D1 with a 1.4M Superdrive, which makes absolutely no difference&lt;/p&gt;
&lt;p&gt;- Passed on several opportunities to replace the TWGS with a Zip GSX, because it would make absolutely no practical difference, other than the much smaller current draw, which isn't enough to convince me yet. The mess stays relatively cool and my power bill isn't outrageous.&lt;/p&gt;
&lt;p&gt;- Replaced the RAMFast-D with an Apple High Speed SCSI card, with which I am much more pleased.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;And perhaps more importantly, I've...&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;- Gotten ORCA/C set up and started to adjust to programming the IIGS in a higher-level language (I think I said I was going to do this back in the beginning, it just took me awhile)&lt;/p&gt;
&lt;p&gt;- Set up a Generic Tile Engine development environment&lt;/p&gt;
&lt;p&gt;- Poured a few more hours of work into making tile maps&lt;/p&gt;
&lt;p&gt;- Made image dumps of the CompactFlash partitions and begun more rapid development in emulators (freeing up the actual IIGS for more important stuff like Task Force)&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;... Also considering putting this old Quantum Fireball to good use by building an experimental GNO HFS development system on it.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;Frankly, this part of the project is where it gets boring to you, because I don't have a lot to say until a demo is released, which will be as soon as possible, as long as the 60+ hour work week cooperates. But progress is happening quickly, so who knows...&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;-Chris&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Wed, 22 Aug 2007 19:55:10 -0400</pubDate>
			<guid>http://65816.com/making_moves.html</guid>
		</item>
		<item>
			<title>SuperGS Complete</title>
			<link>http://65816.com/supergs_complete.html</link>
			<description>
&lt;div&gt;&lt;p&gt;... Or at least mostly so. Whatever modifications I make from here on out, will probably be relatively minor. It took roughly 4 months to acquire and build.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://65816.com/_Media/finished.jpeg&quot; alt=&quot;finished&quot; style=&quot;outline:none;&quot; /&gt;&lt;/div&gt;
&lt;p /&gt;
&lt;p&gt;The final allocation of slots:&lt;/p&gt;
&lt;p&gt;1. Apple Rev-C SCSI (maybe HS SCSI someday, didn't like RAMFast)&lt;/p&gt;
&lt;p&gt;2. Uthernet&lt;/p&gt;
&lt;p&gt;3. TransWarp GS / 32K Cache / new GALS / 12MHz&lt;/p&gt;
&lt;p&gt;4. MDIDeas Supersonic&lt;/p&gt;
&lt;p&gt;5. Apple 3.5&quot; Disk Controller (&quot;Superdrive Card&quot;)&lt;/p&gt;
&lt;p&gt;6. Apple Video Overlay Card&lt;/p&gt;
&lt;p&gt;7. //SHH Systeme Microdrive Turbo, 256M CF card&lt;/p&gt;
&lt;p&gt;Memory: Harris Labs GS Sauce, 4MB&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;The motherboard is still ROM 03 with the prototype ROMs that contain a QuickDraw II bug that is unlikely to bother me. The CDROM drive is an AppleCD 300e, now containing the Golden Orchard CDROM, which is a seemingly-infinite collection of applications, games, information, and even .MODs.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;There may be some more minor changes (replace 800K disks with Superdrives, swap some cards around for better circulation, etc), but for the most part, this is it. And I got Toolbox Reference 3 and GS/OS Reference in the mail, so I've got to do some more reading and step into the world of resources. I suspect my game could benefit greatly from a good knowledge of resources. I'm sure I'll dive into it and post something here about the results. Till then.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;-Chris&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Sat, 04 Aug 2007 10:12:21 -0400</pubDate>
			<guid>http://65816.com/supergs_complete.html</guid>
		</item>
		<item>
			<title>Updates</title>
			<link>http://65816.com/updates.html</link>
			<description>
&lt;div&gt;&lt;p&gt;Sorry, no new code, but as always, some work on the IIGS and NeXT hardware.&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://65816.com/_Media/moregs.jpeg&quot; alt=&quot;moregs&quot; /&gt;&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;The IIGS got a System Saver and a brand new CH Mach III. That's a RAMFast-D with 1MB cache sitting next to the monitor too. The more I mess with it, the less SCSI seems worth the hassle on the IIGS, with the Microdrive Turbo CF setup in place. But I'm not done playing with it yet. Also the System Saver IIGS allows the machine to be stable with the case on at 12MHz, so I think the whole setup looks a bit nicer. Oh and yeah, I might have some Superdrive hardware on the way after all. I've no idea why. But then why do I do any of this...&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://65816.com/_Media/nextscreen.jpeg&quot; alt=&quot;nextscreen&quot; /&gt;&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;That's a screen shot from the nearly-revived NeXT Turbo Dimension cube. The monitor's really LCD, the fisheye effect is from the Nikon lens. I'm almost done installing and patching OpenStep 4.2 onto a 4GB 50-pin IBM disk I found today, and then I have to tidy up the setup a bit more, and it'll be done. I'm not sure how often it will be running, but I'm glad it will be able to do something again. These two machines are my only &quot;vintage&quot; computers and they should at least be operational if they're going to be worth more than scrap metal.
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://65816.com/_Media/fullnext1.jpeg&quot; alt=&quot;fullnext1&quot; /&gt;&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;Here it is, booted up and awaiting the login...
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://65816.com/_Media/fullnext2.jpeg&quot; alt=&quot;fullnext2&quot; /&gt;&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;And here we are all nice and logged in...
&lt;/p&gt;
&lt;p /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://65816.com/_Media/next3.jpeg&quot; alt=&quot;next3&quot; /&gt;&lt;/div&gt;
&lt;p /&gt;
&lt;p&gt;And another shot of the Workspace Manager.
&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;I can't imagine there are very many Cubes like this one in operation today. This one has 128M of system RAM and 128M of Dimension RAM (only 64 of which it will actually use), the v74 ROM upgrade, and a Turbo CPU. I have the 90-pound Hitachi CRT that sold with it but I refuse to trot it out and thereby admit that I own a CRT. I also have an ADB soundbox, but never got into NeXT ADB peripherals. This computer was built by me in 1999 from parts dating back to 1991 or so, and for some time in 2000 actually served as a work desktop. Glad to see it alive again.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;-Chris&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Thu, 02 Aug 2007 01:03:47 -0400</pubDate>
			<guid>http://65816.com/updates.html</guid>
		</item>
		<item>
			<title>Libsound Beta</title>
			<link>http://65816.com/libsound_beta/</link>
			<description>
&lt;div&gt;&lt;p&gt;Wow wow wow. This is the sound driver I always wanted to write as a kid, but somehow I just couldn't hack it. Today, after a conversation with Lucas, I sat down and wrote it in a roughly 10-hour stretch. I just couldn't believe it, when everything started passing testing.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New Stuff!&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;This is the same library as before, it will play an infinitely long sound with its Oversampler-ripoff engine. But now it manages and plays one-shot sounds for you, with the following new and exciting C calls:&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;int loadOneSound( char *path );&lt;/p&gt;
&lt;p&gt;Whereas *path is a GS/OS path and not really a c-string again. The int returned, is a libsound Sound ID number that you will use to refer to the sample later in soundPlayShort(). Libsound takes care of allocating RAM for the sample with the Memory Manager handle you gave it during soundInit(), and of course it uses GS/OS to load the sample into that allocated memory.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;int soundPlayShort( int soundid, int rate );&lt;/p&gt;
&lt;p&gt;soundid is the Sound ID number that loadOneSound() gave you earlier, rate is the Ensoniq DOC playback rate, (32 * sample rate in hz) / 1645. You do not have to worry about DOC RAM position or generator number. Libsound manages a pool of 8 generators and 32K of DOC RAM for you. When asked to play a sound, an unused generator is found, and DOC RAM is allocated with a granularity of $100 (one page). When the sample finishes playing, you don't have to do anything -- the sound MIRQ handler will automatically deallocate the generator and the pages of DOC RAM for you. Hell yes.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Limitations&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;There are some completely arbitrary limits. They are:&lt;/p&gt;
&lt;p&gt;- Only 32 one-shot sounds may be managed. This isn't a design limitation, it is completely arbitrary and can be bumped up (to 64?) if need be.&lt;/p&gt;
&lt;p&gt;- Only 8 sound generators are used to play one-shot sounds. This really shouldn't be a problem, as games generally do not play 8 one-shot sounds at a time. But it also is not a design limitation and could easily come up to 16 or more.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Changes&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;I don't do any error handling anymore. If I get a carry bit set on return from GSOS or the Toolbox, I do my very best to return to you immediately with the error number still in A, and the carry bit set. If a GSOS error occurs during long-sound playback, the file is closed and the DOC voices are halted. I promise I don't dump you to the rolling-apple anymore.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;Also, the soundPlayStart function has added more parameters. The prototype is now thus:&lt;/p&gt;
&lt;p&gt;int soundPlayStart( char *path, int rate, int oversample, int echodelay );&lt;/p&gt;
&lt;p&gt;Whereas oversample = 0 is what you may call 'normal' operation,&lt;/p&gt;
&lt;p&gt;oversample = 1 is &quot;2X oversampling&quot;, where the sound data is double through interpolation (every other byte is an average of the two around it). In this case, double 'rate' as well.&lt;/p&gt;
&lt;p&gt;oversample = 2 is &quot;4X oversampling&quot;, which quadruples the size of the sound data, so you should quadruple the playback rate as well.&lt;/p&gt;
&lt;p&gt;Oversampling can sometimes add perceived fidelity to the song being played, but you're more likely to just ignore it.&lt;/p&gt;
&lt;p&gt;'echodelay' is the delay (in VBL intervals of 1/60th of a sec) between starting playback on L and R channels, to create a faux stereo effect.&lt;/p&gt;
&lt;p&gt;These two effects were present in the Oversampler program when I reverse-engineered it and when I refactored it, so I'm putting them in your hands too.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Future Directions&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;soundPlayShort() will probably get more parameters in the next revision, to allow playback to occur on L, R, or both channels, per sound. There may also be a volume parameter to allow samples to play more softly or loudly.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;b&gt;In Other News&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;A RAMFast-D and AppleCD 300e are arriving within the next few days (where do I get all these toys!), and I'll be running some tests on the AppleCD 300e with both RAMFast and Apple non-highspeed SCSI cards, to see how well a SCSI CDROM works with the Oversampler engine. If it works well even without a fancy RAMFast, I'm more likely to consider mastering my finished product as an HFS CDROM, as well as .hdv image and/or CF card images.
&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;Click the title for the download link.&lt;/p&gt;
&lt;p&gt;-Chris&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Sat, 21 Jul 2007 22:12:43 -0400</pubDate>
			<guid>http://65816.com/libsound_beta/</guid>
		</item>
		<item>
			<title>The Switch</title>
			<link>http://65816.com/the_switch.html</link>
			<description>
&lt;div&gt;&lt;p&gt;Everything is hosted in ORCA now, and the switch was somewhat pleasant. It took about 4 hours to reformat the source and get used to the new assembler directives and such, but I have a working version of snddemo that launches from the ORCA shell now. This is significant as it clears the way for me to put together my test program that will scroll tiles while playing music. With just a few days left before you-know-what.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;-Chris&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Fri, 13 Jul 2007 18:26:18 -0400</pubDate>
			<guid>http://65816.com/the_switch.html</guid>
		</item>
		<item>
			<title>Turbo Cube Restoration Begins</title>
			<link>http://65816.com/turbo_cube_restoration_begi.html</link>
			<description>
				&lt;div class="article-thumbnail"&gt;
					&lt;img
						src="http://65816.com/_Media/nextrevival-2.jpeg"
						alt="Turbo Cube Restoration Begins"
						width="128"
						height="74" /&gt;
				&lt;/div&gt;
&lt;div&gt;&lt;p style=&quot;text-align: left;&quot;&gt;(Click title for larger picture)&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;Since the new Apple IIGS building project went so well, I decided to clean up and restore the NeXT cube as well. I did not want to use the 90-pound Hitachi CRT (although I do still have it, sadly enough), but the Samsung Syncmaster 712N LCD supposedly does Sync-on-Green. The Cube has a full 128M of RAM and 128M of NeXTDimension RAM, as well as the Turbo CPU board with the last firmware revision (which allows use of ADB peripherals, although I do not use them, as well as SCSI CDROM booting). The project currently awaits an SVGA-to-13W3 cable and a new root disk (the current one is kaput) in order to be operational. Those should be in place soon. I also have tons more NeXT loot to add to this display, so I'll get more pictures up soon.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;-Chris&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Thu, 12 Jul 2007 17:29:30 -0400</pubDate>
			<guid>http://65816.com/turbo_cube_restoration_begi.html</guid>
			<enclosure url="http://65816.com/_Media/nextrevival.jpeg" length="76333" type="image/jpeg" />
        	<media:thumbnail url="http://65816.com/_Media/nextrevival-2.jpeg" />
        	<media:content url="http://65816.com/_Media/nextrevival.jpeg" type="image/jpeg" />
		</item>
		<item>
			<title>Another Weekend</title>
			<link>http://65816.com/another_weekend.html</link>
			<description>
&lt;div&gt;&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;&quot; alt=&quot;DSCN2286&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Trebuchet MS; font-size: 9px;&quot;&gt;(Above: The IIGS corner, which due to square-footage restrictions, is not permitted to exceed this cart. In this case, Disk IIc fits where Apple 5.25&quot; Drive would not.)&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;i&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/i&gt;&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;Just an update. I've primarily been working on my tiles and maps. I'm really excited about what I have and soon we'll see it on a IIGS (or emulator) near you. I hadn't realized that Generic Tile Engine is presently an ORCA-only affair, which would not be a problem ideally, but since ORCA is still being sold and its only fulfiller is quite a busy man, my options are somewhat limited. But Lucas S is more than helpful and the project will easily make it around this corner.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;text-decoration: line-through;&quot;&gt;(Aside, I'm not sure how ethical you think this is, but it passes my test. I'll be very happy to buy ORCA and hope that it gets fulfilled before Christmas, and forward you a copy of the receipt email, if you'll... you know. Just a thought. I only need the assembler. If you're still listening, I also need Spectrum...)&lt;/span&gt; I got everything and more, and legally licensed at that. Thanks everyone.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;And before I forget, please join me in welcoming Haloscan comments to 65816.com. I'd love to hear all your thoughts on this stuff.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;&quot; alt=&quot;DSCN2287&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Trebuchet MS; font-size: 9px;&quot;&gt;(Above: Super-GS current configuration, with VOC, but PCTransporter yanked. Reactive Heavy Duty Power Supply also installed. Various GALs and crystals laying around. K-rad Megademo disks handy too.)&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;I spent a lot of time today attempting to stabilize the Super-GS too, mainly because I'd fiddled with crystals so much, I'd broken the fragile legs off of the 25MHz full-can (yes full, so two legs were oddly bent to fit in the half-can socket) oscillator that came with the TWGS when I'd purchased it. This left me with a 55MHz oscillator (for a 13.75MHz system) from my experimental oscillator collection, as a minimum to start from. At 13.75, I managed to get the machine to be stable for 10 entire minutes, which was a new record, but then came the crashes, as always.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;I tried pushing the slot sprongers back out, cleaning card edges with eraser, swapping in different GALs, filtered power, a Reactive 200W Heavy Duty Power Supply... all with very little luck. I even tried different chassis/motherboards and ended up getting the same crashes. This says to me then, that my limitations lie with the TWGS card itself. Tomorrow I believe I'll have oscillators for more sane speeds like 8, 10, and 12MHz. Since 13.75 is just barely on the wrong side of stable (I can clear several levels of Wolf3D before it crashes), I think 12 will probably do fine, 10 will be stable if 12 ain't, and 8 will be unnecessarily slow. But I've been wrong about these things before. TWGS experimentation and stabilization is apparently a very slow and personal process for every IIGS nerd, due partly to the tolerances and margins-of-error of equipment that was manufactured 20 years ago. I mean we are talking about freakin antiques here.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;In other news, during all this experimentation, I yanked the PC Transporter, again. And realized just how much better the video output looks without that nasty Colorswitch card, again. If it stays yanked for very long, I promise I'll sell it back to the community, because it's one of the more useless cards I have right now.
&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;Am I going to KansasFest? I haven't been to the actual event, seminars and all, since 1993. And this might be the last one. And I actually have some amazing stuff to share. All this is weighing on me towards 'yes', but I have to make the decision this week, so you'll know soon. Everyone else who has played a part in my little year-2007 IIGS adventure will probably be there, so perhaps I should be too. And of course my family is in Kansas City also.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;So that's it for now, just another progress report to show you I've been working. And it doesn't even feel like work, because this is among the more gratifying hobbies/money pits I've ever had. The IIGS remains now, as then, a teacher of programatic lessons as well as of the self.
&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;-Chris&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Sun, 08 Jul 2007 22:10:02 -0400</pubDate>
			<guid>http://65816.com/another_weekend.html</guid>
		</item>
		<item>
			<title>Whoops</title>
			<link>http://65816.com/whoops.html</link>
			<description>
&lt;div&gt;&lt;p&gt;If you actually tried the Oversampler Sound Driver Demo and the sound skipped on you, it's because DOC registers $A0, $A8, and $B0 should have been initialized to $02 (one shot) instead of $00 (free run). It cost me about 6 hours to track that down. You can patch it yourself or await the next release of stuff here.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;Excellent progress with GTE too. I should have something else to share soon.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;-Chris&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Sun, 01 Jul 2007 01:32:19 -0400</pubDate>
			<guid>http://65816.com/whoops.html</guid>
		</item>
		<item>
			<title>Oversampler Sound Driver Demo</title>
			<link>http://65816.com/oversampler_sound_driver_de/</link>
			<description>
&lt;div&gt;&lt;p&gt;Today, I took advantage of a marvellous rain shower to integrate my basic GS/OS &quot;shell&quot; program that draws a basic menu bar and goes into a TaskMaster event loop, with a sound player that, although recoded by hand, is still a shameless ripoff of Oversampler technology. The end result, though, is to demonstrate a version of this technology that works well and can be integrated into a TaskMaster-style event loop. This fulfills the first milestone of my upcoming product's development. The next milestone involves getting familiar with Lucas' Generic Tile Engine and adding a scrolling tiled map into the mix. At that point, the results will begin to get progressively more exciting, I hope.&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;The Merlin 16+ Source link, will display the source to the GS/OS program, while the &quot;ShrinkIt Demo Archive&quot; link contains an actual playable music file as well as the built GS/OS program that plays it. It's a little over 900 lines of source, and is probably the nicest thing I've ever done on the GS so far. It works perfectly on Super-GS.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;Just something to show you I've been working. :)&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;-Chris&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;(Click entry title for links)&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Sun, 24 Jun 2007 22:10:09 -0400</pubDate>
			<guid>http://65816.com/oversampler_sound_driver_de/</guid>
		</item>
		<item>
			<title>Just Another Update...</title>
			<link>http://65816.com/just_another_update.html</link>
			<description>
&lt;div&gt;&lt;p&gt;Haven't gotten a new power supply yet, or finished upgrading one by myself, however I did put the VOC and PC Transporter and SCSI card back into the machine, thus occupying all 7 slots as well as the memory slot (with planning and careful management of card protrusions to prevent shorts, this is possible). With the TransWarp GS at just 7MHz and the new low-power components installed on that board, the machine will run with all 7 cards inserted and the case lid on, indefinitely. Those TWGS upgrades help so much even if you don't swap crystals.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;(&lt;span style=&quot;padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;&quot;&gt;&lt;i&gt;For the interested, that's 1:Uthernet 2:PCTransporter 3:TransWarpGS 4:MicroDrive Turbo 5:VOC 6:MDIDeas SuperSonic 7:SCSI MM:GS Sauce 4MB. I'll get pictures soon.)&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;div&gt;&lt;img src=&quot;http://65816.com/_Media/joysticks2.jpeg&quot; alt=&quot;joysticks2&quot; /&gt;&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;Also, I'd like to tell you that the 8x2 internal joystick pin header shouldn't be used due to logistical inconvenience as well as the idea that a good yank would stress your 20-year-old logic board. But none of those reasons applied to me, I just snipped that pin header off of my Kraft joystick (same model pictured above) when I got tired of trying to argue it through the GS back ports. A few weeks later, I picked up the wreckage, identified the wires in the cord, and put a nice Radio Shack DB9 metal plug on it and screwed it to the back of the GS. It works wonderfully, and my countless games of Task Force and Xenocide are testament to that fact.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;Oh, and the &lt;a href=&quot;http://www.a2retrosystems.com/&quot;&gt;Uthernet card&lt;/a&gt; is working great. I was able to configure it and use the textmode telnet program that comes with Marinetti. I've yet to more fully explore it, but now that I've got a joystick and a pretty stable system, I've got a million things I wanna try when I get time.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;There aren't many hardware improvements and tinkerings left to do at this point, so I promise I'll get back to programming.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;-Chris&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Wed, 13 Jun 2007 21:46:21 -0400</pubDate>
			<guid>http://65816.com/just_another_update.html</guid>
		</item>
		<item>
			<title>IIGS on 42&quot; Westinghouse LCD</title>
			<link>http://65816.com/iigs_on_42_westinghouse_lcd/</link>
			<description>
				&lt;div class="article-thumbnail"&gt;
					&lt;img
						src="http://65816.com/_Media/gsbigscreen2-2.jpeg"
						alt="IIGS on 42&quot; Westinghouse LCD"
						width="128"
						height="85" /&gt;
				&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
			</description>
			<pubDate>Sat, 09 Jun 2007 21:34:08 -0400</pubDate>
			<guid>http://65816.com/iigs_on_42_westinghouse_lcd/</guid>
		</item>
		<item>
			<title>TWGS Upgrades</title>
			<link>http://65816.com/twgs_upgrades.html</link>
			<description>
&lt;div&gt;&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p /&gt;
&lt;div&gt;&lt;img src=&quot;http://65816.com/_Media/weekend1.jpeg&quot; alt=&quot;weekend1&quot; /&gt;&lt;/div&gt;
&lt;div&gt;I received a mega-order from GSE-Reactive today and immediately put it to use. The TWGS board got a new set of GALs, the 32KB cache board with 1.8S firmware, a new 65816, and various crystals.  You might also see that I pulled the VOC for now and put the Uthernet in Slot 1 (with which I have not yet had time to mess).&lt;/div&gt;
&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/div&gt;
&lt;div&gt;So far it's very stable at 7MHz, but temperamental even at 13.75MHz, and will crash before it even boots at 18MHz. Changing out the PSU with another (curiously differently-labelled) one seemed to help somewhat. Other factors that are known to help are reseating the oscillator, cold air, and reseating the CPU cable and ZIF socket. Yeah, I know filtered power and a heavy duty power supply will help tons as well, that's on my list.&lt;/div&gt;
&lt;p /&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;There are many more variables I can play with. I have a few ROM 01 and ROM 03 boards here, each with its own tolerances and quirks, and one will probably clearly prove itself to be more stable than others. Also note that the board I've been using was never intended to be sold to customers in the first place. So I'm not worried, but it's going to take me a few days to get it up to rip-roaring speed along with everything else.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;So give me another GS-messin session or two, and I'll post about my stable IIGS and give my impressions of the Uthernet card too.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;-Chris&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Sat, 09 Jun 2007 21:17:03 -0400</pubDate>
			<guid>http://65816.com/twgs_upgrades.html</guid>
		</item>
		<item>
			<title>More Setup Photos</title>
			<link>http://65816.com/more_setup_photos/</link>
			<description>
				&lt;div class="article-thumbnail"&gt;
					&lt;img
						src="http://65816.com/_Media/iigs1.jpeg"
						alt="More Setup Photos"
						width="128"
						height="95" /&gt;
				&lt;/div&gt;
&lt;div&gt;&lt;p style=&quot;text-align: left;&quot;&gt;Memory Expansion - Fully-populated Harris Labs GS Sauce&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;Slot 7 - Microdrive Turbo IDE/CF Adapter, 256M CF Card&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;Slot 5 - MDIDeas Supersonic&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;Slot 3 - TransWarp GS&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;Slot 1 - Video Overlay Card&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;(Cards spaced a slot apart to try and permit some sort of airflow)&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Fri, 01 Jun 2007 21:35:19 -0400</pubDate>
			<guid>http://65816.com/more_setup_photos/</guid>
		</item>
		<item>
			<title>Oversampler Commentary</title>
			<link>http://65816.com/oversampler_commentary.html</link>
			<description>
&lt;div&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Times; font-size: 16px;&quot;&gt;&lt;img src=&quot;http://65816.com/_Media/overlogo3.gif&quot; alt=&quot;overlogo3&quot; style=&quot;padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-top-color: rgb(0, 0, 0); border-right-color: rgb(0, 0, 0); border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; color: rgb(68, 0, 17); font-family: 'Trebuchet MS'; font-size: 12px;&quot; /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;Equally as important as writing new code, is reading old code. Sunday, I picked apart the venerable Oversampler, because I'd been considering using its technology in something I'm developing. I don't really want to say what I'm developing yet, but I figured that the remaining GS users have either an emulator or a CF card (or other huge mass-storage), so I could use 5-megabyte sound files instead of MOD/Soundsmith for a background track, to provide a really stunning soundtrack for a year-2007 IIGS product.&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Disassembling IIGS OMF-linked files is easier than ever, you just double-click on them in CiderPress. In the space of about 8 hours, I managed to completely understand Oversampler, and I want to share a bit about its technology with you.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;You may know that Oversampler loads up to 16KBytes of data from the disk at a time, and if you request, performs &quot;oversampling,&quot; or averages the values of every two bytes and inserts the average between them, thus doubling the resolution of a file from say, 23khz to 46khz, for example, for &quot;2x oversampling.&quot; It also has a &quot;4x&quot; mode for even greater resolution.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;Most of Oversampler is actually desktop interface and windows, so let's dive right into the player code...&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; init player&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/03E3: A2 12 0A      LDX #0A12&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/03E6: 22 00 00 E1   JSL E10000  WaitCursor()&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/03EA: 20 7E 09      JSR 097E&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; init DOC RAM and registers&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/03ED: 20 4E 0A      JSR 0A4E&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; read from disk and stash to DOC (2x$4000)&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/03F0: 90 08         BCC 03FA {+08}&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; skip to player if no problems&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/03F2: A2 04 CA      LDX #CA04&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; else set cursor back to error and stop&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/03F5: 22 00 00 E1   JSL E10000  InitCursor()&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/03F9: 60            RTS&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/div&gt;
&lt;div&gt;Nothing too fancy here, except that I should show you what's done to init the DOC RAM and registers, and load the first chunks from disk.&lt;/div&gt;
&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/div&gt;
&lt;div&gt;The routine below is responsible for setting all the registers of the DOC to default values as specified in the table after it, as well as filling up the DOC RAM with a value of $80, or silence. Note the construction of LDA E100CA / AND #0F / ORA #60 / STA E1C03C. If you've programmed the DOC before, you know that this is because the system volume is at E1/00CA, and when we ask the DOC for access to its registers, we must preserve the bits for system volume. 00 is stored in C03E/C03F to indicate the beginning of the DOC's 64K RAM, and then $80 is slammed into C03D 65,535 times. Then, the table at 09C5 in the program code is read, and for each value in the table, a subroutine is called to set the given DOC register to the particular value.&lt;/div&gt;
&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; clear out the DOC RAM to all $80 (baseline)&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/097E: E2 20         SEP #20&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0980: AF CA 00 E1   LDA E100CA&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0984: 29 0F         AND #0F&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0986: 09 60         ORA #60&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0988: 8F 3C C0 E1   STA E1C03C	; select DOC RAM, auto-increment&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/098C: A9 00         LDA #00&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/098E: 8F 3E C0 E1   STA E1C03E&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0992: 8F 3F C0 E1   STA E1C03F	; zero it out high and low&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0996: A0 00         LDY #00&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0999: A9 80 8D      LDA #8D80	; LDA #80&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/099C: 23 0B         AND 0B,S		; STA 0B23&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/099E: 8F 3D C0 E1   STA E1C03D	; store data into the doc&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09A2: C8            INY&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09A3: D0 F9         BNE 099E {-07}&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09A5: C2 20         REP #20&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09A7: A0 00 00      LDY #0000&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09AA: B9 C5 09      LDA 09C5,Y&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09AD: C9 FF FF      CMP #FFFF&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09B0: F0 12         BEQ 09C4 {+12}&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09B2: 29 FF 00      AND #00FF&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09B5: AA            TAX&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09B6: B9 C5 09      LDA 09C5,Y&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09B9: EB            XBA&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09BA: 29 FF 00      AND #00FF&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09BD: 20 3C 09      JSR 093C		; set DOC register&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09C0: C8            INY&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09C1: C8            INY&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09C2: 80 E6         BRA 09AA {-1A}&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09C4: 60            RTS&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; default DOC register settings&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09C5: 00 00         BRK 00		; register 00 (freq low0) = 00&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09C7: 20 08 10      JSR 1008		; register 20 (freq high0) = 08&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09CA: 00 30         BRK 30		; register 10 (freq low16) = 00&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09CC: 08            PHP		; register 30 (freq high16) = 08&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09CD: 08            PHP		; register 08 (freq low8) = 00&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09CE: 00 28         BRK 28		; register 28 (freq high16) = 08&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09D0: 08            PHP&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09D1: 40            RTI		; register 40 (volume 0) = 00&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09D2: 00 50         BRK 50		; register 50 (volume 16) = 00&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09D4: 00 48         BRK 48		; register 48 (volume 8) = 00&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09D6: 00 80         BRK 80		; register 80 (address low0) = 00&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09D8: 00 88         BRK 88		; register 88 (address low8) = 00&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09DA: 00 90         BRK 90		; register 90 (address low16) = 00&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09DC: 00 C0         BRK C0		; register C0 (wavetable info0) = 00&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09DE: 00 C8         BRK C8		; register C8 (wavetable info8) = 00&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09E0: 00 D0         BRK D0		; register D0 (wavetable info16) = 00&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09E2: 00 A0         BRK A0		; register A0 (control 0) = 02 one shot, no int&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09E4: 02 A8         COP A8		; register A8 (control 8) = 02 one shot, no int&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09E6: 02 B0         COP B0		; register B0 (control 16) = 02 one shot, no int&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09E8: 02 FF         COP FF		; FFFF - end of register defaults&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/09EA: FF&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
Let me show you that DOC register-setting routine too, while I'm at it. Notice that Ciderpress' disassembler choked a bit after SEP #20, but I was able to fill in. The LDA E1C03C/BMI loop just waits till the DOC isn't busy, and then of course the LDA E100CA / AND #0F / STA E1C03C construction again. Note that we store $0 into the upper part of C03C this time whereas above we stored $6 there. That's because $6 means, access the DOC RAM in auto-increment mode (where each successive write will write to the next address in DOC RAM), whereas $0 means we want access to the DOC's registers.&lt;/div&gt;
&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; subroutine to set a doc register&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; a = data&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; x = register number&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/093C: E2 20         SEP #20&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/093E: 48            PHA&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/093F: AF 3C C0 E1   LDA E1C03C&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; sound control register&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0943: 30 FA         BMI 093F {-06}&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; loop till it isn't busy&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0945: AF CA 00 E1   LDA E100CA&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; get system volume&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; * disassembler error: should be&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;					&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; * AND #0F   - select DOC registers&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;					&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; * STA E1C03C&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/094F: 8A            TXA&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0950: 8F 3E C0 E1   STA E1C03E&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; doc register number&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0954: 68            PLA&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0955: 8F 3D C0 E1   STA E1C03D&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; doc register data&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0959: C2 20         REP #20&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/095B: 60            RTS&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; read a doc register&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; a = data&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; x = register number&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/095C: E2 20         SEP #20&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/095E: AF 3C C0 E1   LDA E1C03C&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0962: 30 FA         BMI 095E {-06}&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; wait till sound controller not busy&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;tt&gt;00/0964: AF CA 00 E1   LDA E100CA&lt;/tt&gt;&lt;/div&gt;
&lt;div&gt;&lt;tt&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;div style=&quot;padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(68, 0, 17);&quot;&gt;; * disassembler error: should be&lt;/div&gt;
&lt;div style=&quot;padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(68, 0, 17);&quot;&gt;; * AND #0F   - select DOC registers&lt;/div&gt;
&lt;div style=&quot;padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(68, 0, 17);&quot;&gt;; * STA E1C03C&lt;/div&gt;
&lt;/span&gt;&lt;/tt&gt;&lt;/div&gt;
&lt;div&gt;&lt;tt&gt;00/096E: 8A            TXA&lt;/tt&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/096F: 8F 3E C0 E1   STA E1C03E&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0973: AF 3D C0 E1   LDA E1C03D&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0977: AF 3D C0 E1   LDA E1C03D&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/097B: C2 20         REP #20&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/097D: 60            RTS&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Courier;&quot;&gt;&lt;tt&gt;&lt;br /&gt;
&lt;/tt&gt;&lt;/span&gt;So now that the DOC RAM and registers are initialized, let's continue with the player. Next is a call to a routine at 0A4E, which loads chunks from disk and shoves them into the DOC RAM. As you might imagine, there's a lot of magic here, so let's take a closer look.&lt;/div&gt;
&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; read up to 16 kbytes from disk and stash to DOC, twice&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; fills DOC RAM from $0000-$8000 (32k) with or without oversampling&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A4E: A9 00 00      LDA #0000&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A51: 8D DD 0E      STA 0EDD&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A54: 8D DF 0E      STA 0EDF&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A57: 20 3C 0E      JSR 0E3C&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; seek to file position&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A5A: B0 33         BCS 0A8F {+33}&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; return if error?&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A5C: A6 88         LDX 88&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A5E: A4 8A         LDY 8A&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A60: 8E C3 0E      STX 0EC3&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A63: 8C C5 0E      STY 0EC5&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; give GSOS the pointer to our $4000 bytes&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A66: A9 00 40      LDA #4000&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; start with 4000 bytes but scale down if&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A69: AE 26 05      LDX 0526&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; oversampling&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A6C: F0 04         BEQ 0A72 {+04}&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A6E: 4A            LSR&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; $2000 bytes if 2x, $1000 bytes if 4x, etc&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A6F: CA            DEX&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A70: D0 FC         BNE 0A6E {-04}&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A72: 8D C7 0E      STA 0EC7&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A75: 9C C9 0E      STZ 0EC9&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; EC7/EC9 contains bytes to read, 4000/2000/1000&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A78: 20 4F 0E      JSR 0E4F&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; do GSOS read&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A7B: B0 12         BCS 0A8F {+12}&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; return if error&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A7D: A2 00 00      LDX #0000&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A80: 20 90 0A      JSR 0A90&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; stash data to DOC (x=0)&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A83: 20 4F 0E      JSR 0E4F&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; do GSOS read&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A86: B0 07         BCS 0A8F {+07}&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; return if error&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A88: A2 01 00      LDX #0001&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A8B: 20 90 0A      JSR 0A90&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; stash data to DOC (x=1)&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A8E: 18            CLC&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A8F: 60            RTS&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; this is where we stash data to the DOC&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; a, y - trashed&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; $88 - pointer to the data&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; x=0 - stash data at $0000 in DOC RAM&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; x=1 - stash data at $4000 in DOC RAM&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A90: E2 20         SEP #20&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A92: AF CA 00 E1   LDA E100CA&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A96: 29 0F         AND #0F&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A98: 09 60         ORA #60&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A9A: 8F 3C C0 E1   STA E1C03C&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; select DOC RAM, auto-increment&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0A9E: A9 00         LDA #00&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AA0: 8F 3E C0 E1   STA E1C03E&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; address low word: $0000&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AA4: E0 00 00      CPX #0000&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AA7: F0 02         BEQ 0AAB {+02}&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; if x=0, do low 16K, else set up for high 16K&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AA9: A9 40 8F      LDA #8F40&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; LDA #40&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AAC: 3F C0 E1 A0   AND A0E1C0,X&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; STA E1C03F for addr high word&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AAF: A0 00         LDY #00&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; LDY #0000&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AB1: 00 B7         BRK B7&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; LDA [88],Y - $88 is pointer to the $4000 bytes&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AB3: 88            DEY&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;;&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AB4: D0 01         BNE 0AB7 {+01}&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AB6: 1A            INC&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; INC if zero so sound doesn't break&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AB7: AE 26 05      LDX 0526&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0ABA: F0 03         BEQ 0ABF {+03}&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; skip oversampling if it's not on?&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0ABC: 20 D7 0A      JSR 0AD7&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; else perform oversampling&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0ABF: 8F 3D C0 E1   STA E1C03D&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; stash data to DOC&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AC3: C8            INY&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AC4: CC CB 0E      CPY 0ECB&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AC7: 90 E9         BCC 0AB2 {-17}&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; keep looping till y=0ECB&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AC9: CC C7 0E      CPY 0EC7&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0ACC: F0 06         BEQ 0AD4 {+06}&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; just return if not end of file?&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0ACE: A9 00         LDA #00&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AD0: 8F 3D C0 E1   STA E1C03D&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; store final zero for end of sound&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AD4: C2 20         REP #20&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AD6: 60            RTS&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; 2x oversampling&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AD7: E0 02 00      CPX #0002&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0ADA: F0 13         BEQ 0AEF {+13}&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; do 4x oversampling if it's on&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0ADC: 48            PHA&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0ADD: C2 20         REP #20&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0ADF: 18            CLC&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AE0: 6D 23 0B      ADC 0B23&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AE3: 4A            LSR&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; (ByteA + ByteB) / 2&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AE4: E2 20         SEP #20&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AE6: 8F 3D C0 E1   STA E1C03D&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; stash data to DOC&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AEA: 68            PLA&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AEB: 8D 23 0B      STA 0B23&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AEE: 60            RTS&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; 4x oversampling&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AEF: 48            PHA&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AF0: C2 20         REP #20&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AF2: 18            CLC&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AF3: 6D 23 0B      ADC 0B23&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AF6: 4A            LSR&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AF7: 8D 21 0B      STA 0B21&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; (ByteA + ByteB) / 2&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AFA: 18            CLC&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AFB: 6D 23 0B      ADC 0B23&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AFE: 4A            LSR&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; Point halfway between oversample byte and ByteA&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0AFF: E2 20         SEP #20&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0B01: 8F 3D C0 E1   STA E1C03D&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; ... to DOC&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0B05: AD 21 0B      LDA 0B21&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0B08: 8F 3D C0 E1   STA E1C03D&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; Byte A to DOC&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0B0C: 68            PLA&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0B0D: 8D 23 0B      STA 0B23&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0B10: C2 20         REP #20&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0B12: 18            CLC&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0B13: 6D 21 0B      ADC 0B21&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0B16: 4A            LSR&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; Point halfway between oversample byte and ByteB&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0B17: E2 20         SEP #20&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0B19: 8F 3D C0 E1   STA E1C03D&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; ... to DOC&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0B1D: AD 23 0B      LDA 0B23&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; and get ByteB ready to slam in there next&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0B20: 60            RTS&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/div&gt;
&lt;div&gt;Notice there isn't a lot there that you haven't already seen. We call a subroutine (that isn't listed here) to do the GSOS seek and read into a $4000 (16k) byte buffer that was allocated earlier with _NewHandle. If we're doing 2x oversampling, we tell GSOS to only read $2000 bytes because the sample size will be doubled in DOC RAM. Similarly, only read $1000 bytes for 4x oversampling. Then, the data is written to the DOC, and as we do so, the oversampling calculations are performed, if enabled, and $00 bytes are transformed to $01 bytes to keep the oscillator from halting when they are encountered. The other thing to notice is that it happens twice. Once, DOC RAM is filled from $0000 to $3FFF, and the second time it is filled from $4000 to $7FFF, so now we've got 32K (half) of DOC RAM full of sound data.&lt;/div&gt;
&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/div&gt;
&lt;div&gt;And we return to the main player...&lt;/div&gt;
&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; open player window, draw controls&lt;/tt&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/03FA: 48            PHA&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/03FB: 48            PHA&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/03FC: F4 00 00      PEA 0000&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/03FF: F4 00 00      PEA 0000&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0402: F4 00 00      PEA 0000&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0405: F4 00 00      PEA 0000&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0408: F4 00 00      PEA 0000&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/040B: F4 77 0B      PEA 0B77		; 0B77 = window redraw callback&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/040E: F4 00 00      PEA 0000&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0411: F4 00 00      PEA 0000&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0414: F4 02 00      PEA 0002&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0417: F4 00 00      PEA 0000&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/041A: F4 F8 0F      PEA 0FF8&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/041D: F4 0E 80      PEA 800E&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0420: A2 0E 61      LDX #610E&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0423: 22 00 00 E1   JSL E10000 NewWindow2(@T,RC/4,@draw,@def,pDesc,pRef/4,rType):@W&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0427: 68            PLA&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0428: 8D 14 05      STA 0514&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/042B: 68            PLA&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/042C: 8D 16 05      STA 0516&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/042F: 20 EB 09      JSR 09EB		; set up keyboard interrupts&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;Nothing fancy about that, just a call to NewWindow2... except for the last part there. Keyboard interrupts? Yeah, Oversampler uses its own keyboard interrupt handler to tell if you pressed ESC so it can stop playing. That handler is nothing fancy, and it doesn't provide insight on Oversampler technology though, so I'm skipping it. Let's continue...&lt;/div&gt;
&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0432: A9 FF FF      LDA #FFFF&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0435: 8D 18 05      STA 0518&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0438: AD 16 05      LDA 0516&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/043B: 48            PHA&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/043C: AD 14 05      LDA 0514&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/043F: 48            PHA&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0440: A2 10 10      LDX #1010&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0443: 22 00 00 E1   JSL E10000  DrawControls(@Wind)&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0447: A0 00 00      LDY #0000&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/044A: B9 28 05      LDA 0528,Y	; set up DOC registers to default&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/044D: C9 FF FF      CMP #FFFF&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0450: F0 12         BEQ 0464 {+12}&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0452: 29 FF 00      AND #00FF&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0455: AA            TAX&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0456: B9 28 05      LDA 0528,Y&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0459: EB            XBA&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/045A: 29 FF 00      AND #00FF&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/045D: 20 3C 09      JSR 093C		; set DOC register&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0460: C8            INY&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0461: C8            INY&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0462: 80 E6         BRA 044A {-1A}	; loop till we're done setting them&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;					; at this point, 0 is stopped, 8 and 16 are playing?&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;					; oscillator 0 - echo-delayed channel if any&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;					;                (otherwise it plays same as 16)&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;					; oscillator 8 - quiet, used as timer for irqs&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;					; oscillator 16 - &quot;main&quot; channel&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;I'm not interested in the call to _DrawControls, but you see there at 44A, we start setting up DOC registers from a table again, and that table is:&lt;/div&gt;
&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; DOC register defaults for player&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0528: 00 E3         BRK E3&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; 00 (freq0lo) - E3&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/052A: 20 01 10      JSR 1001&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; 20 (freq0hi) - 01 - 483 for freq0?&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/052D: E3 30         SBC 30,S&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; 10 (freq16lo) - E3&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/052F: 01 08         ORA (08,X)&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; 30 (freq16hi) - 01 - 483 for freq16&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0531: E3 28         SBC 28,S&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; 08 (freq8lo) - E3&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0533: 01 40         ORA (40,X)&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; 28 (freq8hi) - 01 - 483 for freq8&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;					&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; 40 (volume0) - FF&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0535: FF 50 FF 48   SBC 48FF50,X&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; 50 (volume16) - FF&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;					&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; 48 (volume8) - 00&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0539: 00 80         BRK 80&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; 80 (addr0) - 00&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/053B: 00 88         BRK 88&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; 88 (addr8) - 80&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/053D: 80 90         BRA 04CF {-70}&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; 90 (addr16) - 00&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/053F: 00 C0         BRK C0&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; C0 (multi0) - 3F (play 32k sound)&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0541: 3F C8 3E D0   AND D03EC8,X&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; C8 (multi8) - 3E (32k sound, different resolution)&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0545: 3F A0 01 A8   AND A801A0,X&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; D0 (multi16) - 3F (play 32k sound)&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;					&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; A0 (control0) - 01 (free run, halt, no int)&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0549: 08            PHP&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; A8 (control8) - 08 (free run, no halt, int)&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/054A: B0 10         BCS 055C {+10}&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; B0 (control16) - 10 (free run, no halt, no int)&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/054C: FF FF A9 FF   SBC FFA9FF,X&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; FFFF - end of table&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/div&gt;
&lt;div&gt;Note that the frequency doesn't have to be 483, that is a default that's changed by the slider bars elsewhere. Same for frequency. But the biggest thing is the last three registers changed: Oscillator 1 is set up so that it would run in free-run mode with no interrupts, as soon as the halt bit is taken off. This is because it's the &quot;echo delay&quot; channel and starts after the other two. Oscillator 16 plays the same sound and starts immediately, because its halt bit isn't set. Oscillator 8 had its volume set to 0, because Oversampler uses it as a timer of sorts. Note that interrupts are enabled on it, meaning that when it gets to the end of sound data, it is going to throw a Sound IRQ, which is going to be very important soon. Note also that timer Oscillator 8 is missing a resolution bit, causing it to &quot;play&quot; every other byte and thus throw IRQ in half the time as the other oscillators take to play the sample. This is very helpful for the &quot;refilling&quot; process as you may imagine, so that when the two &quot;live&quot; oscillators are playing sound from the upper part, we can refill the lower, and vice-versa.&lt;/div&gt;
&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0464: AE 22 05      LDX 0522		; echo delay&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0467: F0 13         BEQ 047C {+13}	; wait a certain number of vblanks&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0469: E2 20         SEP #20&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/046B: AF 19 C0 00   LDA 00C019  r:RDVBLBAR&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/046F: 10 FA         BPL 046B {-06}&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0471: AF 19 C0 00   LDA 00C019  r:RDVBLBAR&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0475: 30 FA         BMI 0471 {-06}	; wait for vblank(s?)&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0477: C2 20         REP #20&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0479: CA            DEX&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/047A: D0 ED         BNE 0469 {-13}&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/047C: A2 A0 00      LDX #00A0	; register $A0 - Control 0&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/047F: A9 00 00      LDA #0000	; value $00 - free run, no interrupt, not halt&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0482: 20 3C 09      JSR 093C		; set DOC register&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;					; at this point 0 is playing first chunk from disk&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;					; (delayed if applicable)&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;All we did here was read the value of the echo delay, and wait a few vblanks, then turn Oscillator 1 loose. So at this point, 1 is playing delayed if asked, 16 is playing non-delayed, and 8 is the timer.&lt;/div&gt;
&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0485: 9C 1A 05      STZ 051A&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0488: 9C 8C 05      STZ 058C&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/048B: 9C 8E 05      STZ 058E&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/048E: A9 FF FF      LDA #FFFF&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0491: 8D 1C 05      STA 051C		; init the high/low flipflop variable&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; main player loop?&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0494: AD 8C 05      LDA 058C&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0497: D0 36         BNE 04CF {+36}	; branch to stop/return if we hit the end&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0499: AD AB 05      LDA 05AB		; read keypress register&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/049C: C9 1B 00      CMP #001B	; if ESC&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/049F: F0 2E         BEQ 04CF {+2E}	; stop player and quit&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/04A1: AD 1C 05      LDA 051C&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/04A4: D0 EE         BNE 0494 {-12}	; keep looping till 051C is zero (int on osc 8)&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; interrupt happened (generator finished playing)&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/04A6: CE 1C 05      DEC 051C		; set 051C back to FFFF&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/04A9: 20 4F 0E      JSR 0E4F		; read chunk from soundfile&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/04AC: B0 21         BCS 04CF {+21}	; stop if error&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/04AE: AE 8E 05      LDX 058E&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/04B1: 20 90 0A      JSR 0A90		; stash data to DOC (high/low $4000 depends on 058e)&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/04B4: AD 8E 05      LDA 058E&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/04B7: 49 01 00      EOR #0001&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/04BA: 8D 8E 05      STA 058E		; flip 058E between 0000 and 0001&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/04BD: AD 1C 05      LDA 051C&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/04C0: D0 D2         BNE 0494 {-2E}	; keep looping if interrupt didn't happen already&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; interrupt happened while we were refilling?&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/04C2: EE 1A 05      INC 051A&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/04C5: AD 1A 05      LDA 051A&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/04C8: C9 03 00      CMP #0003	; got here 3 times? sucks, let's bail&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/04CB: F0 06         BEQ 04D3 {+06}	; stop player, draw alert, and exit&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/04CD: 80 C5         BRA 0494 {-3B}&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/04CF: 20 EF 04      JSR 04EF		; stop player&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/04D2: 60            RTS&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/div&gt;
&lt;div&gt;Above is the main code of the sound player. A few variables are zeroed out to start. 051A is a counter that keeps track of how many times an interrupt happened while we were refilling the DOC. If that happens 3 times, we throw an alert window (which I imagine says something like &quot;too fast, dude!&quot;) and bail out. 058C is a quit flag set elsewhere, and 058E is flipped back and forth between 01 and 00, and is used to provide the x register for the call to refill the DOC RAM (recall that the x register determines whether high or low 16k is refilled in that subroutine). 051C is set by an interrupt handler that was installed by _SetSoundMIRQV when we started up. Let's have a look at that interrupt handler real quick:&lt;/div&gt;
&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; sound MIRQVector that got installed at startup&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0555: 08            PHP&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0556: 8B            PHB&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0557: 0B            PHD&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0558: C2 30         REP #30&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/055A: 4B            PHK&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/055B: AB            PLB&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/055C: AD 9B 00      LDA 009B&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; original data bank register&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/055F: 5B            TCD&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0560: A2 E0 00      LDX #00E0&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; register #E0: Oscillator Interrupt Register&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0563: 20 5C 09      JSR 095C&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; read DOC register&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0566: 89 80 00      BIT #0080&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; is an oscillator generating an interrupt?&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0569: F0 0B         BEQ 0576 {+0B}&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; branch if not&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/056B: 29 3E 00      AND #003E&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; mask out all bits except osc number&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/056E: C9 10 00      CMP #0010&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; is it oscillator 8?&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0571: D0 03         BNE 0576 {+03}&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; if not, don't zero-out 051C&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0573: 9C 1C 05      STZ 051C&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; zero-out 051C to show that an int happened&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0576: A2 A0 00      LDX #00A0&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; register #A0: Control Register 0&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0579: 20 5C 09      JSR 095C&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; read DOC register&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/057C: 29 01 00      AND #0001&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; is it halted?&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/057F: F0 06         BEQ 0587 {+06}&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;	&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; return if not, else halt them all&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0581: CE 8C 05      DEC 058C&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; set 058C to show that we've hit the end&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0584: 20 2C 09      JSR 092C&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;		&lt;/tt&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;; halt all voices&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0587: 2B            PLD&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0588: AB            PLB&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/0589: 28            PLP&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/058A: 18            CLC&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;00/058B: 6B            RTL&lt;/tt&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Courier;&quot;&gt;&lt;tt&gt;&lt;br /&gt;
&lt;/tt&gt;&lt;/span&gt;So all we do in the interrupt handler is clear the interrupt, and check to see if it was oscillator 8 that threw it. If it was oscillator 8 (the timer oscillator, recall), then we alter 051C, which is used by the player loop to know when the DOC RAM needs refilling from disk.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
And there we have it, all the secret sauce contained within Oversampler. Now just think for a moment, what if some silly person decided to fill several disk partitions with sound files to play through this engine, while scrolling a plane of tiled graphics with Generic Tile Engine? We could have something truly interesting, couldn't we? More soon.
&lt;p&gt;
&lt;/p&gt;
&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/div&gt;
&lt;div&gt;-Chris&lt;/div&gt;
&lt;/div&gt;
			</description>
			<pubDate>Mon, 28 May 2007 01:47:14 -0400</pubDate>
			<guid>http://65816.com/oversampler_commentary.html</guid>
		</item>
		<item>
			<title>Manipulating the PCTransporter HDV Image in OSX</title>
			<link>http://65816.com/manipulating_the_pctranspor.html</link>
			<description>
&lt;div&gt;&lt;p&gt;... is pretty easy, considering it's just a raw HD image. First, pull it off your GS with CiderPress, then mount it up on the mac by typing something like this into a Terminal.app prompt:&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;div&gt;&lt;tt&gt;% sudo hdiutil attach /Users/cshepher/Desktop/freedos-img/c.img &lt;/tt&gt;&lt;/div&gt;
&lt;div&gt;&lt;tt&gt;/dev/disk3              FDisk_partition_scheme         &lt;/tt&gt;&lt;/div&gt;
&lt;div&gt;&lt;tt&gt;/dev/disk3s1            DOS_FAT_12                      /Volumes/Untitled&lt;/tt&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Courier;&quot;&gt;&lt;tt&gt;&lt;br /&gt;
&lt;/tt&gt;&lt;/span&gt;At this point, a new volume called &quot;Untitled&quot; becomes useable on the Mac. I copy over a few test utilities and games (Tunneler? Space Quest? Astrotit?), and then..&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;pre&gt;% sudo hdiutil detach disk3
&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Times; font-size: 16px; white-space: normal;&quot;&gt;&lt;tt style=&quot;padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(68, 0, 17); font-family: Courier; font-size: 10px;&quot;&gt;&lt;tt&gt;&quot;disk3&quot; unmounted.&lt;/tt&gt;&lt;/tt&gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;div&gt;&lt;tt&gt;&quot;disk3&quot; ejected.&lt;/tt&gt;&lt;/div&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
At which point you're free to take c.img back down the CiderPress hole and into your GS (don't forget to set filetype to $6F as you do so. I always forget and it always costs me a reboot).&lt;br /&gt;
&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;I'm not sure how much more I'll say about the PC Transporter, since a 640Kbyte MS-DOS computer with CGA graphics is primarily useful for making the IIGS look really really good by comparison. My guess is this card's primary use was Lotus123 and Wordperfect. Still an interesting thingy and I may yet find a use for it one day.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;In other news, my development environment has made The Switch and is now completely hosted on the IIGS with Merlin 16+, and development has begun on some &quot;My First&quot; sort of desktop programs. Look for my first development notes to appear this weekend when I get down to real hackin.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;-Chris&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Thu, 24 May 2007 21:45:50 -0400</pubDate>
			<guid>http://65816.com/manipulating_the_pctranspor.html</guid>
		</item>
		<item>
			<title>PC Transporter Works</title>
			<link>http://65816.com/pc_transporter_works.html</link>
			<description>
&lt;div&gt;&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;div&gt;&lt;img src=&quot;http://65816.com/_Media/pctransworks.jpeg&quot; alt=&quot;pctransworks&quot; /&gt;&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;No problem with the video really, except that sometimes the scan converter has to reset a couple times before getting it right. The Colorswitch card is switching between the output from the PC Transporter and the VOC. The Transwarp GS is not disabled.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;I know the suggested bootstrap procedure is to find MSDOS on 720kbyte 3.5&quot; floppies or whatever. Do not waste your time. Use &lt;a href=&quot;http://bochs.sourceforge.net/guestos/freedos-img.tar.gz&quot;&gt;this file&lt;/a&gt; provided by the Bochs sourceforge project. It is a raw dump of a 10-megabyte virtual hard disk, with &lt;a href=&quot;http://www.freedos.org/&quot;&gt;FreeDOS&lt;/a&gt; installed. How convenient. After about 2 hours of pondering how I'd trick this all into happening, I ran across this file, transferred it to a ProDOS volume on the CF card with CiderPress, and set its filetype to $6F (HDV). I set the PC Transporter to use it as a C: drive, and everything worked.
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;Perhaps for the next PC Transporter update, we can cover Scorched Earth and Commander Keen.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;-Chris&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Thu, 24 May 2007 00:28:53 -0400</pubDate>
			<guid>http://65816.com/pc_transporter_works.html</guid>
		</item>
		<item>
			<title>RGB-SCART Cable Arrives</title>
			<link>http://65816.com/rgb-scart_cable_arrives/</link>
			<description>
				&lt;div class="article-thumbnail"&gt;
					&lt;img
						src="http://65816.com/_Media/dscn2273.jpeg"
						alt="RGB-SCART Cable Arrives"
						width="128"
						height="85" /&gt;
				&lt;/div&gt;
&lt;div&gt;&lt;p&gt;Clean image, as you can see!&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Wed, 23 May 2007 15:58:20 -0400</pubDate>
			<guid>http://65816.com/rgb-scart_cable_arrives/</guid>
		</item>
		<item>
			<title>More Stuff Arrives, And A Few Trials</title>
			<link>http://65816.com/more_stuff_arrives_and_a_fe.html</link>
			<description>
&lt;div&gt;&lt;p&gt;
&lt;/p&gt;
&lt;div&gt;&lt;img src=&quot;http://65816.com/_Media/microdrive-turbo-small.jpeg&quot; alt=&quot;MicroDrive-Turbo-small&quot; /&gt;&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;My &lt;a href=&quot;http://www.gse-reactive.com/product_info.php?products_id=126&quot;&gt;IIGS MicroDrive/Turbo IDE Controller&lt;/a&gt; arrived from GSE-Reactive. What an amazing device. I quickly discovered &lt;a href=&quot;http://ciderpress.sourceforge.net//index.htm&quot;&gt;CiderPress&lt;/a&gt; and used it to load the card up with all sorts of goodies. Truly amazing, especially when paired with a Transwarp GS.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;At first I couldn't figure out why some applications would randomly crash. I would later discover, after nearly going mad, that whenever a card was piggybacked on the CV Tech GS Memory Card, or whenever the card was jumpered to use more than 2MB of RAM, random memory corruption would result in the upper 2MB of RAM on the card. Ugh. For now, I'm working around it by disabling the latter 2MB. For the longer term, I was able to locate a GS Sauce card with 4MB. Super-GS will stay around 5MB of RAM it seems. I was just glad the problem wasn't in any of the more fancy/expensive expansion cards. By the way, Wolf 3D is not only fun, it's the best way to quickly expose any memory problems in the GS.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;Also, the PC Transporter card arrived, although I really can't test it (or the Video Overlay Card) yet until I get the RGB-to-SCART cable, let's hope that's shortly. That leaves just one useable slot left, and I'm saving it for the Uthernet card, and finally the guts of the GS will be complete. It's also getting a nice set of speakers soon. I'll photograph the whole mess when it's done.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;I also found time to debug my first few hundred lines of GS assembly code to arise from this project. TaskMaster wasn't returning any events because I wasn't initializing the event mask properly. These things get easier to figure out when you can debug a program by randomly inserting BRK's, and only wait 2 seconds for the super-fast emulator to reboot into the development environment.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;One more thing before I forget, the Belkin F1D080 speaks a newer ADB mouse protocol than the IIGS does, making mouse control erratic to say the least, so a real ADB mouse has to be plugged into its 'spare' ADB port. The PS/2 keyboard is still useable enough though. I suspect someone could patch the ADB tools on the IIGS to permit compatibility with the newer mouse protocol, but who knows.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;This week, I should get the video cable, Transwarp modding accessories, and a couple more manuals. Who knows what kinda stuff I can blow up. Best case scenario, my development environment is all ready to go by this weekend, and I can start showing off some of my work. &lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;-Chris&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Fri, 18 May 2007 21:09:47 -0400</pubDate>
			<guid>http://65816.com/more_stuff_arrives_and_a_fe.html</guid>
		</item>
		<item>
			<title>Super-GS, First Looks</title>
			<link>http://65816.com/super-gs_first_looks/</link>
			<description>
&lt;div&gt;&lt;p&gt;Here's some IIGS porn for you. So far, my development system has 5MB of expansion RAM, an MDIDeas SuperSonic stereo sound card, a Video Overlay Card, an Apple SCSI controller, and an unmodified Transwarp GS. Yes, it does boot, so far. I heard a rumor that a PC Transporter and CompactFlash adapter card were on the way, and maybe even an Uthernet card. Where will they all fit? Won't the power supply blow up? Stay tuned.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;-Chris&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Wed, 16 May 2007 14:02:53 -0400</pubDate>
			<guid>http://65816.com/super-gs_first_looks/</guid>
		</item>
		<item>
			<title>Meanwhile...</title>
			<link>http://65816.com/meanwhile.html</link>
			<description>
&lt;div&gt;&lt;p&gt;
&lt;/p&gt;
&lt;div&gt;&lt;img src=&quot;http://65816.com/_Media/grab1.png&quot; alt=&quot;grab1&quot; /&gt;&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;Last night was my first time in roughly 15 years, that I stayed up past 3am hacking Apple IIGS assembly code.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;I ended up writing most of it in TextMate on the Mac, then exporting it, first by filtering it through &lt;span style=&quot;font-family: Courier;&quot;&gt;&lt;tt&gt;tr '\n' '\r'&lt;/tt&gt;&lt;/span&gt; to convert it to the kind of line-breaks that the GS/Merlin likes. Then I used the Perl CPAN ProDOS module to export these files to a fresh ProDOS volume image, which was mounted on KEGS and built with Merlin. It is a few steps, but mostly able to be automated, and easy to master when you get the hang of it. Oh, and if you do this, do not use control-I tabs for spacing, Merlin hates that. Be thankful it will import text files without the high bit set on ASCII characters. You'll have to strip that high-bit back off if you do some debugging/etc and bring the files back into UNIX.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;There are ways to optimize this kind of development for sure. For example, I'm sure I could set up netatalk somewhere, do all the editing with Merlin on files that reside on the netatalk share, and use svn on the computer hosting the share. Or perhaps I could pull the files off the GS with Silver Platter and an Uthernet card, and then manage them. Regardless, I still insist on source code management.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;Anyhow, as I'd hoped, I'm a lot better at this stuff than I was 15 years ago. I made liberal use of macros, tools, and even a relocatable linker segment, to produce a silly program that loads/starts up all the tools and builds a menu bar. Soon I hope to open an svn repository and start making this code available.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;One last note, I know I said I'd use MPW on a Powermac and target the IIGS that way, but all it took was a few minutes of trying MPW (and especially, trying MPW on the PowerMac when accessed via VNC), to dissuade me. The Powermac's reprieve is probably near an end, then. Dumpster Ahoy! I'm probably going to be using IIGS native assemblers, compilers, and linkers (the speed penalty won't be so bad after all because I have a TransWarp GS now).&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;All my goodies have been shipped. Maybe some of them will arrive today. Details comin. I have to get out of the club house now and go back to the Real World. These Real World people have no sense of humor and they want me to do this &quot;work&quot; stuff.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;-Chris&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Tue, 15 May 2007 11:39:18 -0400</pubDate>
			<guid>http://65816.com/meanwhile.html</guid>
		</item>
		<item>
			<title>eBay Luck and Other Musings</title>
			<link>http://65816.com/ebay_luck_and_other_musings.html</link>
			<description>
&lt;div&gt;&lt;p&gt;On eBay, I scored a TransWarp GS (unmodified at least until I get my hands on it), MDIDeas Supersonic sound card, Video Overlay Card, SCSI card and drive, and another Apple IIGS chassis (which doesn't appear to be in impressive shape, but who knows, it may be useful), for under 300 bucks.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;Aside from TransWarp GS hackery, a Highway Electronics SCART-to-VGA scan converter, and possibly a heavy-duty power supply, my hardware-purchasing is finally coming to a close. Which, holy-moly, is a great thing, because I was beginning to wonder how much more I was willing to finance all at once.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;Anyhow, back to the waiting game. Hopefully all my parts arrive this week, and the system I've been carefully planning, can come together and be photographed.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;-Chris&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Sun, 13 May 2007 17:24:10 -0400</pubDate>
			<guid>http://65816.com/ebay_luck_and_other_musings.html</guid>
		</item>
		<item>
			<title>Parts Begin to Arrive</title>
			<link>http://65816.com/parts_begin_to_arrive.html</link>
			<description>
&lt;div&gt;&lt;p&gt;
&lt;/p&gt;
&lt;div&gt;&lt;img src=&quot;http://65816.com/_Media/dscn0910.jpeg&quot; alt=&quot;DSCN0910&quot; /&gt;&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;Presently, I have three IIGS chassis:&lt;/p&gt;
&lt;p&gt;- ROM 03, plain case in grade-A condition (showroom quality), &quot;prototype&quot; ROMs. I couldn't ask for a nicer specimen. I was even able to scrub its little rubber feet clean to the pristine platinum color. For now, this is my favorite. Pictured above. The white labels on the FC and FE ROMs show part numbers 341-0728 and 341-0749.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;- ROM 03, Woz case in grade-C condition (a couple chips in the finish, ugh). Was supposed to be my favorite, but I don't like the case's condition. Backup favorite. Interestingly, its FC ROM is also a 341-0728.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;- ROM 01, plain case in grade-C condition (yellowed, dirty, no power supply, left over from a brief year-2000 IIGS experiment that I mostly donated to public schools). For parts.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;I've also received a 3.5&quot; floppy drive, so I can actually boot up California Games and watch it on the composite output, instead of just doing the diagnostic test on the machines.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;The CV Technologies GS Memory card is here and tests just fine, but the funny thing about it is, if you put a card in the piggyback slot, and put the top on the GS, the piggybacked card shorts against the case's RF shield, which fortunately did not cost me a power supply or logic board to discover. But it is amusing. Solutions to the problem include not piggybacking a card (most likely), or insulating the case (less likely). &lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;I'm humbly waiting on the postman to deliver Toolbox Reference, Volumes 1, 2, and 3, as well as the GS/OS Reference, my CF card adapter, and a couple other goodies. I've read nearly every book and all the sample source code I could find, and I'm literally itching to begin development.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;If you go to amazon.com and search for &quot;cpu stand,&quot; you'll find a few nice CPU stands that will nicely accomodate a vertical IIGS, even with a fairly-close color match.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;Although I will be trying a JAMMA CGA to VGA conversion box, I'm also going to try a very highly recommended combination of GS-to-SCART video cable plugged into SCART to VGA scan converter, which supposedly yields a sharp, shake-free image.
&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;Also, depending on how auctions go this week, I may pick up an accelerator and much more. Wish me luck. I want this waiting/building stage to be over, so I can get down to development, but these are 20  year old computers after all, and there may yet be another few weeks of waiting for all the parts to arrive and be assembled.
&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;I've read every book. I've read mounds of source code. I'm so eager to get started on this, that I've written a few pages of source already. Too bad I can't build it yet. But it won't be long now.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;-Chris&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Fri, 11 May 2007 11:04:12 -0400</pubDate>
			<guid>http://65816.com/parts_begin_to_arrive.html</guid>
		</item>
		<item>
			<title>Video Hardware Experiment</title>
			<link>http://65816.com/video_hardware_experiment.html</link>
			<description>
&lt;div&gt;&lt;p&gt;
&lt;/p&gt;
&lt;div&gt;&lt;img src=&quot;http://65816.com/_Media/acv_011_top.jpeg&quot; alt=&quot;ACV 011 Top&quot; /&gt;&lt;/div&gt;
&lt;div&gt;Per my recent comp.sys.apple2 postings, I will be attempting to use the Wei-Ya ACV-011 &quot;Cherry Master&quot; JAMMA-to-SVGA converter board to get output from the IIGS. It accepts RGB+composite sync, as well as 12VDC, both of which are available from the IIGS, allowing the board to be mounted inside the case. For now, the plan is to cut up a 15-pin Mac monitor cable and run the proper lines into the converter board, and see how the SVGA output looks. More on this when it arrives.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;The CV Technologies GS Memory card (halfway populated, I'll do the rest with chips from GSE-Reactive) arrived today, with a fully-populated Apple Memory Expansion card piggybacking on it. Neat.&lt;/div&gt;
&lt;div&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/div&gt;
&lt;div&gt;-Chris&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Mon, 07 May 2007 18:15:13 -0400</pubDate>
			<guid>http://65816.com/video_hardware_experiment.html</guid>
		</item>
		<item>
			<title>Week One: Assembling the Development Environment</title>
			<link>http://65816.com/week_one_assembling_the_dev.html</link>
			<description>
&lt;div&gt;&lt;p&gt;I've been away from Apple IIGS development since about 1992, I'd say. And even then, I was at a severe disadvantage as these things go. I had a single un-accelerated computer with 1.25 megabytes of RAM and a copy of Merlin 16+ on an 800k floppy disk, and no financial means to attain either mass storage or complete documentation. Under these circumstances then, it is not unforgiveable that my efforts tended towards lame little FTA-wannabe Toolbox-free demonstrations, showing my ability to write about 200 lines of absolute-position Merlin code that did something vaguely interesting by applying techniques more suitable for the IIe.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;About two weeks ago, I began reading nearly all of the documentation for the IIGS (and most of that is freely available in PDF format, particularly at the French site in my links list, don't worry, there's a ton of English-language stuff there). It quickly became apparent to me (after a decade of professional software development) that most things could be done in C, and with the help of the Toolbox (and &lt;i&gt;should&lt;/i&gt; be), and only the blazinfast speed-sensitive things need be done in assembly, and even those should be position-independent OMF libraries.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;There are a fair number of choices of development environments for the IIGS, even today. You can develop on GS hardware, emulated GS hardware, Mac OS 9, or even UNIX. You can use ORCA, APW, MPW, Merlin, LISA816, or even more esoteric 65816 cross-assemblers. After weighing all of these on their merits (and surveying the resources I have available here), I decided to run MPW with the IIgs targetting tools on a PowerMac 6500 running Mac OS 9, for my development computer. Testing would be done on emulated GS hardware as well as actual GS hardware.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;Putting this development environment together is somewhat challenging. Fortunately, I've amassed most of the documentation, as well as the PowerMac 6500 running MPW under Mac OS 9. I also have an extensive hard drive image (courtesy of old pals online) that runs great in KEGS. What I don't have, is an Apple IIGS.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p /&gt;
&lt;div&gt;&lt;img src=&quot;http://65816.com/_Media/816_dip_small.jpeg&quot; alt=&quot;816_dip_small&quot; /&gt;&lt;/div&gt;
&lt;p /&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Le Machine&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;I've ordered parts from eBay, and this is what my IIGS system is shaping up to be:&lt;/p&gt;
&lt;p&gt;- ROM 03 logic board with &lt;a href=&quot;http://groups.google.com/group/comp.sys.apple2/browse_thread/thread/871e8a11b07b6682/fdc89646c1c6d57c?lnk=st&amp;q=341-0728&amp;rnum=1#fdc89646c1c6d57c&quot;&gt;&quot;prototype&quot; (341-0728/341-0749) buggy ROMs&lt;/a&gt; (I couldn't resist the rarity and I knew I could count on people to burn a set of &quot;proper&quot; ROMs if the bugs ever bit me)&lt;/p&gt;
&lt;p&gt;- Woz Limited Edition case (not like that's hard to come by, but it adds flair, no?)&lt;/p&gt;
&lt;p&gt;- CV Technologies RAM card with 4MB RAM, and a fully-populated Apple IIGS Memory Expansion Card piggybacked, for a total of 6MB, including the 1 meg on the logic board&lt;/p&gt;
&lt;p&gt;- &lt;a href=&quot;http://www.gse-reactive.com/product_info.php?products_id=126&quot;&gt;IIgs Turbo IDE Controller&lt;/a&gt; and 256M GS/OS formatted CF card from GSE-Reactive&lt;/p&gt;
&lt;p&gt;- One 3.5&quot; floppy drive
&lt;/p&gt;
&lt;p&gt;- NO AppleColor RGB monitor; CRTs are strictly forbidden in my office. Will start with composite signal to Dell 2405FPW composite input; Will eventually upgrade to horizontal scan doubler to get more accurate signal into the 2405FPW's SVGA port&lt;/p&gt;
&lt;p&gt;- NO ADB keyboard and mouse; Using Belkin F1D080 ADB to PS/2 adapter, with roll-up plastic USB/PS2 keyboard and Microsoft optical Intellimouse&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;I'll photograph this setup as parts arrive. As it is, it will already run circles around my original IIGS, and if I can find an accelerator, I'll probably get that as well.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;(&lt;i&gt;Fun fact: if you're a digg.com reader, you may recall the recent story about the &lt;a href=&quot;http://digg.com/apple/1986_Apple_IIgs_Woz_Limited_Edition_Sold_For_668_On_eBay&quot;&gt;Apple IIGS That Sold For $668.18&lt;/a&gt;. Well guess what, I'm the guy who bid $658.16 and got outbid, thus producing that price. It had a ZipGS, a Video Overlay Card, and even a Second Sight, for cryin out loud&lt;/i&gt;)&lt;/p&gt;
&lt;p&gt;&lt;div&gt;&lt;img src=&quot;http://65816.com/_Media/tbr1.jpeg&quot; alt=&quot;tbr1&quot; /&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Things I Don't Have, But Need&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;I don't have these books, because they're not readily available in PDF:&lt;/p&gt;
&lt;p&gt;- IIGS Toolbox Reference Volumes 1-3&lt;/p&gt;
&lt;p&gt;- GS/OS Reference&lt;/p&gt;
&lt;p&gt;... every other IIGS reference of note, I have in book or PDF form, and probably have mostly read in the past couple of weeks.&lt;/p&gt;
&lt;p&gt;My development toolchain is also incomplete, I need licenses and manuals for:&lt;/p&gt;
&lt;p&gt;- ORCA/M IIGS&lt;/p&gt;
&lt;p&gt;- ORCA/M for MPW&lt;/p&gt;
&lt;p&gt;- APDA IIgs assembler/compilers for MPW&lt;/p&gt;
&lt;p&gt;(fortunately &lt;a href=&quot;http://www.syndicomm.com/&quot;&gt;Syndicomm&lt;/a&gt; sells all of this stuff pretty cheap, considering)&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;So the remainder is only a modest expense, and then we can get on with the actual development. I have a couple strong concept ideas that might actually serve a need within the year-2007 IIGS community, but we'll talk more about them later. First, I'm going to keep reading, playing with the emulators, and waiting for pieces to arrive. Every day I continue to be amazed at what I did not know about this machine. Bystanders are encouraged to contribute source code, game ideas (particularly for games that could run well under the &lt;a href=&quot;http://iigs.dreamhost.com/gte/gte.html&quot;&gt;Generic Tile Engine&lt;/a&gt;), or anything else for me to study in the next one or two weeks till I come up to full speed on this. I'm already able to write simple GS/OS applications with a toolbar and such, and I'm getting better every day, but every single thing I can read at this point, helps a ton.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;-Chris&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Sun, 06 May 2007 17:30:14 -0400</pubDate>
			<guid>http://65816.com/week_one_assembling_the_dev.html</guid>
		</item>
		<item>
			<title>We Have A Pulse</title>
			<link>http://65816.com/we_have_a_pulse.html</link>
			<description>
&lt;div&gt;&lt;p&gt;Hello, and welcome to 65816.com. We're going to talk a lot about the Apple IIGS, and other matters of tangental interest, such as the Apple II family and retrocomputing. Let's start off by explaining the mission and ground rules for this site.&lt;/p&gt;
&lt;p&gt;&lt;br class=&quot;webkit-block-placeholder&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;I want to discuss programming and enhancing the Apple IIGS. That's it. I enjoyed programming it in the 1980s, and two decades later, I lack all budgetary, parental, and time constraints, and that's why I'm doing it now. That's right, now that this kid is all grown up, he's building the train set he always wanted, because he finally can. Okay, there are other reasons in there as well, such as the fact that I don't see how I'll ever turn one nickel of profit from this, thus making it a purely voluntary hobby activity, which is something I can really appreciate after years of contract programming for hire.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;This place isn't here to be a resource, but many of the sites in the &quot;Further Reading&quot; sidebar are. Here, it's just going to be pictures, musing, articles, source code... you get the picture. Maybe this site will be a footnote, maybe it will be something exciting. My aim isn't to sell ads or to be popular, I'm just trying to liven up the party a bit.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;-Chris&lt;/p&gt;
&lt;/div&gt;
			</description>
			<pubDate>Fri, 04 May 2007 15:12:14 -0400</pubDate>
			<guid>http://65816.com/we_have_a_pulse.html</guid>
		</item>
 	</channel>
</rss>

