<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Hack a Day &#187; retro</title>
	<atom:link href="http://hackaday.com/tag/retro/feed/" rel="self" type="application/rss+xml" />
	<link>http://hackaday.com</link>
	<description>Fresh hacks every day</description>
	<lastBuildDate>Fri, 10 Feb 2012 11:18:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='hackaday.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/5560f98f805877b0e332f191cb9e0af3?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Hack a Day &#187; retro</title>
		<link>http://hackaday.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://hackaday.com/osd.xml" title="Hack a Day" />
	<atom:link rel='hub' href='http://hackaday.com/?pushpress=hub'/>
		<item>
		<title>Retro-gaming wall art; it&#8217;s playable!</title>
		<link>http://hackaday.com/2011/09/22/retro-gaming-wall-art-its-playable/</link>
		<comments>http://hackaday.com/2011/09/22/retro-gaming-wall-art-its-playable/#comments</comments>
		<pubDate>Thu, 22 Sep 2011 15:21:47 +0000</pubDate>
		<dc:creator>Mike Szczys</dc:creator>
				<category><![CDATA[arduino hacks]]></category>
		<category><![CDATA[retro]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=56483</guid>
		<description><![CDATA[Here&#8217;s a wall hanging for the reception area that let&#8217;s your customers play retro games while they wait. To give you some sense of scale, the buttons to the right (labeled Start/Jump but we would call them A and B) are arcade buttons larger than traditional arcade buttons. The screen itself is a Samsung widescreen computer [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=56483&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-56486" title="retro-gaming-wall-art" src="http://hackadaycom.files.wordpress.com/2011/09/retro-gaming-wall-art1.jpg" alt="" width="470" height="285" /></p>
<p>Here&#8217;s a wall hanging for the reception area that <a href="http://www.house4hack.co.za/?p=333">let&#8217;s your customers play retro games while they wait</a>. To give you some sense of scale, the buttons to the right (labeled Start/Jump but we would call them A and B) are <del>arcade buttons</del> larger than traditional arcade buttons. The screen itself is a Samsung widescreen computer monitor &#8212; we&#8217;d wager that it&#8217;s <a href="http://www.samsung.com/ph/consumer/monitor-peripherals-printer/monitor/lcd-monitor/LS16CMYSFUXP/index.idx?pagetype=prd_detail">a 16&#8243; model</a> but we&#8217;re just guessing. It&#8217;s held in the wooden frame by a piece of angle bracket.</p>
<p>This is the product of a hack we looked at in June where <a href="http://hackaday.com/2011/06/26/digitized-retro-lcd-games-played-using-an-arduino-as-a-controller/">an Arduino was used to control digitized retro LCD games</a>. The same hardware is used, monitoring the buttons with the Arduino and using a Python script to translate them to keypresses on a computer. That means this isn&#8217;t a standalone, but needs a computer to run the game and feed the LCD monitor. Still, we love the look of it and hold out hope that this will someday migrate to FPGA control (they have not problem <a href="http://hackaday.com/2011/09/09/putting-laptop-lcds-to-use-with-an-fpga/">driving LCD screens</a>) with selectable games.</p>
<br />Filed under: <a href='http://hackaday.com/category/arduino-hacks/'>arduino hacks</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/56483/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/56483/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/56483/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/56483/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/56483/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/56483/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/56483/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/56483/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/56483/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/56483/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/56483/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/56483/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/56483/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/56483/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=56483&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2011/09/22/retro-gaming-wall-art-its-playable/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Mike Szczys</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2011/09/retro-gaming-wall-art1.jpg" medium="image">
			<media:title type="html">retro-gaming-wall-art</media:title>
		</media:content>
	</item>
		<item>
		<title>Androcade is a controller and stand in one</title>
		<link>http://hackaday.com/2011/06/30/androcade-is-a-controller-and-stand-in-one/</link>
		<comments>http://hackaday.com/2011/06/30/androcade-is-a-controller-and-stand-in-one/#comments</comments>
		<pubDate>Thu, 30 Jun 2011 22:01:55 +0000</pubDate>
		<dc:creator>Mike Szczys</dc:creator>
				<category><![CDATA[android hacks]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[bluetooth]]></category>
		<category><![CDATA[gaming]]></category>
		<category><![CDATA[mame]]></category>
		<category><![CDATA[retro]]></category>
		<category><![CDATA[stand]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=47638</guid>
		<description><![CDATA[We remember when retro-gaming required a lot of equipment and a serious time commitment to put together a gaming interface. [Scooter2084] proves that we&#8217;ve come a long way with this gaming controller built to complement Android hardware. It&#8217;s not immediately obvious from the image above, but the controller itself looks just like Andy the Android. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=47638&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-47639" title="androcade" src="http://hackadaycom.files.wordpress.com/2011/06/androcade.jpg" alt="" width="470" height="354" /></p>
<p>We remember when retro-gaming required a lot of equipment and a serious time commitment to put together a gaming interface. [Scooter2084] proves that we&#8217;ve come a long way with this <a href="http://silverballsoftware.com/androcade-android-arcade-controller-part-1">gaming controller built to complement Android hardware</a>.</p>
<p>It&#8217;s not immediately obvious from the image above, but the controller itself looks just like Andy the Android. His head is tilted upward and acts as the tablet stand, while his torso hosts the controls. We don&#8217;t the arms and legs have a functional use but they are necessary to complete the look.</p>
<p>Traditionally arcade controls have used a hacked gamepad, or dedicated hardware like the <a href="http://hackaday.com/2010/05/30/child-sized-cocktail-cabinets/">MAME cabinets that use iPac control boards</a>. But this rendition interfaces the joystick and four buttons using an Arduino. A Bluetooth shield lets you control the Android device wirelessly, and opens up the possibility to use this as a controller for laptop-based emulators and the like. Don&#8217;t miss the video after the break.</p>
<p><span id="more-47638"></span><span style="text-align:center; display: block;"><a href="http://hackaday.com/2011/06/30/androcade-is-a-controller-and-stand-in-one/"><img src="http://img.youtube.com/vi/4nhah_YujOM/2.jpg" alt="" /></a></span></p>
<br />Filed under: <a href='http://hackaday.com/category/android-hacks/'>android hacks</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/47638/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/47638/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/47638/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/47638/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/47638/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/47638/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/47638/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/47638/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/47638/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/47638/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/47638/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/47638/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/47638/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/47638/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=47638&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2011/06/30/androcade-is-a-controller-and-stand-in-one/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Mike Szczys</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2011/06/androcade.jpg" medium="image">
			<media:title type="html">androcade</media:title>
		</media:content>
	</item>
		<item>
		<title>Resurrecting the Optigan disc format</title>
		<link>http://hackaday.com/2011/05/16/resurrecting-the-optigan-disc-format/</link>
		<comments>http://hackaday.com/2011/05/16/resurrecting-the-optigan-disc-format/#comments</comments>
		<pubDate>Mon, 16 May 2011 14:44:30 +0000</pubDate>
		<dc:creator>Mike Nathan</dc:creator>
				<category><![CDATA[musical hacks]]></category>
		<category><![CDATA[midi]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[optigan]]></category>
		<category><![CDATA[orchestron]]></category>
		<category><![CDATA[retro]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=42914</guid>
		<description><![CDATA[The Optigan and Orchestron were a pair of electronic organs built by Mattel in the 1970s which used swappable optical discs to store instrument information. The discs can still be found today, but the organs are extremely scarce, much to [Gan’s] dismay. After researching the organs for a bit, he decided he could probably build [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=42914&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-42934" title="optigan" src="http://hackadaycom.files.wordpress.com/2011/05/optigan.jpg" alt="optigan" width="470" height="257" /></p>
<p>The Optigan and Orchestron were a pair of electronic organs built by Mattel in the 1970s which used swappable optical discs to store instrument information. The discs can still be found today, but the organs are extremely scarce, much to [Gan’s] dismay. After researching the organs for a bit, he decided he could probably <a href="http://gaje.jp/projects/synth_effect/optical_organ_e/" target="_blank">build his own MIDI-compatible interface</a> for the audio discs.</p>
<p>The discs have audio waveform data printed on them, which can be read using an LED on one side of the disc and an optical transistor on another. After successfully prototyping a reader that could interpret one of the disc&#8217;s audio tracks, he constructed a device to read all of the tracks simultaneously, just like the original organs.</p>
<p>His makeshift turntable was constructed on top of an old record player using acrylic discs and toy car wheels to keep things steady. Once the disc is placed on the turntable, he sets his reader in place, and via some custom circuitry, he is able to play the discs using his much more modern keyboard. It sounds pretty decent as you can see in the video below, though he does admit he would like to tweak a few things to make it sound even better.</p>
<p>[thanks Bryan]</p>
<p><span id="more-42914"></span><span style="text-align:center; display: block;"><a href="http://hackaday.com/2011/05/16/resurrecting-the-optigan-disc-format/"><img src="http://img.youtube.com/vi/KmP-BKYvPzg/2.jpg" alt="" /></a></span></p>
<br />Filed under: <a href='http://hackaday.com/category/musical-hacks/'>musical hacks</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/42914/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/42914/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/42914/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/42914/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/42914/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/42914/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/42914/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/42914/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/42914/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/42914/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/42914/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/42914/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/42914/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/42914/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=42914&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2011/05/16/resurrecting-the-optigan-disc-format/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">mikenathanathackaday</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2011/05/optigan.jpg" medium="image">
			<media:title type="html">optigan</media:title>
		</media:content>
	</item>
		<item>
		<title>Mini LED message board built from retro displays</title>
		<link>http://hackaday.com/2011/04/24/mini-led-message-board-built-from-retro-displays/</link>
		<comments>http://hackaday.com/2011/04/24/mini-led-message-board-built-from-retro-displays/#comments</comments>
		<pubDate>Sun, 24 Apr 2011 14:06:49 +0000</pubDate>
		<dc:creator>Mike Nathan</dc:creator>
				<category><![CDATA[arduino hacks]]></category>
		<category><![CDATA[led hacks]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[display]]></category>
		<category><![CDATA[led]]></category>
		<category><![CDATA[retro]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=41276</guid>
		<description><![CDATA[[Iain] is getting to the point in his life where he finds himself waxing nostalgic about various different technologies from his youth. One item he has always been fond of is first generation 7 segment consumer LED displays, like those found in old calculators. He was excited to find one of these displays at the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=41276&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-41280" title="personal_electronic_retro_telegram" src="http://hackadaycom.files.wordpress.com/2011/04/personal_electronic_retro_telegram.jpg" alt="personal_electronic_retro_telegram" width="470" height="284" /></p>
<p>[Iain] is getting to the point in his life where he finds himself waxing nostalgic about various different technologies from his youth. One item he has always been fond of is first generation 7 segment consumer LED displays, like those found in old calculators.</p>
<p>He was excited to find one of these displays at the bottom of a box full of electronics odds and ends he received from a friend. After identifying the display and tracking down a data sheet online, <a href="http://www.lushprojects.com/pert/" target="_blank">he decided that he wanted to build some sort of little gadget out of it</a>.</p>
<p>His first inclination was to build a tiny text scrolling gadget from the display, and thus his “Personal Electronic Retro Telegram” (P.E.R.T) was born. With Arduino in hand, he prototyped the circuit on a breadboard, then sent away to have some PCBs built. Once he received the boards, alll of his prototyping components were swapped out with SMD versions, including a TQFP ATMega168 chip in place of the full-sized Arduino board.</p>
<p>The final result is a nice melding old and new technology which he decided to give to his girlfriend as a gift. Continue reading to see a quick video of the P.E.R.T in action.</p>
<p><span id="more-41276"></span><object type="application/x-shockwave-flash" width="470" height="300" data="http://www.flickr.com/apps/video/stewart.swf?v=1.161" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"> <param name="flashvars" value="photo_id=5632026533&amp;photo_secret=0&amp;flickr_show_info_box=true"></param><param name="movie" value="http://www.flickr.com/apps/video/stewart.swf?v=1.161"></param><param name="bgcolor" value="#000000"></param><param name="allowFullScreen" value="true"></param><param name="wmode" value="opaque"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/video/stewart.swf?v=1.161" bgcolor="#000000" allowfullscreen="true" flashvars="photo_id=5632026533&amp;photo_secret=0&amp;flickr_show_info_box=true" wmode="opaque" height="300" width="470"></embed></object></p>
<br />Filed under: <a href='http://hackaday.com/category/arduino-hacks/'>arduino hacks</a>, <a href='http://hackaday.com/category/led-hacks/'>led hacks</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/41276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/41276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/41276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/41276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/41276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/41276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/41276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/41276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/41276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/41276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/41276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/41276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/41276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/41276/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=41276&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2011/04/24/mini-led-message-board-built-from-retro-displays/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">mikenathanathackaday</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2011/04/personal_electronic_retro_telegram.jpg" medium="image">
			<media:title type="html">personal_electronic_retro_telegram</media:title>
		</media:content>
	</item>
		<item>
		<title>Apple II Weather Display (part 3)</title>
		<link>http://hackaday.com/2011/04/20/apple-ii-weather-display-part-3/</link>
		<comments>http://hackaday.com/2011/04/20/apple-ii-weather-display-part-3/#comments</comments>
		<pubDate>Wed, 20 Apr 2011 13:02:13 +0000</pubDate>
		<dc:creator>Kevin Dady</dc:creator>
				<category><![CDATA[misc hacks]]></category>
		<category><![CDATA[software hacks]]></category>
		<category><![CDATA[apple II]]></category>
		<category><![CDATA[retro]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=40747</guid>
		<description><![CDATA[In parts 1 and 2, I discussed the important parts of what is going on the PC side with lua. While not 110% detailed I hope it gave you an idea on how the data is processed so the Apple II computer could quickly digest it. Now its time to see what happens at the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=40747&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-40771" title="Exif JPEG" src="http://hackadaycom.files.wordpress.com/2011/04/apple21.jpg" alt="" width="470" height="176" /></p>
<p>In parts 1 and 2, I discussed the important parts of what is going on the PC side with lua. While not 110% detailed I hope it gave you an idea on how the data is processed so the Apple II computer could quickly digest it. Now its time to see what happens at the other end of the serial cable. I am using basic, but its not 100% off the rom Applesoft basic, that would be even slower, so I am using a compiler and a fast graphics driver. Both are from &#8220;The Beagle Compiler&#8221; which was produced by the ever awesome Beagle Bro&#8217;s software company, and though still under copyright, the publishers have given permission for use of their software (within reason I don&#8217;t think you will get very far selling it).</p>
<p><span id="more-40747"></span></p>
<p>Beagle Compiler does not crunch down to machine code like others, so it has a bit of overhead, but I choose it because it has some interesting add-ons like fast hplot (quick drawing), input anything (by default basic will only accept alphanumeric input), and memory drivers for 128K or more machines, all I thought I might need. The final version does not need extra input because all data being sent to the computer is alphanumeric, but I did use fast hplot, which doubles the speed that the computer can draw individual pixels, and one of the memory managers.</p>
<p>On the disk there are 2 COM programs, which are compiled basic scripts, one is STARTUP the other is CLIENT.  STARTUP is the first program prodos run when you start a disk and it just does some basic startup tasks.</p>
<p><pre class="brush: vb;">
REM LOAD THE FAST GRAPHICS ROUTINE
11 PRINT CHR$(4)&quot;BLOAD FAST.HPLOT&quot;
REM YAP
12 HOME:VTAB 3
13 PRINT &quot; Please type in IN#n (where n = the ssc&quot;
14 PRINT &quot; slot number, then hold control hit A, &quot;
15 PRINT &quot; and type in 7B (600 baud) at the SSC&quot;
16 PRINT &quot; or ? prompt.&quot; :PRINT &quot;&quot;
17 PRINT &quot; (you may or may not need to press&quot;
18 PRINT &quot; return depending on model)&quot;:PRINT &quot;&quot;
19 PRINT &quot; Then type the following to run &quot;:PRINT &quot;&quot;
20 PRINT &quot; -CLIENT&quot;
</pre></p>
<p>As you can see it loads the FAST.HPLOT program, its a binary program so I BLOAD it (binary load), in order to do that we have to PRINT a (ctrl +D) to tell the interpreter that this is  a dos command, then the command we want.</p>
<p>Line 12 clears the Apples current text screen and puts the prompt at the top of the screen, VTAB 3 just bumps the cursor down 3 lines.</p>
<p>Then we have some instructions, this could / should be able to be done automatically, and I remember doing it as a kid with my apple IIe, but no matter what I tried on my current //c I could not get the darn serial port set up via script. I figured if I did ever get it to work, it would be so funky that no other Apple&#8217;s would automatically set the serial port, so you have to do it manually.</p>
<p>Next, and more importantly is the CLIENT program</p>
<p><pre class="brush: vb;">

REM STARTUP 0-6
REM ENTER HIGH RES PAGE ONE AND TURN OFF THE 4 LINE TEXT DISPLAY
REM PAGE 2, NORMALLY FULL SCREEN, IS OCCUPIED AND I DONT FEEL
REM LIKE MESSING WITH MOVING STUFF AROUND IN MEMORY
0 HGR:POKE -16302,0
REM LOAD SPLASH SCREEN BINARY INTO HIGH RES PAGE 1 MEMORY
2 PRINT CHR$(4)&quot;BLOAD SPLASH.HGR,A$2000&quot;
REM DELAY
4 FOR I = 0 TO 30000
6 NEXT

REM MAKE A PALETTE 10-12
10 DIM CL(5): CL(1) = 0:CL(2) = 5
12 CL(3) = 2:CL(4) = 1:CL(5) = 6

REM CLEAR HIGH RES GRAPHICS PAGE 1 100-105
100 HGR:POKE -16302,0:HCOLOR = 7
102 FOR Y = 0 TO 138 STEP 2
104 HPLOT 0,Y TO 140,Y
105 NEXT

REM TEMP AND ALERT TEXT GRAPHICS INPUT DECODING 110-125
110 FOR Y = 0 TO 137
112 TB = 140:INPUT TS$
114 FOR X = 1 TO LEN(TS$)
REM CHARACTER --&gt; ASCII VALUE
116 TC$ = MID$(TS$,X,1):TA = ASC(TC$)
REM IF NEW CODE BLOCK
118 IF TC$ = &quot;b&quot; THEN TB = TB + 35
REM DRAW PIXEL
120 IF (TA &lt; 65) AND (TA &gt;= 49) THEN HPLOT((TA - 48) + TB), Y
122 IF (TA &gt;= 65) AND (TA &lt;= 90) THEN HPLOT((TA - 55) + TB),Y
124 NEXT X:NEXT Y

REM BOTTOM TEXT GRAPHICS INPUT DECODING 130-144
130 FOR Y = 139 TO 191
132 BB = 0:INPUT BS$
134 FOR X = 1 TO LEN(BS$)
REM CHARACTER --&gt; ASCII VALUE
136 BC$ = MID$(BS$,X,1):BA = ASC(BC$)
REM IF NEW CODE BLOCK
138 IF BC$ = &quot;b&quot; THEN BB = BB + 35
REM DRAW PIXEL
140 IF (BA &lt; 65) AND (BA &gt;= 49) THEN HPLOT((BA - 48) + BB), Y
142 IF (BA &gt;= 65) AND (BA &lt;= 90) THEN HPLOT((BA - 55) + BB),Y
144 NEXT X:NEXT Y

REM RADAR GRAPHICS INPUT DECODING 150-166
150 FOR C = 1 TO 5:HCOLOR = CL(C)
152 FOR Y = 0 TO 138 STEP 2
154 RB = 0:INPUT RS$
156 FOR X = 1 TO LEN(RS$)
REM CHARACTER --&gt; ASCII VALUE
158 RC$ = MID$(RS$,X,1):RA = ASC(RC$)
REM IF NEW CODE BLOCK
160 IF RC$ = &quot;b&quot; THEN RB = RB + 35
REM DRAW PIXEL
162 IF (RA &lt; 65) AND (RA &gt;= 49) THEN HPLOT((RA - 48) + RB), Y
164 IF (RA &gt;= 65) AND (RA &lt;= 90) THEN HPLOT((RA - 55) + RB),Y
166 NEXT X:NEXT Y:NEXT C

REM WAIT FOR UPDATE LOOP
200 INPUT UD$
210 IF UD$ = &quot;update&quot; THEN GOTO 100
220 GOTO 200

</pre></p>
<p>Which has much more meat to it. Starting at the top I have (HGR:POKE -16302,0).  The HGR command clears and sends the apple into High GRapichs mode 1. Mode 1 goes to memory page 1 (there are 2 total for 80 column text or High res graphics) and sets the display to 280&#215;160 with 4 lines of text at the bottom. As already stated I dont want the four lines of text so I POKE location -16302,0 to turn that off.</p>
<p>Maybe someone out there is saying to themselves right now &#8220;why didnt he use HGR2?&#8221; HGR2 (mode 2) defaults to the second page and is full screen by default, but I didn&#8217;t want to use it because there is no dedicated video memory on the Apple II, and something was already using that memory space, so it seemed simpler to just use screen 1 and poke it to be full screen, rather than moving every darn thing around in memory just to free up HGR2.</p>
<p>Next I load the lovely splash screen with Hack A Day&#8217;s and Weather Underground&#8217;s logos. This image was made in the gimp, converted by an older junkier <a href="http://groups.google.com/group/comp.sys.apple2/browse_thread/thread/b442f9ba563e74f6/c5f0e4f16d4373a6">image converter script I made </a>and dumped into an emulator running at 10X speed. Once the image is drawn on the emulator I <a href="http://en.wikipedia.org/wiki/BSAVE_%28graphics_image_format%29">BSAVEd </a>it to disk, now in the client script I am just copying that data back into video memory producing the image. There is no time reference for basic so there is just an empty loop to delay the splash screen for a few seconds.</p>
<p>Oddly enough for a machine that has a grand total of 6 unique colors in high resolution graphics, I need to make a palette. The colors on an Apple II are not lined up with the way I want them, and I am not sending it in exact color order either. DIM is dimensioning an array, and the values that follow are the apple color values we want to use and in the order we want them, nice and neat for a loop.</p>
<p>The rest of the script just repeats itself depending on which image is next, first is the tempature and storm advisory graphic(s), its 2 files on the pc side but since they are the same width and going in the same block of the screen I lumped them together as a single image right before it goes to the serial port. Variables are similar to every other Microsoft based 8 bit basic in only the first two characters of a variable is its name, so while you could name everything in nice descriptive words, your going to run into clashes quick.</p>
<p>I loop though each line of the graphic, waiting for input from the serial port each time. each character in the line gets read with the MID function (its like substring) and I also grab each character&#8217;s ASCII value using the ASC function. If the character is a &#8220;b&#8221; then add 35 to the current block counter (TB, BB, or RB for temp, bottom, or radar block).</p>
<p>If the character&#8217;s ASCII value is less than 65 but at least 49 then its a number 1-9 so we can just take it at face value, plot the point and move on. If the character&#8217;s ASCII value is between 65 and 90 that means its an upper case letter (and here is a <a href="http://www.downloads.reactivemicro.com/Public/Apple%20II%20Items/Documentation/Books/Beagle%20Brothers%20-%20Colors%20and%20ASCII%20Values.png">chart</a> btw). I take the ascii value and subtract 55 from it, 65 &#8211; 55 = 10, A is the 10th character in my graphics key and ASCII value 65 and so on. Now I can plot the point.</p>
<p>Radar is exactly the same thing but its wrapped up in a 5 count loop to change the color after one color of the image has been drawn. Its Y counter also advances 2 steps, since we only have the even lines if I did not &#8220;STEP 2&#8243; the image would be squashed, now it just has the odd lines replaced with black.</p>
<p>Final thoughts: I had a lot of fun writing kludgey bad code, and it does function though very slowly. I wish I knew more about Apple II programming, but all the years I have spent on the thing, its just now coming up as a hobby. Maybe one day soon Ill be laughing at this while coding furiously in C to make an awesome video game or demo, but its kind of low on my list. The Apple II is one of my favorite little computers and it will continue to remain on my desk for quite a while, if you have the means and like retro computers, the Apple II is plentiful and surprising.</p>
<p>Pitfalls and problems:</p>
<p>It took for-freakin-ever for me to settle on a graphics format, even worse I wrote and tested 5 of them. RLE, binary, high ascii, XPM decoding on the apple and finally base 36.</p>
<p>I probably spent 3 evenings trying to get the stupid serial port working via BASIC script, as you can see that never worked out.</p>
<p>Wasted 2 nights poking all sorts of mad stuff into the Apple trying to kick over its color killer circuit, just to find out it was my tv tuner application not switching from NTSC to RS170 when changing from graphics to text (with the color burst signal enabled during text mode you cant read ANYTHING)</p>
<p>My computer died! Yea at the start I disabled my bench pc cause my wifes machine popped its power supply, well my machine also got a little bit of it cause I was just sitting there writing (probably graphics code) and the computer shuts off. Long story short, at like 11pm on a work night I am switching out a motherboard, and my 2.8ghz dual core can go from room temperature to over 100C in less than 10 seconds!</p>
<p>I think the last big fiasco was for the video, other than the durn cat bumping the camera a couple times, I had spend a couple hours getting everything onto my &#8220;craptop&#8221; and set up in the living room. After doing some test shots, fiddling with lighting  its now like 10PM on a work night and I am ready to go &#8230; except I did not have the graphic for the splash screen on the Apple II disk. Lucky for me I could not find my USB drive (both were at work) and that afternoon I had just sold my WIFI card to a co worker as I had an internal one on the way. So yea I burned a 8k file onto a cd rom, hurried to patch the basic script, get it sent over and working correctly, and ended up cleaning the living room at like 2AM.</p>
<p>Oh well it was fun.</p>
<p><a href="http://hackaday.com/2011/04/19/apple-ii-weather-display-part-2/">Part 2</a> and <a href="http://hackaday.com/2011/04/18/apple-ii-weather-display-part-1/">part 1</a> can be found here.</p>
<br />Filed under: <a href='http://hackaday.com/category/misc-hacks/'>misc hacks</a>, <a href='http://hackaday.com/category/software-hacks/'>software hacks</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/40747/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/40747/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/40747/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/40747/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/40747/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/40747/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/40747/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/40747/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/40747/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/40747/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/40747/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/40747/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/40747/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/40747/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=40747&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2011/04/20/apple-ii-weather-display-part-3/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">osgeld</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2011/04/apple21.jpg" medium="image">
			<media:title type="html">Exif JPEG</media:title>
		</media:content>
	</item>
		<item>
		<title>Apple II Weather Display (part 2)</title>
		<link>http://hackaday.com/2011/04/19/apple-ii-weather-display-part-2/</link>
		<comments>http://hackaday.com/2011/04/19/apple-ii-weather-display-part-2/#comments</comments>
		<pubDate>Tue, 19 Apr 2011 15:01:34 +0000</pubDate>
		<dc:creator>Kevin Dady</dc:creator>
				<category><![CDATA[misc hacks]]></category>
		<category><![CDATA[software hacks]]></category>
		<category><![CDATA[apple II]]></category>
		<category><![CDATA[retro]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=40729</guid>
		<description><![CDATA[In part one of the Apple II weather display I quickly went over how data is fetched and phrased. Now its time to do something with it in part 2. In the order of functions I do the text parts first, and though its very similar to the process that the radar image goes through, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=40729&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-40771" title="Exif JPEG" src="http://hackadaycom.files.wordpress.com/2011/04/apple21.jpg" alt="" width="470" height="176" /></p>
<p>In part one of the Apple II weather display I quickly went over how data is fetched and phrased. Now its time to do something with it in part 2. In the order of functions I do the text parts first, and though its very similar to the process that the radar image goes through, its in monochrome and a bit simpler to explain. Before I go into how it works I should explain how I am dividing the Apple II&#8217;s screen.</p>
<p><span id="more-40729"></span></p>
<p>The high resolution mode on an Apple II gives you 280&#215;160 with 4 lines of text on the bottom, or 280&#215;192 full screen. I will be using 280&#215;192 full screen, because as useful as the text can be, it also would show the endless stream of gibberish while updating, and since the entire color video mode of the Apple II design is a NTSC hack, its not all that pretty on a standard TV while also displaying color graphics. I also divide the screen into &#8220;blocks&#8221; 35 pixels wide each, this came about due to my encoding system.</p>
<p>Without getting into high ASCII or special characters I decided to use a base 36 type numbering system, we only need 35 unique characters to represent any pixel on a line within a block. The value of 1 means the first pixel in a given block and so on to Z being pixel number 35 in a block, and up to 8 blocks for the entire screen. Block separators and other functions can be sent using lower case characters, making a nice n easy plain text system. For example, if the apple received bbb123Z it means skip to block 4 and place a pixel at 1,2,3, and 35 within that block (and if there is no pixels at all for that given line a n is sent).</p>
<p>Looking at text.lua &#8230;</p>
<p><pre class="brush: coldfusion;">
-- Weather Underground to Apple //
-- 2011 Kevin Dady
--
-- Text to Graphics:
-- take text from web.data
-- make text images with image magick
-- phrase *.xpm files to apple //
-- send text images
-- end
text = {}
text.data = {}
text.data.input  = {}
text.data.packed = {{},{},{},{}}
text.data.apl2   = {{},{},{}}

text.createIMG = function()
if web.data[1] == nil then
web.data[1] = &quot;No Advisories&quot;
end
if web.data[3] == nil then
web.data[3] = web.data[7]
end
-- create the bottom text
cmd.imageMGK(&quot; -background black -fill white -font req/VeraMoBd.ttf&quot;..
&quot; -dither none -map req/mono.xpm -size 279x53 -pointsize 11 -gravity West&quot;..
&quot; caption:'&quot;.. web.data[2]..&quot;\n&quot;..web.data[6]..&quot;\n&quot;..web.data[5]..&quot;\n&quot;..web.data[3].. &quot;'&quot;..
&quot; temp/textBTM.xpm&quot;)
-- create the text for advisories
cmd.imageMGK(&quot; -background black -fill white -font req/VeraMoBd.ttf&quot;..
&quot; -dither none -map req/mono.xpm -size 139x64 -pointsize 11 -gravity Center&quot;..
&quot; caption:'&quot;.. web.data[1]..&quot;'&quot;..
&quot; temp/textALT.xpm&quot;)
-- create the text for temperature
cmd.imageMGK(&quot; -background black -fill white -font req/VeraMoBd.ttf&quot;..
&quot; -dither none -map req/mono.xpm -size 139x74 -pointsize 36 -gravity Center&quot;..
&quot; caption:'&quot;.. web.data[4]..&quot;'&quot;..
&quot; temp/textTMP.xpm&quot;)
end

text.convertIMG = function()
local files  = {&quot;textTMP.xpm&quot;,&quot;textALT.xpm&quot;,&quot;textBTM.xpm&quot;}
local footer = {82,72,61}
local width  = {140,140,280}
-- read the files into a table one at a time
for img = 1, 3 do
local file = io.open(&quot;temp/&quot;.. files[img],&quot;r&quot;)
table.insert(text.data.input, img, {})
for line in file:lines() do
table.insert(text.data.input[img], tostring(line))
end
file:close()
-- remove header
for y = 1, 7 do
table.remove(text.data.input[img], 1)
end
-- remove footer
table.remove(text.data.input[img], footer[img] - 7)
-- remove non pixel data
for y = 1, #text.data.input[img] do
text.data.input[img][y] = string.sub(text.data.input[img][y], 2, width[img])
end
end
end

text.sortIMG = function()
local newChar = &quot;&quot;
for img = 1, 3 do
-- need to convert the strings into tables
for y = 1, #text.data.input[img] do
table.insert(text.data.apl2[img], {})
-- for each column in the current row
for x = 1, #text.data.input[img][y] do
-- read the character at that Y,X point
newChar = string.sub(text.data.input[img][y], x,x)
if newChar == &quot;.&quot; then
table.insert(text.data.apl2[img][y], x) -- pixel
end
end
end
end
end

text.packageIMG = function()
for img = 1, 2 do
for y = 1, #text.data.input[img] do
local one   = &quot;&quot;
local two   = &quot;&quot;
local three = &quot;&quot;
local four  = &quot;&quot;
for x = 1, #text.data.apl2[img][y] do
if text.data.apl2[img][y][x] &lt;= 35 then
one = one .. string.sub(graphicsKey, text.data.apl2[img][y][x], text.data.apl2[img][y][x])
elseif text.data.apl2[img][y][x] &lt;= 70 then
two = two .. string.sub(graphicsKey, text.data.apl2[img][y][x] - 35, text.data.apl2[img][y][x] - 35)
elseif text.data.apl2[img][y][x] &lt;= 105 then
three = three .. string.sub(graphicsKey, text.data.apl2[img][y][x] - 70, text.data.apl2[img][y][x] - 70)
else
four = four .. string.sub(graphicsKey, text.data.apl2[img][y][x] - 105, text.data.apl2[img][y][x] - 105)
end
end
if one == &quot;&quot; and two == &quot;&quot; and three == &quot;&quot; and four == &quot;&quot; then
table.insert(text.data.packed[img], &quot;n&quot;)
else table.insert(text.data.packed[img],one..&quot;b&quot;..two..&quot;b&quot;..three..&quot;b&quot;..four)
end
end
end
for y = 1, #text.data.input[3] do
local one   = &quot;&quot;
local two   = &quot;&quot;
local three = &quot;&quot;
local four  = &quot;&quot;
local five  = &quot;&quot;
local six   = &quot;&quot;
local seven = &quot;&quot;
local eight = &quot;&quot;
for x = 1, #text.data.apl2[3][y] do
if text.data.apl2[3][y][x] &lt;= 35 then
one = one .. string.sub(graphicsKey, text.data.apl2[3][y][x], text.data.apl2[3][y][x])
elseif text.data.apl2[3][y][x] &lt;= 70 then
two = two .. string.sub(graphicsKey, text.data.apl2[3][y][x] - 35, text.data.apl2[3][y][x] - 35)
elseif text.data.apl2[3][y][x] &lt;= 105 then
three = three .. string.sub(graphicsKey, text.data.apl2[3][y][x] - 70, text.data.apl2[3][y][x] - 70)
elseif text.data.apl2[3][y][x] &lt;= 140 then
four = four .. string.sub(graphicsKey, text.data.apl2[3][y][x] - 105, text.data.apl2[3][y][x] - 105)
elseif text.data.apl2[3][y][x] &lt;=175 then
five = five .. string.sub(graphicsKey, text.data.apl2[3][y][x] - 140, text.data.apl2[3][y][x] -140)
elseif text.data.apl2[3][y][x] &lt;= 210 then
six = six .. string.sub(graphicsKey, text.data.apl2[3][y][x] - 175, text.data.apl2[3][y][x] - 175)
elseif text.data.apl2[3][y][x] &lt;= 245 then
seven = seven .. string.sub(graphicsKey, text.data.apl2[3][y][x] - 210, text.data.apl2[3][y][x] - 210)
else
eight = eight .. string.sub(graphicsKey, text.data.apl2[3][y][x] - 245, text.data.apl2[3][y][x] - 245)
end
end
if one == &quot;&quot; and two == &quot;&quot; and three == &quot;&quot; and four == &quot;&quot; and five == &quot;&quot; and six == &quot;&quot; and seven == &quot;&quot; and eight == &quot;&quot; then
table.insert(text.data.packed[3], &quot;n&quot;)
else table.insert(text.data.packed[3],one..&quot;b&quot;..two..&quot;b&quot;..three..&quot;b&quot;..four..&quot;b&quot;..five..&quot;b&quot;..six..&quot;b&quot;..seven..&quot;b&quot;..eight)
end
end
end

text.sendIMG = function()
for img = 1, 3 do
for y = 1, #text.data.packed[img] do
cmd.sjinn(text.data.packed[img][y])
end
cmd.sleep(2)
end
end
</pre></p>
<p>I start off in text.createIMG() by checking a couple things, One if there is any advisories, and if not place a No Advisories tag, Second looking for &#8220;windchill&#8221;, there is not always a &#8220;windchill&#8221; and if not place &#8220;dew point&#8221; in its place so we don&#8217;t have any blank lines. once were good to go we send the script off to imagemagick to make 3 graphics that contain black and white text. one for the long text at the bottom, one for advisories, and one for temperature.</p>
<p>text.convertIMG() reads the XPM files generated by imagemagick and does some cleanup. It starts by chopping the header and footer off of the image file, and removes the line formatting from each line of the image.</p>
<p>text.sortIMG() takes the leftover string data and scans each character in each line, in this case a white pixel is represented by a &#8220;.&#8221; (period) and a black pixel (which we don&#8217;t care about) is represented by a &#8221; &#8221; (space). Each time a period is found its x position is added to the end of a table. By the end of the image we are left with a table that has a subtable for each line, and contains X values for each pixel in each line, for example:</p>
<p>data= {}</p>
<p>data[1] = {1,2,12,80}</p>
<p>data[2] = {140,143,144,150}</p>
<p>There are 3 images to process, and they are different sizes, though how tall they are does not really matter to my script, its the width we are concerned about. text.packageIMG() reads each image and divides them up into blocks, the temperature text and advisory text are both 140 pixels wide and consume 4,  35 pixel blocks, so each value in each line is read out of our tables above and have some basic math done on them. If a value is greater than 35 for example then its block 2, the value has 35 subtracted from it and that is our block value (36 &#8211; 35 = block 2 pixel 1) . The bottom text is the widest graphic, taking up the entire width of the screen, but its just the same thing just spread over 8 blocks. Once we have our blocks as encoded strings they are packed into a single string per line of the image with &#8220;b&#8221; separating each block.</p>
<p>radar.lua does pretty much the same thing, except instead of making graphics it dithers the radar image downloaded earlier.</p>
<p><pre class="brush: coldfusion;">
-- Weather Underground to Apple //
-- 2011 Kevin Dady
--
-- Radar processing:
-- feed jpeg to image magick
-- phrase output.xpm to color tables
-- package for apple //
-- send radar

radar = {}

radar.data = {}
radar.data.input  = {}  -- raw file data table dump
radar.data.packed = {}  -- packed apple data
radar.data.apl2 = {{},{},{},{},{},{}} -- black, green, violet, orange, blue, white

radar.img = {}
radar.img.header = 11 -- xpm file header # of lines
radar.img.w = 141
radar.img.h = 141

radar.convertIMG = function()

cmd.imageMGK(&quot; temp/radar.jpg -level 0%,70%,1 -dither none -map req/apple.xpm temp/output.xpm&quot;)
-- read the file into a table
local file = io.open(&quot;temp/output.xpm&quot;,&quot;r&quot;)
for line in file:lines() do
table.insert(radar.data.input, tostring(line))
end
file:close()

-- remove header
for i = 1, radar.img.header do -- hardcode
table.remove(radar.data.input, 1)
end

-- remove footer
table.remove(radar.data.input, radar.img.w)

-- remove non color data
for i = 1, #radar.data.input do
radar.data.input[i] = string.sub(radar.data.input[i], 2, radar.img.h)
end
-- only deal with odd rows, due to the even / odd, bit / line, funny way apple 2's display highres colors.
-- if we leave them all in the image there is a gret chance of 2 colors phasing into another,
-- since we are going to loose pixel resolution anyway, we can cut that down some by deleting every other line
-- giving 140x70 also making transfer size smaller.
local keep ={}
for i = 1, #radar.data.input do
if (i % 2) == 1 then table.insert(keep, radar.data.input[i]) end
end
radar.data.input = keep
end

-- &quot; &quot; = 0 Apple color black (1)
-- &quot;X&quot; = 1 Apple color green
-- &quot;o&quot; = 2 Apple color violet
-- &quot;.&quot; = 5 Apple color orange
-- &quot;O&quot; = 6 Apple color blue
-- &quot;+&quot; = 7 Apple color white (2)

radar.sortIMG = function()
local newChar = &quot;&quot;
-- need to convert the strings into tables
for y = 1, #radar.data.input do
-- add a new &quot;line&quot; string to each color table
for color = 1, 6 do
table.insert(radar.data.apl2[color], {})
end
-- for each column in the current row
for x = 1, #radar.data.input[y] do
-- read the character at that Y,X point
newChar = string.sub(radar.data.input[y], x,x)
-- assign each character a individual table value
if newChar == &quot; &quot; then table.insert(radar.data.apl2[1][y], x) -- black
elseif newChar == &quot;X&quot; then table.insert(radar.data.apl2[4][y], x) -- GREEN
elseif newChar == &quot;o&quot; then table.insert(radar.data.apl2[3][y], x) -- violet
elseif newChar == &quot;.&quot; then table.insert(radar.data.apl2[2][y], x) -- ORANGE
elseif newChar == &quot;O&quot; then table.insert(radar.data.apl2[5][y], x) -- blue
elseif newChar == &quot;+&quot; then table.insert(radar.data.apl2[6][y], x) -- white
end
end
end
end

radar.packageIMG = function()
for color = 1, 5 do    -- ignore white, white takes a long time to draw since it makes up most of the graphic
for y = 1, #radar.data.apl2[color] do
local one   = &quot;&quot;
local two   = &quot;&quot;
local three = &quot;&quot;
local four  = &quot;&quot;
for x = 1, #radar.data.apl2[color][y] do
if radar.data.apl2[color][y][x] &lt;= 35 then
one = one .. string.sub(graphicsKey, radar.data.apl2[color][y][x], radar.data.apl2[color][y][x])
elseif radar.data.apl2[color][y][x] &lt;= 70 then
two = two .. string.sub(graphicsKey, radar.data.apl2[color][y][x] - 35, radar.data.apl2[color][y][x] - 35)
elseif radar.data.apl2[color][y][x] &lt;= 105 then
three = three .. string.sub(graphicsKey, radar.data.apl2[color][y][x] - 70, radar.data.apl2[color][y][x] - 70)
else
four = four .. string.sub(graphicsKey, radar.data.apl2[color][y][x] - 105, radar.data.apl2[color][y][x] - 105)
end
end

if one == &quot;&quot; and two == &quot;&quot; and three == &quot;&quot; and four == &quot;&quot; then
table.insert(radar.data.packed, &quot;n&quot;)
else table.insert(radar.data.packed,one..&quot;b&quot;..two..&quot;b&quot;..three..&quot;b&quot;..four)
end
end
end
end

radar.send = function()
for line = 1, 350 do
cmd.sjinn(radar.data.packed[line])
end
end
</pre></p>
<p>Imagemagick is used to dither the radar image to 6 of the 8 &#8220;available&#8221; colors, the Apple II only has 6 unique colors in high resolution mode, and the other 2 are black 2 and white 2. This has to do with how the apple does color, I mentioned earlier that its a hack, which basically uses bit patterns and the phase of the color burst to generate different colors. The end effect is always interesting as you can never place a specific color on each and every location on each and every line.</p>
<p>In order to help cut down on artifacts between lines and to cut the data transfer in half I then only use the even lines of the image, which yea reduces my radar resolution from 140&#215;140 to 140&#215;70 but due to the above mentioned wonkyness of the Apple&#8217;s video system I would have lost most of that resolution anyway.</p>
<p>The output XPM file has its header, footer and line formatting removed and each color is split up into individual tables, from there the process is the same, reading each monochrome image, packing it into block defined lines and packed up for the Apple to consume. I ignore white and just draw that on the screen as it makes up most of the image, saving time, and the end data is 5 copies of the image line / block encoded, each acting as a mask for its unique color.</p>
<p>For the most part were done looking at the lua scripts, so join me for part 3 (the end) where we will explore the software the apple II uses.</p>
<p><a href="http://hackaday.com/2011/04/18/apple-ii-weather-display-part-1/">Part 1</a> and <a href="http://hackaday.com/2011/04/20/apple-ii-weather-display-part-3/">Part 3</a> are also available.</p>
<br />Filed under: <a href='http://hackaday.com/category/misc-hacks/'>misc hacks</a>, <a href='http://hackaday.com/category/software-hacks/'>software hacks</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/40729/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/40729/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/40729/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/40729/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/40729/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/40729/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/40729/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/40729/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/40729/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/40729/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/40729/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/40729/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/40729/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/40729/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=40729&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2011/04/19/apple-ii-weather-display-part-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">osgeld</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2011/04/apple21.jpg" medium="image">
			<media:title type="html">Exif JPEG</media:title>
		</media:content>
	</item>
		<item>
		<title>Apple II Weather Display (part 1)</title>
		<link>http://hackaday.com/2011/04/18/apple-ii-weather-display-part-1/</link>
		<comments>http://hackaday.com/2011/04/18/apple-ii-weather-display-part-1/#comments</comments>
		<pubDate>Mon, 18 Apr 2011 11:16:54 +0000</pubDate>
		<dc:creator>Kevin Dady</dc:creator>
				<category><![CDATA[how-to]]></category>
		<category><![CDATA[misc hacks]]></category>
		<category><![CDATA[software hacks]]></category>
		<category><![CDATA[apple II]]></category>
		<category><![CDATA[retro]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=39827</guid>
		<description><![CDATA[Due to computer issues I had to rob some parts from my “electronics” computer, which wasn&#8217;t bad, since I was not working on anything at the time and I felt a software project itch. I also wanted to do something with my Apple //c, which resides on my computer desk, so this ghetto brute force [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=39827&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-40784" title="HADWEATHER" src="http://hackadaycom.files.wordpress.com/2011/04/hadweather.jpg" alt="" width="470" height="225" /></p>
<p>Due to computer issues I had to rob some parts from my “electronics” computer, which wasn&#8217;t bad, since I was not working on anything at the time and I felt a software project itch. I also wanted to do something with my Apple //c, which resides on my computer desk, so this ghetto brute force “solution” to use the 25 year old computer as a weather display came about.</p>
<p>In a nutshell there is the Apple II, a serial cable, and a PC running linux mint 10 and a handful of command line utilities. My specific Apple is the fist revision of the //c which means its got a buggy rom and the serial port(s) can be troublesome, the best speed I was able to get was 600 baud with just basic, though every other model could probably go a little faster.</p>
<p>On the linux side, wget downloads html and the radar image from <a href="http://m.wund.com/">Weather Underground&#8217;s mobile site</a>, which is not a perfect source, but its easy. A lua script phrases text and graphics into string patterns that the Apple II can handle as keyboard input, and its sent down a serial cable where it is drawn on screen in basic.</p>
<p>Yea its pretty darn slow … it typically takes about eight to twelve minutes to redraw the screen, which is not all that horrid (imo) considering what is going on, but anyone with a more serious take on this could find numerous ways to optimize it, I just wanted to see what it would look like.</p>
<p>Join us after the break for a short video and to read all the details about how this all works!</p>
<p><span id="more-39827"></span><span style="text-align:center; display: block;"><a href="http://hackaday.com/2011/04/18/apple-ii-weather-display-part-1/"><img src="http://img.youtube.com/vi/35rJoMLGz1U/2.jpg" alt="" /></a></span></p>
<p>Stuff you need:</p>
<p>*nix PC with a serial port and something with the following software</p>
<p><a href="http://www.gnu.org/software/wget/">GNU Wget</a></p>
<p><a href="http://www.gnu.org/software/coreutils/">GNU core utilities</a></p>
<p>(both are  probably already installed )</p>
<p><a href="http://www.lua.org/">Lua 5.1</a> (I used sudo apt-get install lua5.1)</p>
<p><a href="http://www.imagemagick.org/script/index.php">ImageMagick</a> (again sudo apt-get install imagemagick)</p>
<p><a href="http://en.wikipedia.org/wiki/Lynx_%28web_browser%29">Lynx</a> (I am just using it to strip html tags and didnt feel like using anything &#8220;proper&#8221;)</p>
<p><a href="http://sjinn.sourceforge.net/">Sjinn</a>, which is a nifty little command line program that lets you deal with the serial port without having to manually set it up and fuss with redirecting i/o in the terminal.</p>
<p><a href="http://cheesefactory.us/filecenter/hadimg/Apple_II_Weather.zip">And my project folder</a>.<strong><br />
</strong></p>
<p>On the Apple II side, you need a 128k IIe or newer, disk drive/controller, serial card, blank disk,  and high resolution graphics. For software you will need <a href="http://adtpro.sourceforge.net/">ADT Pro</a>,  and the disk image I made. ADT Pro is the currently developed Apple Disk Transfer utility that allows you to copy disk images to and from the Apple II, and the disk image is contained in the zip file above.</p>
<p>Transfer the disk image to the Apple and reboot with that disk in the drive, once the screen is at the white box, you are free to run &#8220;lua a2weather.lua&#8221; on the PC. The lua script fetches data, pipes it to the Apple, and then goes to sleep for 45 min using the gnu sleep() command.</p>
<p>Since lua is doing all the lifting, I guess that&#8217;s a good place to start. Also, let&#8217;s get this out of the way in case you missed it, I am not a programmer, much like my writing, be prepared to see some massive sins!</p>
<p>First up is the main a2weather.lua script  (and I see wordpress is going to murder my formating)</p>
<p><pre class="brush: coldfusion;">
-- Weather Underground to Apple //
-- 2011 Kevin Dady
--
-- main script:
-- read data off of the http://www.wunderground.com/ mobile site
-- phrase it
-- process text &amp; graphics
-- send
-- sleep
-- loop
--
-- This software is provided 'as-is', without any express or implied
-- warranty.  In no event will the authors be held liable for any damages
-- arising from the use of this software.
--
-- Permission is granted to anyone to use this software for any purpose,
-- including commercial applications, and to alter it and redistribute it
-- freely, subject to the following restrictions:
--
-- 1. The origin of this software must not be misrepresented; you must not
--    claim that you wrote the original software. If you use this software
--    in a product, an acknowledgment in the product documentation would be
--    appreciated but is not required.
-- 2. Altered source versions must be plainly marked as such, and must not be
--    misrepresented as being the original software.
-- 3. This notice may not be removed or altered from any source distribution.
require(&quot;req/web&quot;)
require(&quot;req/text&quot;)
require(&quot;req/radar&quot;)
require(&quot;req/os_commands&quot;)

graphicsKey = &quot;123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;

cmd.serialPort = &quot;/dev/ttyS0&quot;
cmd.webURL = &quot;http://m.wund.com/US/FL/Orlando.html&quot;
--cmd.webURL = &quot;http://m.wund.com/cgi-bin/findweather/getForecast?brand=mobile&amp;query=West+Yellowstone%2C+MT&quot;

while true do
 web.get()
 web.sortTXT()
 web.cleanTXT()

 text.createIMG()
 text.convertIMG()
 text.sortIMG()
 text.packageIMG()
 text.sendIMG()

 radar.convertIMG()
 radar.sortIMG()
 radar.packageIMG()
 radar.send()

 -- clean up data
 radar.data.input  = {}
 radar.data.packed = {}
 radar.data.apl2 = {{},{},{},{},{},{}}
 text.data.input  = {}
 text.data.packed = {{},{},{},{}}
 text.data.apl2   = {{},{},{}}

 cmd.sleep(&quot;45m&quot;)
 -- after sleep do tell the apple and do it again
 cmd.sjinn(&quot;update&quot;)
end
</pre></p>
<p>&#8230; pretty straight forward, some comments, zlib license, Ah, required files! These are just other lua scripts with functions and variables in them, though there is no reason all of those functions could not be in this script, I just find it easier to deal with.</p>
<p>web.lua downloads html and the radar image from weather underground, strips HTML tags via lynx, searches for keywords, and packs those keywords into a table (tables in lua are like arrays, but you can put pretty much anything you want in them, even functions)</p>
<p>text.lua takes the text data gathered in web.lua and passes it to ImageMagick to make simple text images, then phrases those images into data strings and transfers that data to the Apple.</p>
<p>radar.lua dithers the radar image with ImageMagick, phrases the that file, builds data strings, and  transfers that image data to the Apple.</p>
<p>os_commands.lua contains functions to run command line programs like wget, lynx, etc.</p>
<p>The graphics key needs to remain constant, I will go into how that works in a little while, but each character represents a numeric value within a 35 pixel column of the screen, there are 280 horizontal pixels in Apple // high res graphics. Its ripped from <a href="http://en.wikipedia.org/wiki/Base_36">base36, </a>missing the zero value and you dont add the numbers up, each is its own.</p>
<p>Theres also a string to define your serial port, and one to put the url for the area you want to see, go to <a href="http://m.wund.com/">Weather Underground&#8217;s mobile site</a> search for wherever (I dont know how well it works outside North America)  and copy/paste the resulting page url.</p>
<p>Next is a infinite while loop and the various functions contained within the above required scripts. Then, a little blurb where I define a bunch of empty tables (thats just me being re-assured tables start fresh and I didn&#8217;t goof up).</p>
<p>Next is web.lua<strong></strong></p>
<p><pre class="brush: coldfusion;">
-- Weather Underground to Apple //
-- 2011 Kevin Dady
--
-- Web Processing:
-- get text data
-- get radar image
-- phrase text for apple //

web = {}

web.data = {}
web.keywords =
{
&quot;National Weather Service:&quot;,
&quot;Updated&quot;,&quot;Windchill&quot;,&quot;Temperature&quot;,&quot;Humidity&quot;,
&quot;Conditions&quot;,&quot;Dew Point&quot;,&quot;animated radar image&quot;}

web.get = function()
-- download html from website
cmd.wget(cmd.webURL, &quot;text.html&quot;)
-- look for the radar image url
local file = io.open(&quot;temp/text.html&quot;)
local image = &quot;&quot;
for line in file:lines() do
if string.find(line, &quot;jpg&quot;) then
image = line
break
end
end
file:close()
-- remove the html tags from image url
local firstQuote = string.find(image, &quot;\&quot;&quot;) + 1
local secondQuote = string.find(image, &quot;\&quot;&quot;, firstQuote) - 1
image = string.sub(image, firstQuote, secondQuote)
-- download image
cmd.wget(image, &quot;radar.jpg&quot;)
end

web.sortTXT = function()
local fileLines = {}
-- use lynx to strip html tags
cmd.lynx(&quot;temp/text.html&quot;)
-- dump the lynx output file into a table
local file = io.open(&quot;temp/text.txt&quot;)
for line in file:lines() do
table.insert(fileLines, line)
end
-- look for keywords and scrape data
for y = 1, #fileLines do
local sub = &quot;&quot;
-- storm advisory
if string.find(fileLines[y], web.keywords[1]) ~= nil and web.data[1] == nil then
sub = string.gsub(fileLines[y + 1], &quot;%d&quot;, &quot;!&quot;)
sub = string.gsub(sub, &quot; , &quot;, &quot; &quot;)
table.insert(web.data, 1, sub)
-- last updated date and time
elseif string.find(fileLines[y], web.keywords[2]) ~= nil then
table.insert(web.data, 2, fileLines[y])
-- windchill
elseif string.find(fileLines[y], web.keywords[3]) ~= nil then
sub = string.gsub(fileLines[y], web.keywords[3], &quot;&quot;)
table.insert(web.data, 3, sub)
-- everything but forecast
else
for keyWord = 4, (#web.keywords - 1) do
if string.find(fileLines[y], web.keywords[keyWord]) ~= nil and web.data[keyWord] == nil then
sub = string.gsub(fileLines[y], web.keywords[keyWord], &quot;&quot;)
table.insert(web.data, keyWord, sub)
end
end
end
end
end

web.cleanTXT = function()
for y = 1, #web.data do
if web.data[y] ~= nil then
-- remove extra spaces from start of each string
while (string.sub(web.data[y], 1, 1) == &quot; &quot;) do
web.data[y] = string.sub(web.data[y], 2, -1)
end
-- remove degrees character
web.data[y] = string.gsub(web.data[y], &quot;°&quot;, &quot;&quot;)
end
end
-- Add keywords back in (skipping nill values, and tempature)
for keyWord = 3, (#web.keywords - 1) do
if web.data[keyWord] ~= nil then
if keyWord ~= 4 then
web.data[keyWord] = web.keywords[keyWord] .. &quot;: &quot; ..web.data[keyWord]
end
end
end
-- remove / from Temperature
web.data[4] = string.gsub(web.data[4], &quot; / &quot;, &quot; &quot;)
end
</pre></p>
<p>Yea I know its a mess, WordPress is ignoring tabs and it is only 40 columns if I had to guess. At the top there is a function called web.get(), this function uses wget to download the html page from weather underground, it then opens that file and scans through it for a JPG image, as luck would have it, the only jpg on the entire page is the radar. Once it has the URL for the radar it strips the HTML tags and uses wget again to download just the radar image.</p>
<p>The next function is web.sortTXT(), this sends the downloaded HTML file to lynx where it strips out the tags and spits out a plain text file. The function then reads each line looking for keywords. Some keywords require special action &#8230; like if it finds a storm advisory, it then knows to skip to the next line, because that line just says &#8220;National Weather Service:&#8221; and change the link number inserted by lynx to a&#8221; !&#8221;.  At the end of the function there is a little loop that looks for the rest of the keywords and then removes the actual keyword, this is needed to remove unwanted spaces between the keyword and data.</p>
<p>The final function is web.cleanTXT(), this goes through all the lines of data we have and removes all the leading spaces. It then adds back keywords to the appropriate line, while it ignores nil values as they were not present (like advisories or windchill). It also ignores the Temperature keyword as I don&#8217;t need the word Temperature in the display. Lastly I remove the &#8220;/&#8221; in my temperature data as it makes the graphics format funny, and its just to separate F and C values in the original string.</p>
<p>So we now have the software installed and running, data and radar downloaded from weather underground, text data scrapped, sorted and cleaned and we are now ready to make some graphics!</p>
<p>Join me in <a href="http://hackaday.com/2011/04/19/apple-ii-weather-display-part-2/">part 2</a> where I explain how graphics are reduced, encoded and drawn on the Apple II computer.</p>
<p><strong><br />
</strong></p>
<br />Filed under: <a href='http://hackaday.com/category/how-to/'>how-to</a>, <a href='http://hackaday.com/category/misc-hacks/'>misc hacks</a>, <a href='http://hackaday.com/category/software-hacks/'>software hacks</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/39827/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/39827/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/39827/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/39827/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/39827/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/39827/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/39827/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/39827/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/39827/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/39827/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/39827/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/39827/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/39827/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/39827/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=39827&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2011/04/18/apple-ii-weather-display-part-1/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">osgeld</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2011/04/hadweather.jpg" medium="image">
			<media:title type="html">HADWEATHER</media:title>
		</media:content>
	</item>
		<item>
		<title>Portable gaming for retro console lovers</title>
		<link>http://hackaday.com/2011/02/28/portable-gaming-for-retro-console-lovers/</link>
		<comments>http://hackaday.com/2011/02/28/portable-gaming-for-retro-console-lovers/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 23:00:40 +0000</pubDate>
		<dc:creator>Mike Nathan</dc:creator>
				<category><![CDATA[handhelds hacks]]></category>
		<category><![CDATA[toy hacks]]></category>
		<category><![CDATA[atari]]></category>
		<category><![CDATA[gaming]]></category>
		<category><![CDATA[portable]]></category>
		<category><![CDATA[retro]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=36197</guid>
		<description><![CDATA[There have been a fair share of portable video game console conversions over the years, but few tug at our retro-loving heart strings more than this one. Modretro forum member [Mario] constructed a fantastic looking portable Atari 2600 using a Flashback 2 Atari console clone. He hacked apart the Flashback board to fit inside a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=36197&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-36200" title="atari_2600_portable" src="http://hackadaycom.files.wordpress.com/2011/02/atari_2600_portable.jpg" alt="atari_2600_portable" width="470" height="353" /></p>
<p>There have been a fair share of portable video game console conversions over the years, but few tug at our retro-loving heart strings more than <a href="http://forums.modretro.com/viewtopic.php?f=3&amp;t=3639" target="_blank">this one</a>. Modretro forum member [Mario] constructed a fantastic looking portable Atari 2600 using a Flashback 2 Atari console clone.</p>
<p>He hacked apart the Flashback board to fit inside a small plastic case, then added a 3.5&#8243; LCD screen, as well as some donated controller bits from other portable game systems. A pair of rechargeable batteries were added along with a small amplifier and speaker for sound.</p>
<p>While the Flashback comes with 40 games built in, he really wanted to add a cartridge port, so with the little bit of space he had left in the case, he did just that. When everything was finished, he sprayed on a few coats of retro orange paint and called it a day. Really the only thing that&#8217;s missing is some nice fake wood veneer and maybe some shag carpet.</p>
<p>Continue reading to see his portable creation in action.</p>
<p><span id="more-36197"></span><span style="text-align:center; display: block;"><a href="http://hackaday.com/2011/02/28/portable-gaming-for-retro-console-lovers/"><img src="http://img.youtube.com/vi/I1ifj7Tgzls/2.jpg" alt="" /></a></span></p>
<br />Filed under: <a href='http://hackaday.com/category/handhelds-hacks/'>handhelds hacks</a>, <a href='http://hackaday.com/category/toy-hacks/'>toy hacks</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/36197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/36197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/36197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/36197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/36197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/36197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/36197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/36197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/36197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/36197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/36197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/36197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/36197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/36197/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=36197&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2011/02/28/portable-gaming-for-retro-console-lovers/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">mikenathanathackaday</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2011/02/atari_2600_portable.jpg" medium="image">
			<media:title type="html">atari_2600_portable</media:title>
		</media:content>
	</item>
		<item>
		<title>Calc is high-tech for 1970&#8242;s homebrew</title>
		<link>http://hackaday.com/2011/01/01/calc-is-high-tech-for-1970s-homebrew/</link>
		<comments>http://hackaday.com/2011/01/01/calc-is-high-tech-for-1970s-homebrew/#comments</comments>
		<pubDate>Sat, 01 Jan 2011 17:00:38 +0000</pubDate>
		<dc:creator>Mike Szczys</dc:creator>
				<category><![CDATA[classic hacks]]></category>
		<category><![CDATA[misc hacks]]></category>
		<category><![CDATA[calculator]]></category>
		<category><![CDATA[retro]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=32303</guid>
		<description><![CDATA[Just one look at that banner image and you&#8217;ve got to be thinking &#8220;that&#8217;s old&#8221;! This 1970&#8242;s era home made calculator used a 4-function calculator IC that was quite advanced for its time. The only problem is that the chip couldn&#8217;t do anything other than calcuations, which left it up to the maker of this [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=32303&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-32309" title="1970-homebrew-calculator" src="http://hackadaycom.files.wordpress.com/2010/12/1970-homebrew-calculator.jpg" alt="" width="470" height="346" /></p>
<p>Just one look at that banner image and you&#8217;ve got to be thinking &#8220;that&#8217;s old&#8221;! <a href="http://www.nixiebunny.com/malmbergcalc/calc.html">This 1970&#8242;s era home made calculator</a> used a 4-function calculator IC that was quite advanced for its time. The only problem is that the chip couldn&#8217;t do anything other than calcuations, which left it up to the maker of this dinosaur to get the display and keypad working. Circuit boards were made by drawing on copper clad with resist marker. These controlled the VFD digits for the IC&#8217;s output and also fed it the user inputs.</p>
<p>[Thanks Brian]</p>
<br />Filed under: <a href='http://hackaday.com/category/classic-hacks/'>classic hacks</a>, <a href='http://hackaday.com/category/misc-hacks/'>misc hacks</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/32303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/32303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/32303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/32303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/32303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/32303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/32303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/32303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/32303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/32303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/32303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/32303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/32303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/32303/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=32303&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2011/01/01/calc-is-high-tech-for-1970s-homebrew/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Mike Szczys</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2010/12/1970-homebrew-calculator.jpg" medium="image">
			<media:title type="html">1970-homebrew-calculator</media:title>
		</media:content>
	</item>
		<item>
		<title>Step by step antique radio repair and upgrade</title>
		<link>http://hackaday.com/2010/11/06/step-by-step-antique-radio-repair-and-upgrade/</link>
		<comments>http://hackaday.com/2010/11/06/step-by-step-antique-radio-repair-and-upgrade/#comments</comments>
		<pubDate>Sat, 06 Nov 2010 15:00:06 +0000</pubDate>
		<dc:creator>Caleb Kraft</dc:creator>
				<category><![CDATA[home entertainment hacks]]></category>
		<category><![CDATA[repair hacks]]></category>
		<category><![CDATA[radio]]></category>
		<category><![CDATA[retro]]></category>
		<category><![CDATA[tube]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=30261</guid>
		<description><![CDATA[[M3talhead] takes us through a very informative repair of an old tube radio. In this case, his radio was from the late 30s. He was able to find the original data from Radiomuseum.org. He painstakingly dismantles the radio components and the cabinet. Instead of completely modernizing the internals, he replaces the bad parts and brings [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=30261&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-large wp-image-30262" title="Vintage-Tube-Radio-MP3-Upgrade" src="http://hackadaycom.files.wordpress.com/2010/11/vintage-tube-radio-mp3-upgrade.jpg?w=450&#038;h=252" alt="I actually have a 3 very similar radios. I think I need to do this." width="450" height="252" />[M3talhead] takes us through a very informative repair of an <a href="http://www.instructables.com/id/Vintage-Tube-Radio-Restoration-MP3-Upgrade/">old tube radio</a>. In this case, his radio was from the late 30s. He was able to find the original data from <a href="http://radiomuseum.org/">Radiomuseum.org</a>. He painstakingly dismantles the radio components and the cabinet. Instead of completely modernizing the internals, he replaces the bad parts and brings it back to functionality. He wanted to do an MP3 upgrade, but rather than wire directly into the radio, he built an AM transmitter for his mp3 player.</p>
<br />Filed under: <a href='http://hackaday.com/category/home-entertainment-hacks/'>home entertainment hacks</a>, <a href='http://hackaday.com/category/repair-hacks/'>repair hacks</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/30261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/30261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/30261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/30261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/30261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/30261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/30261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/30261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/30261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/30261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/30261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/30261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/30261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/30261/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=30261&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2010/11/06/step-by-step-antique-radio-repair-and-upgrade/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Caleb Kraft</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2010/11/vintage-tube-radio-mp3-upgrade.jpg?w=450" medium="image">
			<media:title type="html">Vintage-Tube-Radio-MP3-Upgrade</media:title>
		</media:content>
	</item>
		<item>
		<title>Hacking TVs in 1954</title>
		<link>http://hackaday.com/2010/10/19/hacking-tvs-in-1954/</link>
		<comments>http://hackaday.com/2010/10/19/hacking-tvs-in-1954/#comments</comments>
		<pubDate>Tue, 19 Oct 2010 14:11:29 +0000</pubDate>
		<dc:creator>Caleb Kraft</dc:creator>
				<category><![CDATA[home entertainment hacks]]></category>
		<category><![CDATA[mute]]></category>
		<category><![CDATA[retro]]></category>
		<category><![CDATA[television]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=29465</guid>
		<description><![CDATA[This gem was published in Mechanix Illustrated magazine in may of 1954. AT that time, a remote control was the stuff of science fiction. This article shows the modern man how to modify his television to include a fancy button to stop all noise. This button, affectionately labelled the &#8220;SHADDAP&#8221; was marketed as a way [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=29465&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-large wp-image-29466" title="shaddap_0" src="http://hackadaycom.files.wordpress.com/2010/10/shaddap_0.jpg?w=403&#038;h=450" alt="shaddap already!" width="403" height="450" /></p>
<p>This gem was <a href="http://blog.modernmechanix.com/2010/10/18/make-a-shaddap/">published in Mechanix Illustrated</a> magazine in may of 1954. AT that time, a remote control was the stuff of science fiction. This article shows the modern man how to modify his television to include a fancy button to stop all noise. This button, affectionately labelled the &#8220;SHADDAP&#8221; was marketed as a way to relieve the pain of long winded commercials. Basically, it cut the connection to the speaker, nothing super fancy. Is that an altoids tin as an enclosure?</p>
<p>[via <a href="http://www.boingboing.net/2010/10/18/howto-make-a-proto-m.html">BoingBoing</a>]</p>
<br />Filed under: <a href='http://hackaday.com/category/home-entertainment-hacks/'>home entertainment hacks</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/29465/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/29465/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/29465/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/29465/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/29465/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/29465/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/29465/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/29465/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/29465/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/29465/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/29465/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/29465/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/29465/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/29465/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=29465&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2010/10/19/hacking-tvs-in-1954/feed/</wfw:commentRss>
		<slash:comments>31</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Caleb Kraft</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2010/10/shaddap_0.jpg?w=403" medium="image">
			<media:title type="html">shaddap_0</media:title>
		</media:content>
	</item>
		<item>
		<title>Lee Hart&#8217;s &#8220;Memebership Card&#8221;</title>
		<link>http://hackaday.com/2010/08/19/lee-harts-memebership-card/</link>
		<comments>http://hackaday.com/2010/08/19/lee-harts-memebership-card/#comments</comments>
		<pubDate>Thu, 19 Aug 2010 14:45:46 +0000</pubDate>
		<dc:creator>Caleb Kraft</dc:creator>
				<category><![CDATA[Microcontrollers]]></category>
		<category><![CDATA[1802]]></category>
		<category><![CDATA[cosmac]]></category>
		<category><![CDATA[retro]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=27324</guid>
		<description><![CDATA[In an act of retro revival, [Lee Hart] has created this &#8220;Membership Card&#8220;, an altoid tin sized tribute to the 1802 CMOS chip. Made popular in the late 70s in the RCA COSMAC ELF computer, the 1802 stole many a hackers heart. There&#8217;s tons of information available if you explore the site, from history to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=27324&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<span style="text-align:center; display: block;"><a href="http://hackaday.com/2010/08/19/lee-harts-memebership-card/"><img src="http://img.youtube.com/vi/hbsPddZsmVI/2.jpg" alt="" /></a></span>
<p>In an act of retro revival, [Lee Hart] has created this &#8220;<a href="http://www.retrotechnology.com/memship/memship.html">Membership Card</a>&#8220;, an altoid tin sized tribute to the 1802 CMOS chip. Made popular in the late 70s in the RCA COSMAC ELF computer, the 1802 stole many a hackers heart. There&#8217;s tons of information available if you explore the site, from history to kit building experiences.</p>
<p>[via <a href="http://www.retrothing.com/2010/07/vintage-computer-stuffed-into-an-altoids-tin.html">Retro Thing</a>)</p>
<br />Filed under: <a href='http://hackaday.com/category/microcontrollers/'>Microcontrollers</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/27324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/27324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/27324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/27324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/27324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/27324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/27324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/27324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/27324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/27324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/27324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/27324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/27324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/27324/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=27324&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2010/08/19/lee-harts-memebership-card/feed/</wfw:commentRss>
		<slash:comments>35</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Caleb Kraft</media:title>
		</media:content>
	</item>
		<item>
		<title>Modded C64 eye candy</title>
		<link>http://hackaday.com/2010/02/08/modded-c64-eye-candy/</link>
		<comments>http://hackaday.com/2010/02/08/modded-c64-eye-candy/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 22:00:52 +0000</pubDate>
		<dc:creator>Phil Burgess</dc:creator>
				<category><![CDATA[classic hacks]]></category>
		<category><![CDATA[digital audio hacks]]></category>
		<category><![CDATA[64]]></category>
		<category><![CDATA[c64]]></category>
		<category><![CDATA[case]]></category>
		<category><![CDATA[casemod]]></category>
		<category><![CDATA[commodore]]></category>
		<category><![CDATA[mod]]></category>
		<category><![CDATA[retro]]></category>
		<category><![CDATA[synth]]></category>
		<category><![CDATA[synthesizer]]></category>
		<category><![CDATA[vintage]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=21566</guid>
		<description><![CDATA[“Everyone needs a hobby,” they tell us. For the blogger mysteriously identified only as “R,” that hobby would be an almost fanatical nostalgia for the Commodore 64 computer. At first we thought this was a fan community site, but apparently it&#8217;s all the work of a single person. [R] has tweaked, extended, repackaged and resurfaced this [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=21566&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-21567" title="c64-mods" src="http://hackadaycom.files.wordpress.com/2010/02/c64-mods.jpg" alt="" width="470" height="300" /></p>
<p>“Everyone needs a hobby,” they tell us. For the blogger mysteriously identified only as “R,” that hobby would be <a href="http://blog.re-64.com/">an almost fanatical nostalgia for the Commodore 64 computer</a>.</p>
<p>At first we thought this was a fan community site, but apparently it&#8217;s all the work of a single person. [R] has tweaked, extended, repackaged and resurfaced this 1980’s icon in nearly every imaginable way. They tend to gloss over the technical aspects of these mods, but that&#8217;s okay &#8211; the C64 is such an <a href="http://hackaday.com/2006/10/03/c64-alpha-mod/">exhaustively </a><a href="http://hackaday.com/2008/06/05/building-a-midibox-sid/">documented</a> <a href="http://hackaday.com/2009/11/14/mouse-a-ps2-to-c64-adapter/">system</a> now that the site dwells mainly on the <a href="http://hackaday.com/2009/04/06/commodore-64-laptop/">aesthetics</a> and meaning of these reborn devices.</p>
<p>The 64 has made an indelible impression on <a href="http://hackaday.com/2008/07/13/funkytown-performed-by-old-hardware/">electronic music</a>, and the machines are still sought after by collectors, composers and <a href="http://hackaday.com/2009/04/16/bent-festival-begins-tonight/">circuit-benders</a>. [R] pays homage by housing these vintage systems in styles reminiscent of even vintage-er <a href="http://hackaday.com/2005/08/24/synth-link-roundup/">synthesizers</a>. Any one of these would warrant a post here, yet there’s a whole collection to browse. Check it out!</p>
<p>[via Retro Thing]</p>
<br />Filed under: <a href='http://hackaday.com/category/classic-hacks/'>classic hacks</a>, <a href='http://hackaday.com/category/digital-audio-hacks/'>digital audio hacks</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/21566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/21566/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/21566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/21566/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/21566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/21566/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/21566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/21566/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/21566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/21566/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/21566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/21566/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/21566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/21566/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=21566&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2010/02/08/modded-c64-eye-candy/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">philburgess</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2010/02/c64-mods.jpg" medium="image">
			<media:title type="html">c64-mods</media:title>
		</media:content>
	</item>
		<item>
		<title>C64 emulator for iPhone approved — minus BASIC</title>
		<link>http://hackaday.com/2009/09/07/c64-emulator-for-iphone-approved-%e2%80%94-minus-basic/</link>
		<comments>http://hackaday.com/2009/09/07/c64-emulator-for-iphone-approved-%e2%80%94-minus-basic/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 13:27:33 +0000</pubDate>
		<dc:creator>Phil Burgess</dc:creator>
				<category><![CDATA[iphone hacks]]></category>
		<category><![CDATA[64]]></category>
		<category><![CDATA[app store]]></category>
		<category><![CDATA[c64]]></category>
		<category><![CDATA[commodore]]></category>
		<category><![CDATA[emulation]]></category>
		<category><![CDATA[emulator]]></category>
		<category><![CDATA[gaming]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[ipod touch]]></category>
		<category><![CDATA[retro]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=14822</guid>
		<description><![CDATA[After a lengthy process that had previously met with rejection, Manomio’s Commodore 64 emulator for the iPhone and iPod touch has finally been accepted by Apple. This marks the first time a multi-purpose emulation title has been approved by the App Store. The $4.99 C64 app comes bundled with five fully-licensed classic games, and additional titles [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=14822&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-14833" title="c64" src="http://hackadaycom.files.wordpress.com/2009/09/c64.jpg" alt="c64" width="434" height="405" /></p>
<p>After a lengthy process that had previously met with rejection, <a href="http://www.c64iphone.com/">Manomio’s Commodore 64 emulator for the iPhone and iPod touch</a> has finally been accepted by Apple. This marks the first time a multi-purpose emulation title has been approved by the App Store. The $4.99 C64 app comes bundled with five fully-licensed classic games, and additional titles can be purchased and downloaded directly within the application.</p>
<p>App Store policies prohibit software that could run downloadable code, which barred most emulation attempts in the past. A couple of Sega titles worked around this by nature of being single-purpose emulators. The condition by which the C64 title was finally approved was the removal of the BASIC programming language (though ironically it’s still shown in screen shots, even on the App Store). Since only sanctioned programs can be installed and run from within the application, no user-alterable code is present.</p>
<p>The C64 emulator is neat enough in itself, but the really encouraging news here is that a precedent has been set; the business model may open the floodgates for developers to bring more classic gaming titles to the iPhone platform. So download that SDK and get hacking!</p>
<p>[via <a href="http://toucharcade.com/">TouchArcade</a>]</p>
<p>Update: The iPhone Blog <a href="http://www.theiphoneblog.com/2009/09/06/quick-app-c64-commodore-64-emulator-iphone-hack-basic/">has a simple work-around</a> for accessing BASIC!</p>
<p><strong>Update 2:</strong> App pulled, no surprise. If you jumped on the opportunity while it was available, [George’s] comment might be of interest.</p>
<br />Posted in iphone hacks  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/14822/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/14822/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/14822/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/14822/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/14822/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/14822/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/14822/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/14822/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/14822/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/14822/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/14822/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/14822/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/14822/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/14822/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=14822&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2009/09/07/c64-emulator-for-iphone-approved-%e2%80%94-minus-basic/feed/</wfw:commentRss>
		<slash:comments>42</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">philburgess</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/09/c64.jpg" medium="image">
			<media:title type="html">c64</media:title>
		</media:content>
	</item>
		<item>
		<title>DENCON</title>
		<link>http://hackaday.com/2009/07/26/dencon/</link>
		<comments>http://hackaday.com/2009/07/26/dencon/#comments</comments>
		<pubDate>Sun, 26 Jul 2009 21:50:50 +0000</pubDate>
		<dc:creator>Eliot</dc:creator>
				<category><![CDATA[cons]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[defcon]]></category>
		<category><![CDATA[defcon17]]></category>
		<category><![CDATA[jason scott]]></category>
		<category><![CDATA[las vegas]]></category>
		<category><![CDATA[pdp-11]]></category>
		<category><![CDATA[retro]]></category>
		<category><![CDATA[vintage computing]]></category>
		<category><![CDATA[vintagetech]]></category>

		<guid isPermaLink="false">http://hackaday.com/?p=12966</guid>
		<description><![CDATA[Defcon, the world&#8217;s largest hacker convention, is this coming weekend in Las Vegas. While the convention generally focuses on breaking new technology, digital archivist [Jason Scott] has an interesting surprise for attendees this year. With some help from VintageTech, he&#8217;ll be assembling a massive den of retro computing machinery. They&#8217;ll have fully functional systems like [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=12966&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-12967" title="dencon" src="http://hackadaycom.files.wordpress.com/2009/07/dencon.jpg" alt="dencon" width="470" height="350" /></p>
<p><a href="http://www.defcon.org/">Defcon</a>, the world&#8217;s largest hacker convention, is this coming weekend in Las Vegas. While the convention generally focuses on breaking new technology, digital archivist [Jason Scott] has an interesting surprise for attendees this year. With some help from <a title="VintageTech - Welcome!" href="http://www.vintagetech.com/">VintageTech</a>, he&#8217;ll be assembling a <a title="ASCII by Jason Scott  / DENCON" href="http://ascii.textfiles.com/archives/2088">massive den of retro computing machinery</a>. They&#8217;ll have fully functional systems like the <a title="PDP-11 - Wikipedia, the free encyclopedia" href="http://en.wikipedia.org/wiki/PDP-11">PDP-11/70</a> for people to play with. It sure to be one of the more unique things to see at the con.</p>
<br />Posted in cons, news  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackadaycom.wordpress.com/12966/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackadaycom.wordpress.com/12966/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackadaycom.wordpress.com/12966/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackadaycom.wordpress.com/12966/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackadaycom.wordpress.com/12966/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackadaycom.wordpress.com/12966/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackadaycom.wordpress.com/12966/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackadaycom.wordpress.com/12966/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackadaycom.wordpress.com/12966/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackadaycom.wordpress.com/12966/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackadaycom.wordpress.com/12966/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackadaycom.wordpress.com/12966/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackadaycom.wordpress.com/12966/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackadaycom.wordpress.com/12966/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackaday.com&amp;blog=4779443&amp;post=12966&amp;subd=hackadaycom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackaday.com/2009/07/26/dencon/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">RobotSkirts</media:title>
		</media:content>

		<media:content url="http://hackadaycom.files.wordpress.com/2009/07/dencon.jpg" medium="image">
			<media:title type="html">dencon</media:title>
		</media:content>
	</item>
	</channel>
</rss>
