<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The TRS-80/Tandy Color Computer SuperSite! &#187; Programming</title>
	<atom:link href="http://www.coco3.com/community/category/programming/feed" rel="self" type="application/rss+xml" />
	<link>http://www.coco3.com/community</link>
	<description>A Rainbow 30 Years Wide!  Long Live The CoCo</description>
	<lastBuildDate>Wed, 01 Feb 2012 18:15:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.1</generator>
	<atom:link rel="next" href="http://www.coco3.com/community/category/programming/feed?page=2" />

		<item>
		<title>Coco Dev cart?</title>
		<link>http://www.coco3.com/community/2012/01/coco-dev-cart</link>
		<comments>http://www.coco3.com/community/2012/01/coco-dev-cart#comments</comments>
		<pubDate>Fri, 13 Jan 2012 11:41:39 +0000</pubDate>
		<dc:creator>warpedflash</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=29545</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Hi,</p>
<p>I recently won a job lot on ebay and buried in the box was this.</p>
<p>http://imgur.com/a/LdJmP#0</p>
<p>I have been trying to find out more about it as I had no clue as to what it was. So far the most valid explanation is part of a CoCo development kit.<br />
Does anyone know any more about it? I have asked in a couple of places and am fairly sure it is a CoCo dev cart but know nothing more than that&#8230;</p>
<p>If this is the wrong section apologies but I don&#8217;t really know where it should go&#8230;.</p>
<p>This post was submitted by warpedflash.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2012/01/coco-dev-cart/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Realtime texture mapping on a Coco 3</title>
		<link>http://www.coco3.com/community/2012/01/realtime-texture-mapping-on-a-coco-3</link>
		<comments>http://www.coco3.com/community/2012/01/realtime-texture-mapping-on-a-coco-3#comments</comments>
		<pubDate>Tue, 03 Jan 2012 04:17:26 +0000</pubDate>
		<dc:creator>remz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[demo]]></category>
		<category><![CDATA[doom]]></category>
		<category><![CDATA[gloom]]></category>
		<category><![CDATA[texture]]></category>
		<category><![CDATA[texture mapping]]></category>
		<category><![CDATA[wolf]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=29531</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Hi everyone,</p>
<p>a couple of month ago I was dreaming of a coco 3 rendering texture mapping in realtime. And finally I think I did it: If everything goes well I will post a DSK so you can try it out. Here is a screenshot attached, showing MESS emulation running.<br />
The demo has a predefined path and no user control. It features high precision texture mapping with perspective correct, mip-mapping and distance shading. The floor and ceiling are texture mapped too using perspective correction but I had to trade texture resolution for speed, so basically it is more-or-less a sort of infinite carpet.<br />
It runs at about 5 frames per second, and works on a plain 128KB coco 3. I have tested it with floppy (MESS,VCC) and DrivePak (real coco).</p>
<p><a href="http://www.coco3.com/community/wp-content/uploads/tdomf/29531/coco3_texture_map.jpg">coco3_texture_map.jpg (213 KB)</a></p>
<p>This post was submitted by remz.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2012/01/realtime-texture-mapping-on-a-coco-3/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>registration issues</title>
		<link>http://www.coco3.com/community/2011/11/registration-issues</link>
		<comments>http://www.coco3.com/community/2011/11/registration-issues#comments</comments>
		<pubDate>Wed, 09 Nov 2011 02:53:42 +0000</pubDate>
		<dc:creator>Bill Pierce</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Rainbow IDE]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=29456</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t know who&#8217;s in charge of registration of RainbowIDE now since the remodel&#8230; but what I would like to know is this&#8230;<br />
I aquired my Raindow IDE registration when I bought my COCO DVD a few years back. my old computer died (along with ut&#8217;s hard drive) and I lost all my files. I pulled the DVD out ant my new computer would not even recognize it. I didn&#8217;t worry too much as most of the stuff is in various places on the net. I downloaded 2 versions of Rainbow IDE (1.4 &amp; 1.6 I think) and my old key would not work with them. Do I have to buy another copy of this? I don&#8217;t really mind&#8230; but would kike to know before I shell out more bucks.</p>
<p>Thanks in Advance<br />
Bill Pierce</p>
<p>This post was submitted by Bill Pierce.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2011/11/registration-issues/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>EDTASM cassette instructions</title>
		<link>http://www.coco3.com/community/2011/10/edtasm-cassette-instructions</link>
		<comments>http://www.coco3.com/community/2011/10/edtasm-cassette-instructions#comments</comments>
		<pubDate>Sat, 08 Oct 2011 21:55:27 +0000</pubDate>
		<dc:creator>DanWebb314</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=29398</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>I have a COCO 3 with an EDTASM cartridge.  I cant find the manual.  I have a bunch of old cassettes with a program I assambled.  I would like to know how to load the program.  It is in the form of a memory dump.  Written on the cassettes is the 3 hex numbers.  The first two numbers is the first and last address in memory it will be loaded to.  The third number is the starting address for the program.  I have see a pdf file for a manual for the Disk version but now the tape cassette version.  Got any ideas?</p>
<p>This post was submitted by DanWebb314.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2011/10/edtasm-cassette-instructions/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>What do I need to start programming games for the CoCo?</title>
		<link>http://www.coco3.com/community/2011/05/what-do-i-need-to-start-programming-games-for-the-coco</link>
		<comments>http://www.coco3.com/community/2011/05/what-do-i-need-to-start-programming-games-for-the-coco#comments</comments>
		<pubDate>Tue, 31 May 2011 03:27:48 +0000</pubDate>
		<dc:creator>courtesi</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=29176</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Message Subject/Topic says it all.  I want to write a game for the CoCo 1/2 and limit it to a single 64k image/file.</p>
<p>What books should I get?  What specific magazines/issues would be helpful?  What assembler should I use?</p>
<p>Also more importantly, Can you explain to someone who is a noob what are things I shouldn&#8217;t do (ie: I want to use the original coco 1/2 resolutions/colors but I also want it run on a CoCo 3 without problems.)</p>
<p>Need input ASAP as I&#8217;d like to have something to show at the next Rainbowfest.</p>
<p>Thanks!</p>
<p>This post was submitted by courtesi.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2011/05/what-do-i-need-to-start-programming-games-for-the-coco/feed</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>GIME Serial Interrupt</title>
		<link>http://www.coco3.com/community/2011/05/gime-serial-interrupt</link>
		<comments>http://www.coco3.com/community/2011/05/gime-serial-interrupt#comments</comments>
		<pubDate>Tue, 24 May 2011 20:43:21 +0000</pubDate>
		<dc:creator>sc</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=29136</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Well, I&#8217;ve gotten serial input and output working doing it the old polling way, based on the unravelled code&#8230; now I am trying to build a serial input routine that automatically places bytes into an input buffer whenever data comes in, using the fancy serial interrupt.  I want to be able to access the buffer whenever I feel like it, without having to put the code into a dedicated loop waiting for serial bits to come in&#8230;</p>
<p>So as far as I can tell my serial interrupt doesn&#8217;t fire.  Does anyone know how the serial interrupt is supposed to trigger?  I assumed a new irq would be generated for each state change on the rs232 port, meaning for each bit, regardless of whether it is a start/data/stop bit.  I understand doing it this way rules out any massively fast baud rates, but I think at double cpu speed it should be possible to capture 38400 on down&#8230;</p>
<p>This post was submitted by sc.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2011/05/gime-serial-interrupt/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>$FF90 &#8220;ROM Map control&#8221;</title>
		<link>http://www.coco3.com/community/2011/04/ff90-rom-map-control</link>
		<comments>http://www.coco3.com/community/2011/04/ff90-rom-map-control#comments</comments>
		<pubDate>Sat, 30 Apr 2011 01:23:14 +0000</pubDate>
		<dc:creator>sc</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=28962</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve decided I don&#8217;t understand the effect of the lowest two bits of $FF90, described in unravelled as MC1, MC0, &#8220;ROM Map control&#8221; as follows:</p>
<p>MC1=0 MC0=X 16k internal 16k external<br />
MC1=1 MC0=0 32k internal<br />
MC1=1 MC0=1 32k external</p>
<p>Can anyone clarify this?  When you want to treat all system memory as standard RAM right up to $7FFFF, what should be the proper setting for these bits?  I do understand the use of the int vector areas, and being able to lock in FE00-FEFF, etc&#8230; just don&#8217;t know what is meant by &#8220;internal&#8221; vs &#8220;external&#8221; vs a combination of the two&#8230;</p>
<p>This post was submitted by sc.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2011/04/ff90-rom-map-control/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Floating point package?</title>
		<link>http://www.coco3.com/community/2011/04/floating-point-package</link>
		<comments>http://www.coco3.com/community/2011/04/floating-point-package#comments</comments>
		<pubDate>Mon, 25 Apr 2011 18:25:39 +0000</pubDate>
		<dc:creator>sc</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=28945</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Thought I&#8217;d avoid reinventing the wheel by asking if anyone has already prepared a group of assembly routines that can do add/sub/mult/div on floating point numbers, without relying on the ROM routines&#8230;</p>
<p>This post was submitted by sc.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2011/04/floating-point-package/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Dumb assembly question</title>
		<link>http://www.coco3.com/community/2011/04/dumb-assembly-question</link>
		<comments>http://www.coco3.com/community/2011/04/dumb-assembly-question#comments</comments>
		<pubDate>Fri, 15 Apr 2011 19:05:28 +0000</pubDate>
		<dc:creator>sc</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=28887</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>In this example:</p>
<p>TABLE FCC /01234/</p>
<p>LDX #TABLE<br />
LDA #2<br />
LDA A,X</p>
<p>&#8230;will the CPU replace the value in A, after using the current value in A for the addressing mode?  So in the above example, it would load the new value (character &#8220;2&#8243; in table) from the address 2,x?</p>
<p>This post was submitted by sc.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2011/04/dumb-assembly-question/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Interrupt Routine Reentrancy</title>
		<link>http://www.coco3.com/community/2011/04/interrupt-routine-reentrancy</link>
		<comments>http://www.coco3.com/community/2011/04/interrupt-routine-reentrancy#comments</comments>
		<pubDate>Fri, 01 Apr 2011 15:53:31 +0000</pubDate>
		<dc:creator>sc</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=28847</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>I am assuming that after my IRQ fires, and I&#8217;ve checked $FF92 to see what the source was, and then jumped to my service routine, that while I am doing my processing (before I&#8217;ve called RTI) the same interrupt could fire again, causing reentrancy problems and blowing up my stack.  Is it acceptable to call ORCC #$50 at the beginning of an interrupt service routine, and ANDCC #$AF at the end, in order to disable interrupts during processing?  Or would this cause problems?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2011/04/interrupt-routine-reentrancy/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Hires text from ML</title>
		<link>http://www.coco3.com/community/2011/03/hires-text-from-ml</link>
		<comments>http://www.coco3.com/community/2011/03/hires-text-from-ml#comments</comments>
		<pubDate>Mon, 28 Mar 2011 18:25:52 +0000</pubDate>
		<dc:creator>sc</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=28838</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>So before getting too crazy with my ML project, wanted to make sure I am setting up the GIME correctly&#8230; but my test failed.  My goal is stop any kind of interrupts from screwing with me, then get a 40&#215;24 text screen going at physical address $0, and after that if I were to store a 65 at $0 I should get an &#8220;A&#8221; on the screen, and I&#8217;m good.  But my &#8220;A&#8221; didn&#8217;t show up.  Here is my GIME setup code broken out:</p>
<p>first, disable all PIO interrupts</p>
<p>0003  CLR $FF01<br />
0004  CLR $FF03<br />
0005  CLR $FF21<br />
0006  CLR $FF23</p>
<p>non-compatible mode, enable gime as source of interrupts</p>
<p>0007  LDD #$7A20<br />
0008  STD $FF90</p>
<p>but make sure no interrupts are going to be happening</p>
<p>0009  LDD #$0000<br />
0010  STD $FF92</p>
<p>set up a timer interval for later</p>
<p>0011  LDD #$08EE<br />
0012  STD $FF94</p>
<p>set up a 40&#215;24 text mode</p>
<p>0013  LDD #$030C<br />
0014  STD $FF98</p>
<p>with video memory starting at physical address $0</p>
<p>0017  LDD #$0000<br />
0018  STD $FF9D</p>
<p>set up all foreground pallete with black</p>
<p>0019  STD $FFB8<br />
0020  STD $FFBA<br />
0021  STD $FFBC<br />
0022  STD $FF9E</p>
<p>and all background pallette with green</p>
<p>0023  LDD #$1212<br />
0024  STD $FFB0<br />
0025  STD $FFB2<br />
0026  STD $FFB4<br />
0027  STD $FFB6</p>
<p>MMU: put physical page $0 at logical page $0 for access to video memory</p>
<p>0028  LDD #$0001<br />
0029  STD $FFA0<br />
0030  STD $FFA8</p>
<p>&#8230;thought I&#8217;d put this up here and see if anyone thinks I&#8217;m way off here, back to my debugging&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2011/03/hires-text-from-ml/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>FAT troubles</title>
		<link>http://www.coco3.com/community/2011/03/fat-troubles</link>
		<comments>http://www.coco3.com/community/2011/03/fat-troubles#comments</comments>
		<pubDate>Wed, 23 Mar 2011 19:15:56 +0000</pubDate>
		<dc:creator>sc</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=28834</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>As part of a little utility I&#8217;m writing, I wanted a way for a PC tool to build a DSK image that contains a single BIN file, and a proper directory entry/fat table so that a coco could load it.  When I try it on a coco, I always get a FS error when running DIR.  So I&#8217;m doing something wrong.  I&#8217;m following info in DECB unravelled, but missing something.</p>
<p>Now, this is only a 313 byte file.  So I write the content of the file starting at the first byte of the image, which should be track 0 sector 1.  Next I create the directory entry, specifying name, extension, type 2 for binary, 0 in the ascii flag.  Then we come to the &#8220;first granule&#8221; of the file, in which I&#8217;ve tried both zero and one.  So first question:  Are granules numbered starting with zero or one?</p>
<p>Then in the two bytes that specify the # of bytes used in the last sector, I put in a zero and 57, since the second sector of my file only has 57 bytes used.</p>
<p>Finally, in the first position of the FAT table (which I understand is after 6 bytes of control information), I place an entry that should mark the first granule as used.  I place in here the value 194 (which is 128+64 to set bits 7 and 6 high, and the value 2 in the lower 5 bits specifying that only 2 sectors of this granule are in use.</p>
<p>Based on my reading, that&#8217;s all I need.  I get this DSK image going via drivewire, run a &#8220;DIR&#8221; and I see the filename and ext I chose, but then the DIR fails with FS error.</p>
<p>Any theories?  Thanks!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2011/03/fat-troubles/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>CoCo Serial/Printer Port Pins</title>
		<link>http://www.coco3.com/community/2011/02/coco-serialprinter-port-pins</link>
		<comments>http://www.coco3.com/community/2011/02/coco-serialprinter-port-pins#comments</comments>
		<pubDate>Mon, 14 Feb 2011 03:10:35 +0000</pubDate>
		<dc:creator>Roger</dc:creator>
				<category><![CDATA[Peripherals]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=28779</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<h1>CoCo serial port</h1>
<p>The Color Computer has a four-pin DIN connector on its back panel for its serial port.  There is very little internal hardware dedicated to supporting this, so most of the work of sending and receiving bits is done in software; the CPU goes into a loop either setting the output bit or reading the input bit.</p>
<p>As you might imagine, doing both at the same time can be tricky, since you don&#8217;t have any guarantees about when the first bit of a byte will arrive; it might be while you are right in the middle of sending a byte. The result is a limited baud rate; the CPU can only do so many bits per second.  Some of my assembly-language programs can receive at 9600 baud, but don&#8217;t do any sending at all.  Comm programs might get up to 2400 baud, but may not be so reliable at that rate.</p>
<p>Here is a cheesy ASCII drawing of that connector, including a pinout and showing how the pins are numbered.  The drawing is of the back-panel connector, looking at it from the back of the machine.  So if you are looking at the pins of the connector at the end of a cable, it is backwards.</p>
<p><br class="spacer_" /></p>
<pre>        ------       Pin#  RS-232 signal            Printer signal
      /  \__/  \     ----  ----------------------   ---------------
     /          \
    / 4      1   \    1    CD - carrier detect      ignored
       o      o
   |              |   2    RS232IN - input data     printer status
   |              |                                 (high == ready)
   |  3      2    |
       o      o       3    GND - ground             ground
    \            /
     \          /     4    RS232OUT - output data   data to printer
      \        /
        ------
</pre>
<p>Note that pins of connector are not always used the same way! This is possible because most everything is done in software; pins 1 and 2 are required by the hardware to be inputs, but it is up to the program to decide how to use those inputs.  While any sort of communications program should use the RS-232 pin-out, the built-in BASIC printer routines use pin 2 as &#8220;printer status&#8221; and completely ignore pin 1.  So the cable you wire up for a printer has to be different from the one you wire up for a modem. Thank MicroShaft for that.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2011/02/coco-serialprinter-port-pins/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CoCo Cassette Port Pins</title>
		<link>http://www.coco3.com/community/2011/02/coco-cassette-port-pins</link>
		<comments>http://www.coco3.com/community/2011/02/coco-cassette-port-pins#comments</comments>
		<pubDate>Mon, 14 Feb 2011 03:06:35 +0000</pubDate>
		<dc:creator>Roger</dc:creator>
				<category><![CDATA[Peripherals]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=28777</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<h1>Cassette port pinout</h1>
<hr />
<p>The cassette cable has a 5-pin DIN connector on one end, that plugs into the back of the CoCo; the other end has three earphone-style plugs, that plug into the EAR, AUX (or MIC), and REMOTE jacks. The remote-control plug is smaller than the other two. The other two are differentiated by color: the black one plugs into the EAR jack, while the grey one plugs into AUX.</p>
<p>Here is an ASCII drawing of that connector, including a pinout and showing how the pins are numbered.  The drawing is of the connector at the end of the cable, with the pins pointing toward you.  So if you are looking at the back of the machine, at the connector there, this pinout is backwards.  My apologies for the wacky numbering; this is the same numbering as in the CoCo-1 technical manual.</p>
<p><br class="spacer_" /></p>
<pre>        -------       Pin#  Name      Connects to
      /  \___/  \     ----  -------   -----------------------------------
     /           \
    /             \    1    CASSMOT   SG stem

   |               |   2    GND       B stem, LG stem
   |  1o       o3  |
   |               |   3    CASSMOT   SG tip
        o     o
    \  4   o   5  /    4    CASSIN    B tip
     \     2     /
      \         /      5    CASSOUT   LG tip
        -------       

                         B=black    SG=small grey    LG=large grey
</pre>
<p>The names are given from the perspective of the computer, so &#8220;OUT&#8221; means output from the computer, input to the cassette, and it should go into the AUX (or MIC) jack while the cassette is recording.</p>
<p>The &#8220;connects-to&#8221; column show which of the three earphone-style plugs the wire leads to, and to which part (stem or tip).</p>
<p>Below is another cheesy ASCII drawing, this time of one of those plugs.  The cylindrical prong actually consists of two metal parts, separated by a narrow strip of plastic, drawn as &#8220;X&#8221;s.  The stem section is much longer than the tip section, and the tip section has a groove around it, so that a spring loaded contact can hold it in place a little bit when it is inserted into a jack.</p>
<p><br class="spacer_" /></p>
<pre>              -------------
              |           |
              |           |------------xx-\  /--\
              |           |            XX  --    |
              |           |  "stem"    XX   "tip"|
              |           |            XX  --    |
              |           |------------xx-/  \--/
              |           |
              -------------
</pre>
<p>For both of the plugs that carry data (the large ones), the stem is connected to ground, and the tip is the data line.</p>
<p>For the motor-control plug (the small plug), it shouldn&#8217;t really matter which of its two wires connects to its tip and which connects to its stem; you could just as easily connect 1 to SG tip and 3 to SG stem, and it should still work fine.  These two wires are just connected together by a relay in the computer when it is time to let the motor run.  The wiring shown here matches my cassette cable</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2011/02/coco-cassette-port-pins/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>URBANE basic revived</title>
		<link>http://www.coco3.com/community/2011/01/urbane-basic-revived</link>
		<comments>http://www.coco3.com/community/2011/01/urbane-basic-revived#comments</comments>
		<pubDate>Sat, 01 Jan 2011 21:48:48 +0000</pubDate>
		<dc:creator>earlcasper</dc:creator>
				<category><![CDATA[Urbane]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=28697</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>I have a c version of URBANE that spits out the same results as the CoCo basic one does. It takes like a second to preprocess the preprocessor written in URBANE. When I put it into Rainbow, I worked all right, but I couldn&#8217;t get it to write to READOUT. The other assemblers do, so it can be done. I&#8217;ve tried printf() and fprintf(stderr,) so far. Help, please.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2011/01/urbane-basic-revived/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Reading the CoCo joystick like it&#8217;s digital in BASIC</title>
		<link>http://www.coco3.com/community/2010/12/reading-the-coco-joystick-like-its-digital-in-basic</link>
		<comments>http://www.coco3.com/community/2010/12/reading-the-coco-joystick-like-its-digital-in-basic#comments</comments>
		<pubDate>Sat, 18 Dec 2010 07:24:29 +0000</pubDate>
		<dc:creator>jdiffend</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=28633</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>There has been a rather strange discussion about digital vs analog joysticks on another 8 bit computer forum.<br />
In the course of the discussion I came up with a way to treat an analog joystick like it&#8217;s digital using a data map.  I&#8217;m not sure if this has been used before or if the code is even right (I haven&#8217;t tested it yet), but I thought I&#8217;d share it in case someone would find it useful.</p>
<p>The theory behind this is using data arrays as a map to determine where the regions are for the digital directions.  It took 3 arrays but you can identify direction and jump to a line number to handle that direction in a single line of code.  I hope it&#8217;s faster than multiple tests.<br />
Modifying the axis maps allow you to change where the joystick is centered of length of throw required to indicate a direction.</p>
<p>Array A is for the X axis, array B for the Y axis, and C is to convert the sum of those two values to a digital direction.<br />
Two arrays are used for A&amp;B so that unique bits can be set for each axis and unique values are provided for each digital equivalent location.<br />
ON GOSUB could be used in place of ON GOTO<br />
Lines 100-900 are not provided but they handle each unique direction (state) of a digital joystick.</p>
<p><code></code></p>
<p>10 DIM A(64):DIM B(64):DIM C(37):FOR I=0 TO 63:READ A(I):NEXTI:FOR I=0 TO 63:READ B(I):NEXTI:FOR I=0 TO 36:READ C(I):NEXT I<br />
20 ON (C(A(JOYSTCK(0)) + B(JOYSTCK(1)))) GOTO 100,200,300,400,500,600,700,800,900<br />
30 GOTO 20<br />
999 REM X AXIS DATA<br />
1000 DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1<br />
1010 DATA 1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2<br />
1020 DATA 2,2,2,2,4,4,4,4,4,4,4,4,4,4,4,4<br />
1030 DATA 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4<br />
1039 REM Y AXIS DATA<br />
1040 DATA 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8<br />
1050 DATA 8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16<br />
1060 DATA 16,16,16,16,32,32,32,32,32,32,32,32,32,32,32,32<br />
1070 DATA 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32<br />
1079 REM DATA TO CONVERT TO DIGITAL JOYSTICK POSITION<br />
1080 DATA 0,0,0,0,0,0,0,0,0,1,2,0,3,0,0,0,0,4<br />
1090 DATA 5,0,6,0,0,0,0,0,0,0,0,0,0,0,0,7,8,0,9</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2010/12/reading-the-coco-joystick-like-its-digital-in-basic/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Convenient subroutines for assembly ?</title>
		<link>http://www.coco3.com/community/2010/12/convenient-subroutines-for-assembly</link>
		<comments>http://www.coco3.com/community/2010/12/convenient-subroutines-for-assembly#comments</comments>
		<pubDate>Fri, 03 Dec 2010 05:22:25 +0000</pubDate>
		<dc:creator>theferret</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=28573</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>I am pondering the wisdom of starting to teach my son assembly programming, courtesy of the mocha emulator, and edtasm. This would be part of a low-level &#8220;intro to computers&#8221; lesson I&#8217;m giving to him.</p>
<p>That being said, I&#8217;d like to make it as relatively painless as possible. I&#8217;d like to be able to teach him the basics of memory and register manipulation, while also giving him easy/pretty ways to see the output.</p>
<p>He&#8217;s never done programming before. and he&#8217;s 9.</p>
<p>So, I was wondering if there are any well-known subroutine entrypoints in ROM,  for things like</p>
<p>&#8220;print a number/string/whatever to the screen&#8221;, etc, etc., if you are writing a program directly in ASM (via EDTASM) rather than trying to insert things into a BASIC subroutine.</p>
<p>I thought there were&#8230; but it&#8217;s been 20 years so I dont remember clearly <img src='http://www.coco3.com/community/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2010/12/convenient-subroutines-for-assembly/feed</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Width 64?</title>
		<link>http://www.coco3.com/community/2010/10/width-64</link>
		<comments>http://www.coco3.com/community/2010/10/width-64#comments</comments>
		<pubDate>Tue, 26 Oct 2010 20:21:07 +0000</pubDate>
		<dc:creator>sc</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=28421</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>I was reading the coco entry on wikipedia just for fun, and I noticed it mentions upper and lower case at 32, 40, 64, and 80 columns.</p>
<p>64?  Are there some peeks&#038;pokes I&#8217;m unaware of that could shift basic into a 64 column mode?  Just curious&#8230;</p>
<p>This post was submitted by sc.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2010/10/width-64/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Gault&#8217;s Edtasm patch available?</title>
		<link>http://www.coco3.com/community/2010/10/gaults-edtasm-patch-available</link>
		<comments>http://www.coco3.com/community/2010/10/gaults-edtasm-patch-available#comments</comments>
		<pubDate>Thu, 07 Oct 2010 14:44:29 +0000</pubDate>
		<dc:creator>sc</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=28277</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>I want to use edtasm with drivewire.  My situation is:</p>
<p>coco3 512k, standard 6809<br />
HDB-DOS 1.1D DW3 COCO 3  (hdb-dos startup version message)<br />
a standard copy of disk edtasm</p>
<p>Will Robert Gault&#8217;s edtasm patch allow me to access my drivewire drive images directly from edtasm?</p>
<p>If so, is it still available?  (Couldn&#8217;t find a working URL&#8230;)</p>
<p>Thanks!</p>
<p>This post was submitted by sc.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2010/10/gaults-edtasm-patch-available/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Upcoming Phoenix IDE</title>
		<link>http://www.coco3.com/community/2010/09/upcoming-phoenix-ide</link>
		<comments>http://www.coco3.com/community/2010/09/upcoming-phoenix-ide#comments</comments>
		<pubDate>Wed, 15 Sep 2010 20:19:59 +0000</pubDate>
		<dc:creator>Roger</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Hot CoCo Stuff]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=28134</guid>
		<description><![CDATA[<a href="http://www.coco3.com/community/2010/09/upcoming-phoenix-ide" title="Upcoming Phoenix IDE"><img src="http://www.coco3.com/community/wp-content/uploads/yapb_cache/46589_156530984360092_100000095752969_499240_4765827_n2.8sdtx9bq6scgowso8k0skcs48.a9sxxja1njksswcs400wcc4cg.th.jpeg" width="180" height="101" alt="Upcoming Phoenix IDE" style="float:left;padding:0 10px 10px 0;" ></a>]]></description>
			<content:encoded><![CDATA[<a href="http://www.coco3.com/community/2010/09/upcoming-phoenix-ide" title="Upcoming Phoenix IDE"><img src="http://www.coco3.com/community/wp-content/uploads/yapb_cache/46589_156530984360092_100000095752969_499240_4765827_n2.8sdtx9bq6scgowso8k0skcs48.a9sxxja1njksswcs400wcc4cg.th.jpeg" width="180" height="101" alt="Upcoming Phoenix IDE" style="float:left;padding:0 10px 10px 0;" ></a><p>Oh, if we just had this back in the 80&#8242;s,&#8230;..</p>
<p>Users of the popular Rainbow IDE, and the Portal-9 IDE, behold the new Phoenix IDE &#8211; a CoCo author&#8217;s dream.  The best way to describe this IDE is &#8220;Rainbow x 2&#8243;.</p>
<p>In order to save the Micro Drive Pak, a special $29 preorder price is being offered with the conditions that you will have to wait about 3 weeks for the IDE to be wrapped up.  You&#8217;ll also get free upgrades, so beat the price by supporting CoCo3.com with a preorder sale.</p>
<p>Check out these screen shots.  Easy on the eyes, less mouse movement, and CoCo friendly. The docking panes can become floating windows that you can move to  another monitor if you like.  Just drag them where you want them, redock  them to another location, and configure your layout how you like.</p>
<p>One of the screen shots shows the OS-9 Level II RMA assembler crunching out an object file in a fraction of a second.  The readout window was moved to the right side of the screen and all the other panels have been neatly organized on the left sidebar, all using simple drag and drop.  You decide how you want the IDE to look, and CoCo OS-9 software development will be a snap.</p>
<p><br class="spacer_" /></p>
<p><a href="http://www.coco3.com/community/wp-content/uploads/2010/09/46617_156526707693853_100000095752969_499205_7543338_n1.jpg"><img class="alignnone size-medium wp-image-28126" title="The Phoenix IDE" src="http://www.coco3.com/community/wp-content/uploads/2010/09/46617_156526707693853_100000095752969_499205_7543338_n1-300x168.jpg" alt="" width="300" height="168" /></a><a href="http://www.coco3.com/community/wp-content/uploads/2010/09/46589_156530984360092_100000095752969_499240_4765827_n.jpg"><img class="alignnone size-medium wp-image-28124" title="Integrated with the M.E.S.S. emulator" src="http://www.coco3.com/community/wp-content/uploads/2010/09/46589_156530984360092_100000095752969_499240_4765827_n-300x168.jpg" alt="" width="300" height="168" /></a><a href="http://www.coco3.com/community/wp-content/uploads/2010/09/sample.jpg"><img class="alignnone size-medium wp-image-28139" title="Example title screen for your game" src="http://www.coco3.com/community/wp-content/uploads/2010/09/sample-300x168.jpg" alt="" width="300" height="168" /></a><a href="http://www.coco3.com/community/wp-content/uploads/2010/09/rma.jpg"><img class="alignnone size-medium wp-image-28141" title="Custom layout" src="http://www.coco3.com/community/wp-content/uploads/2010/09/rma-300x168.jpg" alt="" width="300" height="168" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2010/09/upcoming-phoenix-ide/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>CoCo 2 boot up sequence</title>
		<link>http://www.coco3.com/community/2010/09/coco-2-boot-up-sequence</link>
		<comments>http://www.coco3.com/community/2010/09/coco-2-boot-up-sequence#comments</comments>
		<pubDate>Sun, 05 Sep 2010 02:22:19 +0000</pubDate>
		<dc:creator>plainsteve</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=28061</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Is there information somewhere about how to set up the CoCo hardware?  Normally the BASIC ROM does this, right?  I am making a cartridge and so need to do it myself from the cart.</p>
<p>Thanks!</p>
<p>This post was submitted by plainsteve.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2010/09/coco-2-boot-up-sequence/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Drivewire and #-2</title>
		<link>http://www.coco3.com/community/2010/07/drivewire-and-2</link>
		<comments>http://www.coco3.com/community/2010/07/drivewire-and-2#comments</comments>
		<pubDate>Wed, 28 Jul 2010 17:39:28 +0000</pubDate>
		<dc:creator>sc</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=27940</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Using drivewire 3 at 115k baud is great.  But, of course, if you attempt a print #-2 from basic, things get ugly pretty fast.  Drivewire must have its own routine that outputs a character at 115k.  Is it possible to modify the #-2 handling in basic to use the drivewire routine instead?  In other words have the #-2 data sent out the serial at 115k just as plain text right in with the rest of the drivewire data?</p>
<p>This would totally screw up drivewire server, but I&#8217;m using my own drivewire server, and could have it detect plain text transmissions and forward them to a printer&#8230;</p>
<p>This post was submitted by sc.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2010/07/drivewire-and-2/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Coco 3 accessing Disk Basic ROM</title>
		<link>http://www.coco3.com/community/2010/07/coco-3-accessing-disk-basic-rom</link>
		<comments>http://www.coco3.com/community/2010/07/coco-3-accessing-disk-basic-rom#comments</comments>
		<pubDate>Mon, 05 Jul 2010 17:44:36 +0000</pubDate>
		<dc:creator>remz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[coco 3]]></category>
		<category><![CDATA[Disk]]></category>
		<category><![CDATA[dskcon]]></category>
		<category><![CDATA[rom mode]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=27751</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Hi CoCo guys,<br />
I was wondering something:<br />
Does Super Extended Basic patch some part of Disk Basic too?<br />
I am asking because I would like to know it is possible for a machine language program to access Disk ROM directly (by toggling into &#8216;ROM mode&#8217; at address $FFDE)?<br />
Let&#8217;s say for example a program which would require 128KB of RAM: could the program still be able to use Disk ROM by temporarily switching into ROM mode, access disk, then turn back into RAM mode, in which RAM would have been unharmed?<br />
There might be RAM variables to handle correctly in order for DSKCON routines to operate correctly, but could it be done?</p>
<p>Thanks and have a good day!</p>
<p>This post was submitted by remz.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2010/07/coco-3-accessing-disk-basic-rom/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>MMU swapping for &#8220;unlimited&#8221; variables</title>
		<link>http://www.coco3.com/community/2010/06/mmu-swapping-for-unlimited-variables</link>
		<comments>http://www.coco3.com/community/2010/06/mmu-swapping-for-unlimited-variables#comments</comments>
		<pubDate>Thu, 17 Jun 2010 04:10:22 +0000</pubDate>
		<dc:creator>sc</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=27580</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>So I was starting at basic unravelled the other day.  There are some simple addresses right up front that define the beginning and ending address of variable storage:</p>
<p>0066 0019 TXTTAB RMB 2 *PV BEGINNING OF BASIC PROGRAM<br />
0067 001B VARTAB RMB 2 *PV START OF VARIABLES<br />
0068 001D ARYTAB RMB 2 *PV START OF ARRAYS<br />
0069 001F ARYEND RMB 2 *PV END OF ARRAYS (+1)<br />
0070 0021 FRETOP RMB 2 *PV START OF STRING STORAGE (TOP OF FREE RAM)<br />
0071 0023 STRTAB RMB 2 *PV START OF STRING VARIABLES</p>
<p>My thought is this:  If you poked these pointers to intentionally set all variable/string space to reside in a single address block that corresponds to a logical block that could be swapped out as needed by changing it&#8217;s MMU register, then could you not then have a basic program in memory that could use all &#8220;lower&#8221; memory in the machine below $60000?</p>
<p>For example, setting the pointer values above to define var/string space as extending from $6000-$7FFF would give you 8K total of variable storage.  The associated MMU register for this memory space must by default contain 59, defining it as $76000-$77FFF.  So if you change that MMU register to 0, 1, 2, or whatever, you are in essence swapping a new 8K block into the $6000-$7FFF space.</p>
<p>So, set it to block 0, load a bunch of variables, set it to 1, load a bunch more, oh I need something from before, switch it back to 0 and retrieve it, etc.</p>
<p>Only tricky bit would be to preserve the pointers above when you switch blocks.  And maybe that&#8217;s too tricky to make any of this worth while.  Still, it seems like a real simple assembly program might be able to keep a table of preserved pointers associated with each possible MMU block value, and save/restore them each time you request a new block of memory.</p>
<p>Ok, just rambling now, still thought it was kinda interesting though.</p>
<p>This post was submitted by sc.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2010/06/mmu-swapping-for-unlimited-variables/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Disk &#8216;skip factor&#8217; explained please</title>
		<link>http://www.coco3.com/community/2010/06/disk-skip-factor-explained-please</link>
		<comments>http://www.coco3.com/community/2010/06/disk-skip-factor-explained-please#comments</comments>
		<pubDate>Tue, 15 Jun 2010 18:44:01 +0000</pubDate>
		<dc:creator>remz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[CoCo]]></category>
		<category><![CDATA[Disk]]></category>
		<category><![CDATA[dskini]]></category>
		<category><![CDATA[interleave]]></category>
		<category><![CDATA[skip factor]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=27564</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Hello all,</p>
<p>I would like to know more about the &#8220;Skip Factor&#8221; on CoCo disks. First, here&#8217;s what I know, please correct me if I&#8217;m wrong on anything. Basic&#8217;s DSKINI has an optional parameter allowing the user to format the disk using a specified skip factor.<br />
The Skip factor tells the floppy controller where to find a sector on a given track. This was designed to allow an optimized access to sequential read. By default, Basic uses &#8220;4&#8243; as Skip Factor.<br />
A &#8220;track&#8221; is physically a &#8216;circle&#8217; on the disk. This circle is divided into sectors.<br />
To demonstrate this, let&#8217;s illustrate the physical sector on a track:<br />
Physical sector (01 to 18, then it wraps around back to 01, etc..)<br />
01  02  03  04  05  06  07  08  09  10  11  12  13  14  15  16  17  18 (loop) 01  02 ..<br />
When Basic finishes loading sector 01, by the time it has finished processing and gets ready to start reading sector 02, the disk has kept revolving so it is already on the middle of sector 03 or 04.<br />
In order to read sector 02, the disk would have to complete almost a full spin and thus slowing down the read.<br />
To this effect, the &#8220;logical sector&#8221; are interleaved, as I said for Basic the default skip is 4, so the layout might look like this:<br />
Logical sector:<br />
01  10  06  15  02  11  07  16  03  12  08  17  04  13  09  18  05  14</p>
<p>This means that after reading sector 01, the disk will be somewhere over sector 06 or 15. Waiting for sector 02 is very short since it is almost the next one.</p>
<p>I read somewhere that OS-9 uses a skip factor of 2, since it performs faster than basic.</p>
<p>Now my questions:<br />
- Is using a skip factor of &#8217;2&#8242; the fastest possible disk access, since using a skip factor of &#8217;1&#8242; would leave no time between sector reads?<br />
- How does the disk controller *knows* what is the skip factor on a given disk?<br />
- Since &#8216;DSKCON&#8217; routines doesn&#8217;t know or care about skip factor, it means that Basic&#8217;s &#8216;DSKINI&#8217; has some special low level access directly to the controller hardware?<br />
- Will any &#8216;skip factor&#8217; work? i.e.: it would only be less than optimal, but it should no cause problem for Basic?<br />
- How can I experiment with custom Skip Factor using Rainbow IDE, which creates a CoCo DSK using &#8220;DECB DSKINI&#8221; internally during build?<br />
- Can a program detect what is the Skip Factor on a disk?<br />
- About disk read speed: since a track is physically a circle on the disk, it means that outer tracks are longer than inner tracks. And since track capacity remains constant, it must mean the data on the shortest track will read faster?<br />
- ..and if it reads faster, then sector skip time will be much shorter, thus the skip factor must be set according to the fastest sectors?</p>
<p>I did some quick test but I didn&#8217;t notice any speed difference between tracks, I am wrong?</p>
<p>This post was submitted by remz.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2010/06/disk-skip-factor-explained-please/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Accessing the floppy drive in assembler</title>
		<link>http://www.coco3.com/community/2010/06/accessing-the-floppy-drive-in-assembler</link>
		<comments>http://www.coco3.com/community/2010/06/accessing-the-floppy-drive-in-assembler#comments</comments>
		<pubDate>Fri, 04 Jun 2010 03:15:17 +0000</pubDate>
		<dc:creator>remz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[256 color]]></category>
		<category><![CDATA[artifact]]></category>
		<category><![CDATA[coco 3]]></category>
		<category><![CDATA[disk access]]></category>
		<category><![CDATA[disk routine]]></category>
		<category><![CDATA[Floppy]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=27353</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Hello fellow cocoders,<br />
does someone knows or can help with assembly routine to access the floppy drive on the CoCo? I mean without using Disk Basic code. I think there is an example included with Rainbow IDE named &#8216;pac-dude&#8217; which does read from floppy but the code is not commented.<br />
I have Chris Lomont&#8217;s hardware documentation, which explains the floppy registers: FF40, FF48..FF4B.<br />
I am just trying some 256 color artifact screen test on my coco and it looks very good, I am really surprised. I hope to keep you posted with a demo soon, if I get the time.<br />
Thanks!</p>
<p>This post was submitted by remz.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2010/06/accessing-the-floppy-drive-in-assembler/feed</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>CoCo 3 racing game prototype</title>
		<link>http://www.coco3.com/community/2010/05/coco-3-racing-game-prototype</link>
		<comments>http://www.coco3.com/community/2010/05/coco-3-racing-game-prototype#comments</comments>
		<pubDate>Fri, 07 May 2010 00:42:25 +0000</pubDate>
		<dc:creator>remz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[amiga]]></category>
		<category><![CDATA[coco 3]]></category>
		<category><![CDATA[demo]]></category>
		<category><![CDATA[hblank]]></category>
		<category><![CDATA[race]]></category>
		<category><![CDATA[racing]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=27138</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Hey guys</p>
<p>I was attempting at doing a smooth driving/racing game to see if the coco 3 could pull it out. I think it would be feasible. This screenshot shows the actual prototype running on MESS:</p>
<p>The demo has no user control yet, but the road moves at a totally arcade quality framerate of 60 frames per second. The road is shown in pseudo-3D perspective, along with a colorful gradient sky. The car dash itself is &#8216;borrowed&#8217; from Test Drive, Amiga version. You can see the game shows about 32 different colors at the same time, which is pretty cool. A bit like good-old DragonFire did with the CoCo 2 <img src='http://www.coco3.com/community/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
I haven&#8217;t tested it yet on the real hardware.<br />
The main problem with this kind of demo is the tricky timing required to use horizontal blank usefully. That is why I haven&#8217;t made a lot of progress.<br />
I would have hoped to add curvy roads eventually. The best would be up and down hill too but I haven&#8217;t figured out how to do it.</p>
<p><img src="http://www.coco3.com/community/wp-content/uploads/2010/05/coco3_race.jpg"/></p>
<p>This post was submitted by remz.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2010/05/coco-3-racing-game-prototype/feed</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>pucrunch on the Coco 3</title>
		<link>http://www.coco3.com/community/2010/05/pucrunch-on-the-coco-3</link>
		<comments>http://www.coco3.com/community/2010/05/pucrunch-on-the-coco-3#comments</comments>
		<pubDate>Wed, 05 May 2010 01:27:03 +0000</pubDate>
		<dc:creator>remz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[coco 3]]></category>
		<category><![CDATA[compression]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[pucrunch]]></category>
		<category><![CDATA[zak]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=27113</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Hi Guys! I&#8217;ve just finished implementing &#8216;pucrunch&#8217; decompressor on the Coco 3. Pucrunch is a compression tool for the Commodore 64 used in demos and games.<br />
It manages an amazing compression ratio: as an example, I&#8217;m trying to compressed the &#8216;Zak McKracken&#8217; bedroom image, which is 320 x 128 pixels in 16 colors. It takes 20480 bytes uncompressed.<br />
Using pucrunch, it drops to an amazing 3335 bytes.<br />
That&#8217;s even better than ZIP can manage, better than PNG, much better than GIF.<br />
And it uncompresses really fast: about 1 second on the Coco 3. Here&#8217;s an attached image of the picture decompressed (on coco 3 MESS emulation).<br />
I wonder if it would be possible to kinda &#8216;port&#8217; Zak McKracken to the coco 3 <img src='http://www.coco3.com/community/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
<p><a href="http://www.coco3.com/community/wp-content/uploads/27113/coco3_zak.gif">coco3_zak.gif (15 KB)</a></p>
<p>This post was submitted by remz.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2010/05/pucrunch-on-the-coco-3/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Okay, this ECB code has me lost &#8230;</title>
		<link>http://www.coco3.com/community/2010/04/okay-this-ecb-code-has-me-lost</link>
		<comments>http://www.coco3.com/community/2010/04/okay-this-ecb-code-has-me-lost#comments</comments>
		<pubDate>Sun, 18 Apr 2010 00:33:25 +0000</pubDate>
		<dc:creator>RetroRick1974</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=27023</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve seen code like this in numerous releases of T&#038;D Software.  It looks something like this:</p>
<p>1 REM COPYRIGHT (C) T&#038;D SOFTWARE 1984<br />
2 GOTO60000<br />
3 PMODE4:CLEAR1000,15599<br />
4 HT=PEEK(27)*256+PEEK(28)-783<br />
5 CLS:PRINT&#8221;THIS TEXT GOES TO GRAPHICS!&#8221;:EXEC HT<br />
59999 END:RUN<br />
60000 PCLEAR4:GOTO3</p>
<p>The code makes perfect sense to me until the &#8220;EXEC HT&#8221; thing.  This seems to dump the text screen onto the first page of PMODE 4 &#8230; with no ML code to work with.  I have no idea why.  <img src='http://www.coco3.com/community/wp-includes/images/smilies/icon_confused.gif' alt=':-?' class='wp-smiley' /> </p>
<p>Can anyone shed light on this?  Thanks.  <img src='http://www.coco3.com/community/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>This post was submitted by RetroRick1974.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2010/04/okay-this-ecb-code-has-me-lost/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Running Interbank Incident via CoCoNet</title>
		<link>http://www.coco3.com/community/2010/03/running-interbank-incident-via-coconet</link>
		<comments>http://www.coco3.com/community/2010/03/running-interbank-incident-via-coconet#comments</comments>
		<pubDate>Sun, 21 Mar 2010 04:22:45 +0000</pubDate>
		<dc:creator>Robert Gault</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=26880</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Guys, Roger has asked for OS-9 programmers to get OS-9 games running over the CoCoNet system. I&#8217;ve just put together a disk for The Interbank Incident which can be mounted on a PC using the CoCoNet server and played on a Coco3 via an RS-232 pak and the CoCoNet ROM.<br />
Roger will be testing the disk on his system. If all goes well, you might even be able to call up the game and play it over the internet.</p>
<p>Let&#8217;s see some support for Roger&#8217;s excellent product by making more game disks!</p>
<p>This post was submitted by Robert Gault.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2010/03/running-interbank-incident-via-coconet/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>New Instruction Set Documentation</title>
		<link>http://www.coco3.com/community/2010/03/new-instruction-set-documentation</link>
		<comments>http://www.coco3.com/community/2010/03/new-instruction-set-documentation#comments</comments>
		<pubDate>Wed, 10 Mar 2010 01:29:40 +0000</pubDate>
		<dc:creator>DarrenA</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[6309]]></category>
		<category><![CDATA[6809]]></category>
		<category><![CDATA[opcode]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=26741</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>I have posted a PDF of my Instruction Set Reference for the 6809 and 6309 with the hope that someone may find it useful.  I believe it contains more accurate and detailed information regarding the extra features of the 6309 than is available elsewhere.</p>
<p>http://www.coco3.com/community/wp-content/uploads/2010/03/6x09_Instruction_Sets.pdf</p>
<p>Enjoy!</p>
<p>This post was submitted by DarrenA.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2010/03/new-instruction-set-documentation/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>&#8220;RESET&#8221; opcode. Does it exist?</title>
		<link>http://www.coco3.com/community/2010/03/reset-opcode-does-it-exist</link>
		<comments>http://www.coco3.com/community/2010/03/reset-opcode-does-it-exist#comments</comments>
		<pubDate>Tue, 09 Mar 2010 16:23:39 +0000</pubDate>
		<dc:creator>hhos</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[machine language]]></category>
		<category><![CDATA[opcodes]]></category>
		<category><![CDATA[RESET]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=26711</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Does anyone know anything about this? I am modifying a disassembler for my own purposes. The disasm I&#8217;m modifying places a &#8220;RESET&#8221; opcode at $3E. I checked both 6809 and 6309 refs that I have. None of them show anything at this location. I&#8217;m thinking I will just remove it, but if anyone can tell me what this is, if it is indeed anything at all, I will leave it in. Thanks.</p>
<p>This post was submitted by hhos.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2010/03/reset-opcode-does-it-exist/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Timer $FF94 problem</title>
		<link>http://www.coco3.com/community/2010/02/timer-ff94-problem</link>
		<comments>http://www.coco3.com/community/2010/02/timer-ff94-problem#comments</comments>
		<pubDate>Thu, 25 Feb 2010 04:47:57 +0000</pubDate>
		<dc:creator>remz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[ff94]]></category>
		<category><![CDATA[gime]]></category>
		<category><![CDATA[timer]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=26515</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>I can&#8217;t figure this out. The CoCo 3 timer at $FF94..$FF95 which is a 12-bit counter.<br />
This is from Sock Master GIME reference:<br />
&#8220;The 12 bit timer can be loaded with any number from 0-4095. The timer resets and restarts counting down as soon as a number is written to FF94. Writing to FF95 does not restart the timer, but the value does save. Reading from either register does not restart the timer. When the timer reaches zero, it automatically restarts and triggers an interrupt (if enabled). The timer also controls the rate of blinking text.<br />
Storing a zero to both registers stops the timer from operating.&#8221;<br />
What it doesn&#8217;t say here is that writing a 00 to $FF94 stops the timer.<br />
In that case, and if I understand properly, it is impossible to set a timer count of less than 256 right?<br />
Example: I want to wait with a timer for &#8217;43&#8242;.<br />
I set it up like this:<br />
<code><br />
&nbsp;&nbsp;&nbsp;ldd	#$0043<br />
&nbsp;&nbsp;&nbsp;std	$FF94		; set TIMER for 43<br />
&nbsp;&nbsp;&nbsp;lda	#%00100000	; enable TIMER interrupt<br />
&nbsp;&nbsp;&nbsp;sta	FIRQENR		* enable the interrupt register<br />
</code><br />
Interrupt is never triggered. Nothing happens.<br />
The timer does not start since $00 is being written to $FF94.<br />
Am I mad?<br />
If not, Sock Master documentation is wrong and the GIME reference PDF I found too. This is false: &#8220;can be loaded with any number from 0-4095&#8243;. It can be loaded with any number from 256-4095.<br />
In fact, I would prefer to be mad.</p>
<p>This post was submitted by remz.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2010/02/timer-ff94-problem/feed</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
		<item>
		<title>VBLANK and HBLANK</title>
		<link>http://www.coco3.com/community/2010/02/vblank-and-hblank</link>
		<comments>http://www.coco3.com/community/2010/02/vblank-and-hblank#comments</comments>
		<pubDate>Tue, 23 Feb 2010 19:41:41 +0000</pubDate>
		<dc:creator>remz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[coco 3]]></category>
		<category><![CDATA[hblank]]></category>
		<category><![CDATA[hbord]]></category>
		<category><![CDATA[hsync]]></category>
		<category><![CDATA[vblank]]></category>
		<category><![CDATA[VBORD]]></category>
		<category><![CDATA[vsync]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=26509</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Hello fellow CoCoders,</p>
<p>I would like to know if the PIA &#8216;VSYNC FLAG&#8217; and &#8216;HSYNC FLAG&#8217; can be read on a CoCo 3 running a GIME video mode, such as 320x200x16 colors.<br />
In order word: can I know the state of the vertical sync and horizontal sync without using interrupt, just by reading the PIA registers, like a pseudo-code while loop like this:<br />
while(PIA.VSYNC == false) wait;<br />
// Great, we are in VBLANK period: do something useful<br />
&#8230;<br />
while(PIA.VSYNC == true) wait;<br />
// OK the vertical blank period is over, the screen begins to be traced.<br />
&#8230;<br />
I&#8217;ve done some test but I failed miserably.</p>
<p>Thanks!</p>
<p>This post was submitted by remz.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2010/02/vblank-and-hblank/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>CoCOSID2</title>
		<link>http://www.coco3.com/community/2010/02/cocosid2</link>
		<comments>http://www.coco3.com/community/2010/02/cocosid2#comments</comments>
		<pubDate>Tue, 16 Feb 2010 01:58:20 +0000</pubDate>
		<dc:creator>remz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[battle valley]]></category>
		<category><![CDATA[c64]]></category>
		<category><![CDATA[coco 3]]></category>
		<category><![CDATA[cocosid]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[SID]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=26493</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>At last, it is done: CoCoSID2 playing a complete music, converted automatically from a Commodore 64 .SID music file.<br />
Here is a link to the resulting MP3: <a title="http://www.coco3.com/community/wp-content/uploads/2010/02/Battle_Valley_complete.mp3" href="http://www.coco3.com/community/wp-content/uploads/2010/02/Battle_Valley_complete.mp3" target="_blank">http://www.coco3.com/community/wp-content/uploads/2010/02/Battle_Valley_complete.mp3</a><br />
The music is from the game Battle Valley on the C64, by Jeroen Tel. It is pretty long: 7 minutes!</p>
<p>The mixing is very high quality, effectively mixing 3 channels at 23.5 KHz.<br />
The music itself is converted automatically by a Perl script I wrote, which take a .SID and convert it into CoCoSID2 data. This new format features endless possibilities such as vibrato, portamento, attack/decay/sustain/release, etc.</p>
<p>One of the biggest challenge was fitting the song into the remaining space (in order to keep the file small enough so that a simple LOADM command loads both program and data simultaneously).<br />
In fact the uncompressed complete song takes exactly 125952 bytes (123 KB).<br />
Using two stages of compression, I managed to compress it down to 29478 bytes (29 KB). The music player uncompress data in realtime without any requiring memory. So making a CoCo 2 version is absolutely possible.</p>
<p>However since the music data takes so much space, I have removed the background image as it didn&#8217;t fit anymore.</p>
<p>This is the best sound I have ever heard a CoCo generate, even including the Orchestra-90 pak which sounded so &#8220;thin&#8221;.<br />
I hope you enjoy it. As the first CoCoSID, I can gladly put the source code online too.<br />
Thanks to everyone who helped creating this project!<br />
Rem</p>
<p>This post was submitted by remz.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2010/02/cocosid2/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://www.coco3.com/community/wp-content/uploads/2010/02/Battle_Valley_complete.mp3" length="8387524" type="audio/mpeg" />
		</item>
		<item>
		<title>Dangerous loading</title>
		<link>http://www.coco3.com/community/2010/02/dangerous-loading</link>
		<comments>http://www.coco3.com/community/2010/02/dangerous-loading#comments</comments>
		<pubDate>Wed, 03 Feb 2010 14:45:59 +0000</pubDate>
		<dc:creator>remz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[crash loading stack]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=26439</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Hello guys<br />
I had a dangerous bug yesterday while coding my music synth. I would like to know what is a safe way to load a program without risking this:<br />
I have set my code and data to start at org $4000, and reaching up to address $8000.<br />
The problem I encountered seems to be related to the fact that the CoCo BASIC stack pointer starts at $8000 so it hangs in the range of $7FD0 or something like that when a program is loaded from LOADM&#8221;HELLO. What happens is that before your program can even start (and thus set the stack to somewhere safe like $F000 and put to Coco in all-RAM mode), a little bit of data will get corrupted near the initial stack pointer. Maybe its the disk loading routine itself? I don&#8217;t know.</p>
<p>But what happened to me was having corrupted data which in turned led to a complete crash with an invalid opcode. Even worse the bug is somewhat random since the stack or corruption is not exactly the same each time I booted it up. Very annoying bug, since even MESS Debugger can&#8217;t help because when it &#8216;crashes&#8217; on an illegal opcode, it simply stops working and doesn&#8217;t tell you anything about it. Arggh.</p>
<p>This post was submitted by remz.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2010/02/dangerous-loading/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>A 640&#215;4 Artifact BMP Viewer and More Details on the Mode</title>
		<link>http://www.coco3.com/community/2010/01/a-640x4-artifact-bmp-viewer-and-more-details-on-the-mode</link>
		<comments>http://www.coco3.com/community/2010/01/a-640x4-artifact-bmp-viewer-and-more-details-on-the-mode#comments</comments>
		<pubDate>Sun, 10 Jan 2010 07:50:48 +0000</pubDate>
		<dc:creator>Robert Gault</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=26335</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>We have been having so much fun with the work of Joel, Jason, and others using the 640x225x4 screen viewed on a composite monitor, that some assumptions probably have been made about this mode that are not correct.</p>
<p>The work was stimulated by a discussion of the GrafExpress package. The included program, Art, was of particular interest. This program appears to mix four levels of cyan, blue, red, and green to achieve 256 colors on screen at the same time. The method sets Palettes 0-3 to 0,16,32, and 48 which are black, dark gray, light gray, and white on a composite monitor. When seen on an NTSC monitor, artifact colors are created. How this technique works has been discussed in other threads on this site.</p>
<p>The most impressive results so far have come from hand creating a palette file for use with PC programs such as GIMP and Paint Shop Pro. Graphic files have been converted to BMP images, the palette colors changed to those displayed by the Coco, the images re-sized and aspect ratio adjusted, the BMP header removed, and the images save as .vef files.<br />
This is a large amount of manual labor and the results, which are impressive, are completely dependent on the manually create palette file and how various PC programs reduce the number of colors to fit the new palette.</p>
<p>There ought to be a method for converting BMP palettes to composite artifacts automatically so that hand crafted palettes are not necessary. To make any progress in this direction, the actual colors displayed by the 640&#215;4 mode must be known. It is very unlikely that these colors are cyan, blue, red, and green.<br />
Paint Shop Pro and probably other programs will display both RGB and HSL color data during color adjustment of palette entries. The easiest way to visualize the HSL (ie. composite) color space is as a circle while RGB color space is a cube. If you look at the color &#8220;wheel&#8221; in Paint Shop Pro, you can see that if red is assumed to be the starting color, at 90deg is a yellow-green, 180deg cyan, 270deg purple, and 360deg returns to red.</p>
<p><img src="http://www.coco3.com/community/wp-content/uploads/2010/01/Wheel2.gif" alt="Paint Shop Pro color wheel" width="368" height="428" class="aligncenter size-full wp-image-26343" /><br />
As the Coco artifact colors of the 640&#215;4 mode are synchronized with each byte, each byte must represent one color burst cycle. As there are four &#8220;primary colors&#8221; per byte they must be arraigned around the HSL color wheel in 90deg intervals. Therefore the colors must be those mentioned above for Paint Shop Pro.</p>
<p>The program, Art, can not be mixing more than one &#8220;pure&#8221; color as the RGB primaries are at 120deg intervals around the color wheel. Since the artifact colors are not true composite colors, we can&#8217;t use the Coco definition of CMP color xxIIPPPP to convert RGB to CMP. We also must realize that each time we add artifact &#8220;blue&#8221; or &#8220;green&#8221; we are also adding some red. Even more confusing is how to derive the value for cyan from an RGB palette.</p>
<p>At this point we should try to validate the above conclusions. One test would be to see what happens in the program, Art, when you blend the four main colors. Anyone in the audiance know what you get when you use additive colors and blend red with cyan? If you do that in Art, using full red and full cyan, you get light gray. How about blending blue and green? That you can do in Paint Shop Pro and the result not surprisingly is cyan. However with Art, &#8220;blue&#8221; mixed with &#8220;green&#8221; give almost the same color gray as obtained with red and cyan. Clearly the 640&#215;4 mode is not producing blue and green for &#8220;primary colors&#8221;. It looks like the above conclusions are essentially correct about the nature of the four &#8220;primary colors&#8221; of the 640&#215;4 mode.<br />
That gives us a clue for a method of obtaining a value for the cyan entry from an RGB palette, we can added together the values for blue and green. This could also solve the problem presented by the presence of red in both the Coco &#8220;blue&#8221; and &#8220;green&#8221; colors. Cyan &#8220;cancels&#8221; out red so if we create cyan from the RGB BG values, we also reduce the effect of red from the purple and yellow-green Coco colors.</p>
<p>There is one other problem with the 640&#215;4 artifact mode. The shape of the pixels is rectangular rather than round or square. In fact the pixel width is about twice the pixel height. This problem requires that each line be doubled on the Coco if a correction is not made on a PC when creating .vef files. However, this problem also offers the possiblilty to double the effective number of colors the 640&#215;4 mode can display, while at the same time correcting the aspect ratio. When converting RGB palette colors to 640&#215;4 artifact palette colors, any error can be used to change the color value for the duplicate pixel. The resulting image should look like a half-tone screening process used in commercial printing.</p>
<p>Well theory is one thing and programs are another. I&#8217;ve managed to write an assembly program to view true BMP files on a Coco3 using the 640&#215;4 artifact mode. The program will work with either a 128k or 512k Coco3. A 640x225x4 screen is used but each horizontal line is 256 bytes long because HVEN is activated. The height of the image is limited by the amount of memory. The right joystick is used to scroll over the image. The program requires any graphic image on a PC to be reduced in size to a maximum width of 256 bytes,colors reduced to a maximum of 256, and the file saved in BMP format. You will find that the resulting file sizes will typically place a limit of two images per side of a 35 track Coco disk.</p>
<p>The zip file contains a .dsk image with several programs. The main program are HLOAD.BAS and HLOADDW3.BAS. These are Basic loaders for the ml program. They will ask which disk contains the bmp file and what is the file name. Use HLOAD if all disks will be mounted in a real Coco3 system. Use HLOADDW3 if the disks will be mounted on a PC with a Drivewire system. More details are in the DW3 version as remarks.<br />
Also on the disk are several programs that create color charts demonstrating the possible colors. Viewing the charts on an RGB system or an emulator set for Composite display is informative. There are several image disks containing BMP files. Run on an emulator set for Composite will show the images in gray scale. An NTSC monitor or TV must be used to view the images in color.</p>
<p><a href="http://www.coco3.com/community/wp-content/uploads/26335/bmpDemo.zip">bmpDemo.zip (304 KB)</a></p>
<p>This post was submitted by Robert Gault.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2010/01/a-640x4-artifact-bmp-viewer-and-more-details-on-the-mode/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>About Urbane</title>
		<link>http://www.coco3.com/community/2010/01/28758</link>
		<comments>http://www.coco3.com/community/2010/01/28758#comments</comments>
		<pubDate>Fri, 01 Jan 2010 20:59:15 +0000</pubDate>
		<dc:creator>Roger</dc:creator>
				<category><![CDATA[Urbane]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=28758</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<h1><span style="color: #000080;">CoCo Urbane BASIC</span></h1>
<p><span style="color: #000080;">A Preprocessor for Disk Extended Color Basic for the CoCo 1, 2, 3 and their Emulators</span></p>
<hr />
<p><span style="color: #000080;">Urbane is designed to allow any DECB program to be written without line numbers and with unique variables of any length. All DECB commands and functions are supported and version 1.060202 is considered complete and ready for use in writing any DECB program.</span></p>
<hr />
<p><span style="color: #000080;"><br class="spacer_" /></span></p>
<p><span style="color: #000080;">Roger Taylor has graciously agreed to host the files. Thanks Roger!</span></p>
<p><span style="color: #000080;"><br class="spacer_" /></span></p>
<p><span style="color: #000080;">There are three files currently available:</span></p>
<hr />
<p><br class="spacer_" /></p>
<p><span style="color: #000080;">Download These Two Files if you are just curious about what Urbane is:</span></p>
<p><span style="color: #000080;"><br class="spacer_" /></span></p>
<p><span style="color: #000080;">1)Source Colorized by the ConTEX editor.<br />
 Use this file as an example how to write your own programs.</span></p>
<p><span style="color: #000080;"><a href="http://www.coco3.com/hosted/urbane/ubn_in.htm" target="_top">ubn_in.htm</a></span></p>
<p><span style="color: #000080;"><br class="spacer_" /></span></p>
<p><span style="color: #000080;">2) The produced DECB program also Colorized by ConTEX.</span></p>
<p><span style="color: #000080;"><a href="http://www.coco3.com/hosted/urbane/ubn_out.htm" target="_top">ubn_out.htm</a></span></p>
<p><span style="color: #000080;"><br class="spacer_" /></span></p>
<hr />
<p><br class="spacer_" /></p>
<p><span style="color: #000080;">Download This Zip File if you wish to run the Preprocessor. <br />
 It includes a &#8220;dsk&#8221; file for the CoCo  ready to run<br />
 and includes all files including the above two &#8220;htm&#8221; files.</span></p>
<p><span style="color: #000080;"><a href="http://www.coco3.com/community/download/urbane.zip">urbane.zip</a></span></p>
<hr />
<p><br class="spacer_" /></p>
<p><span style="color: #000080;"><a href="http://www.coco3.com"> <img src="../../banners/coco3com.gif" border="0" alt="" width="145" height="100" /></a></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2010/01/28758/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sprites at one byte / pixel</title>
		<link>http://www.coco3.com/community/2009/12/sprites-at-one-byte-pixel</link>
		<comments>http://www.coco3.com/community/2009/12/sprites-at-one-byte-pixel#comments</comments>
		<pubDate>Tue, 29 Dec 2009 07:42:01 +0000</pubDate>
		<dc:creator>Potatohead</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=26159</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>So I was thinking about drawing sprites off and on today.  One byte per pixel makes for some interesting changes.</p>
<p>No shifting of shapes is required, eliminating pre-shifted shapes, coarse movement, or slower shifting on the fly operations.  All in all, a gain I think.</p>
<p>Bit masking becomes an effect, rather than a draw tool.  With multiple pixels in a byte, masking is needed to combine the on screen data with the sprite.  Now, that can be used for overlay type graphics, like a map that doesn&#8217;t draw solid, but see through.</p>
<p>Probably the coolest thing is just not drawing transparent pixels.  Having sprites of arbitrary size is easier, in that there isn&#8217;t a multiple of 8 factor to be combined with masking.  It&#8217;s just pixels, loads and stores.</p>
<p>Sprite color data can be stored in a sequence thus:</p>
<p>Sample Space Ship Sprite<br />
<code><br />
--#--       - = Transparent, not drawn<br />
#@@@#       # = White<br />
-###-       @ = Color<br />
</code><br />
DATA   $FF, $FF, $A0, $A0, $A0, $FF, $FF, $FF</p>
<p>Start with upper left pixel, which is transparent, encoding only &#8220;on&#8221; pixels, working to the right, then down in horizontal sweeps, ending at lower right.</p>
<p>Normally, the shape of a sprite is encoded in a bit pattern, with the color data coming from palette register settings.  Color in the NTSC 256 mode is absolute.  Write the value, get the color.  </p>
<p>The shape of the sprite then is just a matter of STA operations, with a screen position index.  </p>
<p>The easiest thing to do then, is to just encode the sprite with upper left &#8220;pixel&#8221; being start of screen, or 0 in the X and 0 in the Y, screen coordinate fashion.<br />
<code><br />
                            0         0,159 = SCREEN +159($9f)<br />
                            |                                 |<br />
0,0 = SCREEN            0 - +-#-----> (+ x)    . . .       ---+<br />
0,1 = SCREEN +160($A0)      #@@@#                             |<br />
0,2 = SCREEN +320           |###                              |<br />
        .                   |                                 |<br />
        .                   |                                 .<br />
        .                   |                                 .<br />
                            V  (+ y)                             .<br />
                            .                                 .<br />
                            .                                 .<br />
                            |                                 |<br />
                            +---                           ---+<br />
                                 159,199 = SCREEN +30719($77FF)<br />
</code></p>
<p>A Sprite Pixel address is calculated with (Y * 160 + X) + SCREEN</p>
<p>The sprite above is drawn at screen origin 0,0.</p>
<p>To draw it at a new origin of 10,10 do the math to get the address:</p>
<p>(10 * 160 + 10) = 1610 ($64A)</p>
<p>And add to the address of the graphics screen, SCREEN.</p>
<p>Individual sprite pixels are then just screen addresses, applying the same formula.</p>
<p>&#8230;or!<br />
<code><br />
STA #SCREEN+2  , X  'Where X is the new origin calculated above<br />
STA #SCREEN+160, X<br />
STA #SCREEN+161, X   +--<br />
STA #SCREEN+162, X   |<br />
STA #SCREEN+163, X   |  Sprite "Shape" is just addresses<br />
STA #SCREEN+164, X   |  Drawn at "X" origin<br />
STA #SCREEN+321, X   |<br />
STA #SCREEN+322, X   +--<br />
STA #SCREEN+323, X<br />
</code></p>
<p>The actual drawing routine requires that the colors be loaded, unless the sprite colors are the same.  In that case multiple STA operations can be used, or a STD operation to knock out two pixels more quickly.</p>
<p>This post was submitted by <a href="http://www.opengeek.org" rel="nofollow">Potatohead</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/12/sprites-at-one-byte-pixel/feed</wfw:commentRss>
		<slash:comments>29</slash:comments>
		</item>
		<item>
		<title>BASIC Sprite Editor Instructional .txt</title>
		<link>http://www.coco3.com/community/2009/12/basic-sprite-editor-instructional-txt</link>
		<comments>http://www.coco3.com/community/2009/12/basic-sprite-editor-instructional-txt#comments</comments>
		<pubDate>Sun, 27 Dec 2009 08:17:51 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[basic]]></category>
		<category><![CDATA[click]]></category>
		<category><![CDATA[coco 3]]></category>
		<category><![CDATA[draw]]></category>
		<category><![CDATA[editor]]></category>
		<category><![CDATA[Graphics]]></category>
		<category><![CDATA[instructions]]></category>
		<category><![CDATA[manual]]></category>
		<category><![CDATA[point]]></category>
		<category><![CDATA[qui]]></category>
		<category><![CDATA[sprite]]></category>
		<category><![CDATA[sprites]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=25977</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s the text file I spoke of previously.
<p><a href="http://www.coco3.com/community/wp-content/uploads/25977/CoCoDrawReadMe.txt">CoCoDrawReadMe.txt (9 KB)</a></p>
<p>This post was submitted by Paul.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/12/basic-sprite-editor-instructional-txt/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BASIC Sprite Editor for Emulators-  Hope this post works this time.</title>
		<link>http://www.coco3.com/community/2009/12/basic-sprite-editor-for-emulators-hope-this-post-works-this-time</link>
		<comments>http://www.coco3.com/community/2009/12/basic-sprite-editor-for-emulators-hope-this-post-works-this-time#comments</comments>
		<pubDate>Sun, 27 Dec 2009 08:15:44 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[basic]]></category>
		<category><![CDATA[click]]></category>
		<category><![CDATA[coco 3]]></category>
		<category><![CDATA[draw]]></category>
		<category><![CDATA[editor]]></category>
		<category><![CDATA[Graphics]]></category>
		<category><![CDATA[point]]></category>
		<category><![CDATA[qui]]></category>
		<category><![CDATA[sprite]]></category>
		<category><![CDATA[sprites]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=25970</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Here is the 5th revision of a sprite editing program I designed to assist in my graphics design for a BASIC game I am making.  I just wanted to share it with everyone.  I have included a text file (in the next post) that describes how to use the program, how to use the files created by the program, and a list of variables and subroutines withing CoCo Draw 5.1 so you can modify it yourself.  I ask if you modify it to please send me a copy and if you have any suggestions, please send me those as well.</p>
<p>Enjoy!
<p><a href="http://www.coco3.com/community/wp-content/uploads/25970/Sprite Editor Disk.dsk">Sprite Editor Disk.dsk (437 KB)</a></p>
<p>This post was submitted by Paul.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/12/basic-sprite-editor-for-emulators-hope-this-post-works-this-time/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>BASIC Source Code</title>
		<link>http://www.coco3.com/community/2009/12/basic-source-code</link>
		<comments>http://www.coco3.com/community/2009/12/basic-source-code#comments</comments>
		<pubDate>Fri, 25 Dec 2009 03:18:52 +0000</pubDate>
		<dc:creator>Corey</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=25807</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>If this is not the correct place for such a request, I apologize.  This is my first post here.</p>
<p>After being completely out of touch with the CoCo community for like 25 years, I&#8217;m finally getting back into it.</p>
<p>Back in the days, I had a printed copy of the BASIC interpreter in Assembly Language.  All three, standard BASIC, Extended BASIC and DISK BASIC with some comments.  Does anyone still have such monsters?  I&#8217;d love to get back into Assembly Language.  The most fun I had was tweaking the BASIC interpreter.</p>
<p>This post was submitted by Corey.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/12/basic-source-code/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>How to Use HGET/HPUT &amp; GET/PUT</title>
		<link>http://www.coco3.com/community/2009/12/how-to-use-hgethput-getput</link>
		<comments>http://www.coco3.com/community/2009/12/how-to-use-hgethput-getput#comments</comments>
		<pubDate>Mon, 14 Dec 2009 04:45:18 +0000</pubDate>
		<dc:creator>Robert Gault</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=25468</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>A recent question about the use of HBUFF led to comments about the use of HGET/HPUT. There are some definite problems in using these commands if you expect to get an image and then put it anywhere on the hi-res screens. It just won&#8217;t work!<br />
The long and short of it is the HGET area must be the same size as the HPUT area or the result is a corrupted image. The problem is that depending on the location of the upper left corner of the HGET array relative to the HPUT array, the areas can easily change because of the way in which SEB code calculates the areas. This can easily be seen in the following example designed to demonstrate the problem.</p>
<p>10 HSCREEN3:B=0:&#8217; Try values of 0-8 for B<br />
20 A=8:X1=B:Y1=0:GOSUB130<br />
30 HLINE(X1,Y1)-(X2,Y2),PSET,B<br />
40 HLINE(X1,Y1)-(X2,Y2),PSET<br />
50 HLINE(X1,Y2)-(X2,Y1),PSET<br />
60 W=X2-X1+1:H=Y2-Y1+1<br />
70 HBUFF1,W*H<br />
80 HGET(X1,Y1)-(X2,Y2),1:HCLS<br />
90 FOR I=0TO7:X1=I:Y1=I*24:GOSUB130<br />
100 HPUT(X1,Y1)-(X2,Y2),1,OR<br />
110 NEXTI<br />
120 GOTO120<br />
130 X2=X1+32:Y2=Y1+20:RETURN</p>
<p>After trying the above program with several values of B, change line 130 so that X2=X1+31 and run the program with B=0. The corruption is caused because Basic uses different array sizes for HGET and HPUT as I progresses from 0-7.<br />
The same problem exists with the PMODE GET/PUT as shown in the next example.</p>
<p>10 WIDTH32:PMODE4,1:PCLS:SCREEN1,1:B=0:&#8217; Try values of 0-8 for B<br />
20 A=8:X1=B:Y1=0:GOSUB130<br />
30 LINE(X1,Y1)-(X2,Y2),PSET,B<br />
40 LINE(X1,Y1)-(X2,Y2),PSET<br />
50 LINE(X1,Y2)-(X2,Y1),PSET<br />
60 W=X2-X1+1:H=Y2-Y1+1<br />
70 DIM M(W,H)<br />
80 GET(X1,Y1)-(X2,Y2),M:PCLS<br />
90 FOR I=0TO7:X1=I:Y1=I*24:GOSUB130<br />
100 PUT(X1,Y1)-(X2,Y2),M<br />
110 NEXTI<br />
120 GOTO120<br />
130 X2=X1+32:Y2=Y1+20:RETURN</p>
<p>Don&#8217;t forget to change line 130 from 32 to 31 in the second half of the trials.</p>
<p>If you are now crushed, because the above seems to indicate that you can&#8217;t create sprites with GET/PUT or HGET/HPUT and smoothly move them around on the screen, there is hope. The Microsoft Basic used for PMODE screens has a feature that Microware left out of the HSCREEN code. You can use option G with the GET/PUT commands.<br />
Let&#8217;s see what happens when option G is used in the next example.</p>
<p>10 WIDTH32:PMODE4,1:PCLS:SCREEN1,1:B=0:&#8217; Try values of 0-8 for B<br />
20 A=8:X1=B:Y1=0:GOSUB130<br />
30 LINE(X1,Y1)-(X2,Y2),PSET,B<br />
40 LINE(X1,Y1)-(X2,Y2),PSET<br />
50 LINE(X1,Y2)-(X2,Y1),PSET<br />
60 W=X2-X1+1:H=Y2-Y1+1<br />
70 DIM M(W,H)<br />
80 GET(X1,Y1)-(X2,Y2),M,G:PCLS<br />
90 FOR I=0TO7:X1=I:Y1=I*24:GOSUB130<br />
100 PUT(X1,Y1)-(X2,Y2),M,PSET<br />
110 NEXTI<br />
120 GOTO120<br />
130 X2=X1+32:Y2=Y1+20:RETURN</p>
<p>Note that now the rectangle smoothly moves across the screen one pixel at a time without being corrupted. This is quite different from the one byte per move or corruption seen without the G option (PMODE) or with HGET/HPUT.</p>
<p>Is there an option equivalent to G that can be used with HSCREENs? Unfortunately not. The only recourse open to HSCREEN users short of writing some machine language code to emulate the PMODE software is to create multiple images for each pixel in a byte. So using HSCREEN3 with eight pixels per byte for example, eight images are needed to obtain smooth movement.</p>
<p>10 HSCREEN3<br />
20 A=8:Y1=0:FOR I=0TO7:X1=I:GOSUB130<br />
30 HLINE(X1,Y1)-(X2,Y2),PSET,B<br />
40 HLINE(X1,Y1)-(X2,Y2),PSET<br />
50 HLINE(X1,Y2)-(X2,Y1),PSET<br />
60 W=X2-X1+1:H=Y2-Y1+1<br />
70 HBUFFI+1,W*H<br />
80 HGET(X1,Y1)-(X2,Y2),I+1:HCLS:NEXT<br />
90 FOR I=0TO7:X1=I:Y1=I*24:GOSUB130<br />
100 HPUT(X1,Y1)-(X2,Y2),I+1,OR<br />
110 NEXTI<br />
120 GOTO120<br />
130 X2=X1+32:Y2=Y1+20:RETURN</p>
<p>Now it does not matter if you change line 130 as was done in the earlier examples.</p>
<p>This post was submitted by Robert Gault.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/12/how-to-use-hgethput-getput/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BASIC Sprite Editor for use on VCC or any high over-clocking emulator.</title>
		<link>http://www.coco3.com/community/2009/12/basic-sprite-editor-for-use-on-vcc-or-any-high-over-clocking-emulator</link>
		<comments>http://www.coco3.com/community/2009/12/basic-sprite-editor-for-use-on-vcc-or-any-high-over-clocking-emulator#comments</comments>
		<pubDate>Sun, 13 Dec 2009 06:13:22 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[click]]></category>
		<category><![CDATA[coco 3]]></category>
		<category><![CDATA[draw]]></category>
		<category><![CDATA[editor]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[icons]]></category>
		<category><![CDATA[mouse]]></category>
		<category><![CDATA[point]]></category>
		<category><![CDATA[sprites]]></category>
		<category><![CDATA[Vcc]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=25450</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a program I designed specifically for VCC, but it may work on MESS I don&#8217;t know, I don&#8217;t use it.  Make sure you set the disk drive to overclock in the Cartridg&gt;502 Config menu.  Set the over-clocking speed to 89MHz for optimal speed.</p>
<p>I included some sample sprites I made for a game I am making.  This was the first in a series of BASIC applications to create and setup media for a BASIC video game.  I am currently working on a board layout app.   I need more memory for a board larger than 320&#215;192.</p>
<p>Hope you enjoy.</p>
<p><a href="http://www.coco3.com/community/wp-content/uploads/25450/BASIC SPRITE EDITOR DISK.dsk">BASIC SPRITE EDITOR DISK.dsk (437 KB)</a></p>
<p>This post was submitted by Paul.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/12/basic-sprite-editor-for-use-on-vcc-or-any-high-over-clocking-emulator/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wolf-3D style demo</title>
		<link>http://www.coco3.com/community/2009/12/wolf-3d-style-demo</link>
		<comments>http://www.coco3.com/community/2009/12/wolf-3d-style-demo#comments</comments>
		<pubDate>Mon, 07 Dec 2009 02:42:26 +0000</pubDate>
		<dc:creator>remz</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[coco 3]]></category>
		<category><![CDATA[demo]]></category>
		<category><![CDATA[gloom]]></category>
		<category><![CDATA[wolf]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=25368</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Hello everybody,</p>
<p>I have just finished a &#8220;wolfenstein 3D&#8221; style raycasting demo for the CoCo 3. It took countless hours but I am very proud of the result. One of my goal was to try to get it as fast as SockMaster&#8217;s Gloom demo. Here are the main features and info:</p>
<p>- Optimized raycasting engine<br />
- Fullscreen (256 x 192) in 16 colors, effective resolution is 128 x 192<br />
- Rock-solid, ultra precise 16-bit math calculations<br />
- Player to wall collision detection, with &#8216;sliding&#8217; on wall<br />
- Keyboard + Joystick simultaneous control: Analog joystick controls view, and keyboard controls movement<br />
- Use classic shooter &#8220;W A S D&#8221; keys or regular arrows. Strafe left/right, move forward/backward<br />
- 3D look up and down<br />
- No &#8216;fish-eye&#8217; effect: precise perspective correction<br />
- Fast delta segment rendering: approx. 15-20 frame per second<br />
- Small executable: almost everything is calculated at runtime<br />
- &#8220;Unlimited&#8221; view distance: limited only by maze size.<br />
- No clipping<br />
- Works on plain  CoCo 3 with 128KB</p>
<p><img class="alignnone size-full wp-image-25367" src="http://www.coco3.com/community/wp-content/uploads/2009/12/MESS_Wolf_demo1.jpg" alt="MESS_Wolf_demo1" width="525" height="392" /></p>
<p><img class="alignnone size-full wp-image-25366" src="http://www.coco3.com/community/wp-content/uploads/2009/12/MESS_Wolf_demo2.jpg" alt="MESS_Wolf_demo2" width="522" height="392" /></p>
<p>Download link for the .DSK here: The file is called &#8220;WOLF.BIN&#8221;:</p>
<p><a href="http://www.coco3.com/community/wp-content/uploads/2009/12/REMDISK_Wolf_demo.zip">http://www.coco3.com/community/wp-content/uploads/2009/12/REMDISK_Wolf_demo.zip</a></p>
<p>Comments are welcome!<br />
Thank you very much,<br />
Rem</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/12/wolf-3d-style-demo/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Key Repeat</title>
		<link>http://www.coco3.com/community/2009/11/key-repeat</link>
		<comments>http://www.coco3.com/community/2009/11/key-repeat#comments</comments>
		<pubDate>Sat, 28 Nov 2009 07:56:14 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[arrow]]></category>
		<category><![CDATA[key]]></category>
		<category><![CDATA[keys]]></category>
		<category><![CDATA[peek]]></category>
		<category><![CDATA[poke]]></category>
		<category><![CDATA[repeat]]></category>
		<category><![CDATA[repeater]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=25326</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Trying to find a simple way to make the keys repeat on the CoCo 3.  I remember (kind of 15 years+ ago) there being some sort of poke or peek to do this.  Anyone know?  I am trying to make a keyboard interface for a game I am making, but I want to make it so you just simply hold down the arrow key as opposed to hitting it continuously.  Also looking for advice on using sprite transparencies.</p>
<p>This post was submitted by Paul.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/11/key-repeat/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>What controls flicker with palette swapping techniques?</title>
		<link>http://www.coco3.com/community/2009/11/what-controls-flicker-with-palette-swapping-techniques</link>
		<comments>http://www.coco3.com/community/2009/11/what-controls-flicker-with-palette-swapping-techniques#comments</comments>
		<pubDate>Tue, 17 Nov 2009 13:57:02 +0000</pubDate>
		<dc:creator>Robert Gault</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=25283</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>We all know that the number of colors on screen at the same time can be increased by separating an image into the RGB components and swapping the screen at each vertical blanking pulse. You will see a flicker at a 60Hz rate with the intensity dependent on the relative brightness of each screen.</p>
<p>I&#8217;ve been playing with a different technique which uses a single image screen but swaps the palette registers through three different sets of colors. This also has a flicker and again the intensity depends on relative screen brightness.<br />
I thought that if the swap of palettes could be made more frequent, say in the horizontal blanking pulse, the flicker would be reduced because of the drastic rate increase.</p>
<p>Now here is the question, why is the flicker unchanged or slightly reduced with the 60Hz swap rather than the 15kHz swap? This is counter intuitive and I don&#8217;t know the answer.</p>
<p>You can look for yourselves as the enclosed zip file contains a test program and an image disk. Use a real Coco3 or and emulator. Give the image some time to load as it is large.
<p><a href="http://www.coco3.com/community/wp-content/uploads/25283/BMPSHOW.zip">BMPSHOW.zip (98 KB)</a></p>
<p>This post was submitted by Robert Gault.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/11/what-controls-flicker-with-palette-swapping-techniques/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Horizontal scrolling sprite demo</title>
		<link>http://www.coco3.com/community/2009/11/horizontal-scrolling-sprite-demo</link>
		<comments>http://www.coco3.com/community/2009/11/horizontal-scrolling-sprite-demo#comments</comments>
		<pubDate>Mon, 16 Nov 2009 04:52:53 +0000</pubDate>
		<dc:creator>remz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[coco 3]]></category>
		<category><![CDATA[demo]]></category>
		<category><![CDATA[fast]]></category>
		<category><![CDATA[scrolling]]></category>
		<category><![CDATA[sprite]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=25266</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Hello Cocoers,</p>
<p>I have just finished coding a sprite demo engine for the CoCo 3, it has been uploaded here:<br />
<a href="http://www.coco3.com/community/wp-content/uploads/2009/11/REMDISK_Sprite_Demo.zip">http://www.coco3.com/community/wp-content/uploads/2009/11/REMDISK_Sprite_Demo.zip</a></p>
<p>The demo features:<br />
- Fullscreen resolution of 256&#215;192 in 16 colors<br />
- Fast and smooth scrolling background<br />
- Up to 8 sprites, 16&#215;16 pixels, with transparency support<br />
- Very large background: 5440 pixels wide by 192 pixels = 522240 bytes of graphic compressed using tile maps<br />
- 60 frames per second at all time<br />
- Multiple animated background tiles<br />
- Runs on a stock CoCo 3 with 128KB<br />
- Color palette designed for RGB monitor</p>
<p>To control the demo:<br />
At startup, the demo displays 6 sprites. You can&#8217;t control them, they circle around the screen.<br />
Move joystick to the right to scroll (scrolling only works in one direction)<br />
Use joystick buttons to add or remove sprites: Button #0 add 1 sprite (up to 8 on the screen), Button #1 remove 1 sprite.</p>
<p>Known bugs or limitations:<br />
- When removing a sprite, sometimes a little bit of &#8216;garbage&#8217; may be left on the screen<br />
- Some sprites may flicker slightly when reaching the top of screen while scrolling, with background animated tiles.</p>
<p>The source code is 37,779 bytes long and took me countless hours to optimize. I believe this demo can prove a CoCo 3 is so versatile it could outperform a Commodore 64 at graphics.</p>
<p>Comments and suggestions are welcome!<br />
Thank you,<br />
Rem</p>
<p><img src="http://www.coco3.com/community/wp-content/uploads/25266/MESS_sprite_demo.jpg" alt="Rem sprite demo" width="523" height="391" /></p>
<p>This post was submitted by remz.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/11/horizontal-scrolling-sprite-demo/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Horizontal scrolling</title>
		<link>http://www.coco3.com/community/2009/11/horizontal-scrolling</link>
		<comments>http://www.coco3.com/community/2009/11/horizontal-scrolling#comments</comments>
		<pubDate>Wed, 11 Nov 2009 13:53:26 +0000</pubDate>
		<dc:creator>remz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[$FF9F]]></category>
		<category><![CDATA[coco 3]]></category>
		<category><![CDATA[fast]]></category>
		<category><![CDATA[horizontal]]></category>
		<category><![CDATA[offset]]></category>
		<category><![CDATA[register]]></category>
		<category><![CDATA[scrolling]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=25238</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Hello!<br />
I am trying to do some horizontal scrolling using $FF9F &#8220;Horizontal offset register&#8221;. By enabling the &#8216;virtual screen mode&#8217; with 256 bytes per row, I am able to perform scrolling but it only scrolls by steps of 2 bytes, which result in 4 pixels.<br />
The problem is that it&#8217;s too fast: at full frame rate (60 FPS on NTSC), 4 pixels per frame is rather fast.</p>
<p>My question is: is there a way to scroll only 1 pixel, or maybe scroll 1 byte instead of 2?<br />
(I mean without having to copy the whole screen, which would require at 256x192x4bpp = 24576 bytes x 60 fps = 1474560 bytes per second of memory copied: impossible on a 1.79 MHz CoCo 3)<br />
Thanks!</p>
<p>This post was submitted by remz.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/11/horizontal-scrolling/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Forth for Coco?</title>
		<link>http://www.coco3.com/community/2009/11/forth-for-coco</link>
		<comments>http://www.coco3.com/community/2009/11/forth-for-coco#comments</comments>
		<pubDate>Wed, 11 Nov 2009 04:55:26 +0000</pubDate>
		<dc:creator>beretta42</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[FORTH]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=25233</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Is there an existing FORTH implimentation specifically for the Coco ?  There seems to be plenty of 6809 forths, but is there specifically one for the Coco2 or 3?  FORTH seems to be an ideal match for the CoCo.   </p>
<p>This post was submitted by beretta42.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/11/forth-for-coco/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vertical border IRQ prevent writing to memory?</title>
		<link>http://www.coco3.com/community/2009/11/vertical-border-irq-prevent-writing-to-memory</link>
		<comments>http://www.coco3.com/community/2009/11/vertical-border-irq-prevent-writing-to-memory#comments</comments>
		<pubDate>Wed, 04 Nov 2009 02:25:06 +0000</pubDate>
		<dc:creator>remz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[FIRQ gime VBORD vertical sync]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=25216</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>I am puzzled: it appears from my experiments that enabling the FIRQ on GIME for VBORD (Vertical border sync) prevents any write access to GIME memory.<br />
Even more puzzling: this strange behavior only shows on a real Coco 3! On MESS, everything works correctly. However when I try my code on the Coco 3, the program runs but there is nothing getting drawn on the screen, just as if every write to GIME video memory were simply ignored. The program does not crash, I can see it runs because I can change the screen border color, and joystick reading code also runs.<br />
If needed I will gladly post a test source code showing the problem.<br />
Thank you very much!<br />
I&#8217;ll keep investigating in the meantime.<br />
Rem</p>
<p>This post was submitted by remz.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/11/vertical-border-irq-prevent-writing-to-memory/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Division in assembly</title>
		<link>http://www.coco3.com/community/2009/11/division-in-assembly</link>
		<comments>http://www.coco3.com/community/2009/11/division-in-assembly#comments</comments>
		<pubDate>Mon, 02 Nov 2009 13:31:12 +0000</pubDate>
		<dc:creator>sc</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=25209</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Summer and fall are winding down, that means 1) I&#8217;ll finally be cleaning my &#8220;office&#8221; soon, and 2) I&#8217;ll be firing up my coco&#8217;s again for the first time in maybe six months.  My hobbies tend to go into hibernation during the summer.</p>
<p>At any rate, a few of the simple assembly programs I was writing back in the day were on hold anyway, since I am just lousy ad dividing two numbers.  I don&#8217;t need precision, don&#8217;t even need a decimal place usually, I just want to take a couple integers and get an integer result, with maybe the first &#8220;remainder&#8221; stored somewhere just in case I feel like rounding.</p>
<p>Anyone have some simple examples of how do divide on the coco?  I&#8217;m assuming (might feel dumb here) that there isn&#8217;t a div opcode.  If there is, I&#8217;d better go re-read the 6809 manual&#8230;</p>
<p>-sc</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/11/division-in-assembly/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Realtime 2D scaling demo</title>
		<link>http://www.coco3.com/community/2009/10/realtime-2d-scaling-demo</link>
		<comments>http://www.coco3.com/community/2009/10/realtime-2d-scaling-demo#comments</comments>
		<pubDate>Thu, 29 Oct 2009 04:20:56 +0000</pubDate>
		<dc:creator>remz</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[2D]]></category>
		<category><![CDATA[demo]]></category>
		<category><![CDATA[realtime]]></category>
		<category><![CDATA[scale]]></category>
		<category><![CDATA[scaling]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=25189</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Hi everybody,</p>
<p>I just finished my first version of a fast 2D scaling demo for the Coco 3. I have uploaded the .BIN here:<br />
<a title="http://www.coco3.com/community/wp-content/uploads/2009/10/scale.zip" href="http://www.coco3.com/community/wp-content/uploads/2009/10/scale.zip">http://www.coco3.com/community/wp-content/uploads/2009/10/scale.zip</a></p>
<p>I would really like to hear your feedback about it! Use the left joystick to control vertical and horizontal scaling.<br />
And again, thanks to Robert for his support on the joystick input part.</p>
<p>Rem</p>
<p><a href="http://www.coco3.com/community/wp-content/uploads/25189/MESS_scaling_demo.jpg">MESS_scaling_demo.jpg (110 KB)</a></p>
<p>This post was submitted by remz.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/10/realtime-2d-scaling-demo/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>How To Check Which CPU Is Inside The CoCo</title>
		<link>http://www.coco3.com/community/2009/10/how-to-check-which-cpu-is-inside-the-coco</link>
		<comments>http://www.coco3.com/community/2009/10/how-to-check-which-cpu-is-inside-the-coco#comments</comments>
		<pubDate>Mon, 05 Oct 2009 01:19:27 +0000</pubDate>
		<dc:creator>Roger</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=24976</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<table style="width: 100%;" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="10%"></td>
<td width="85%"><span style="color: #009966;"> Robert Gault recently posted the following tip for determining which CPU type is installed inside your Coco. Stock cocos will have a 6809 cpu while upgraded machines will have the greatly advanced 6309. </span></p>
<hr /><span style="color: #009966;">This has to be done with machine language code. However, it is easy to use Basic to poke the required code into memory. The usual technique is to execute an instruction that has one meaning for the 6809 but another for the 6309; CLRD for example.</span><span style="color: #009966;">10 REM CPUTST<br />
20 LI=80<br />
30 FOR M=&amp;HE00 TO &amp;HE34 STEP10:SUM=0<br />
40 FOR I=0TO9:READA$:VA=VAL(&#8220;&amp;H&#8221;+A$):SUM=SUM+VA:POKE M+I,VA:NEXT:READ<br />
CHK:IFSUM&lt;&gt;CHK THEN PRINT&#8221;ERROR IN LINE&#8221;LI:END<br />
50 LI=LI+10:NEXT<br />
60 EXEC&amp;HE00<br />
70 END<br />
80 DATA CC, FF, FF, 10, 4F, 30, 8D, 0 , 19, 5D, 1116<br />
90 DATA 30, 8D, 0 , 2 , 7E, B9, 9C, 41, 20, 36, 809<br />
100 DATA 33, 30, 39, 20, 49, 53, 20, 50, 52, 45, 607<br />
110 DATA 53, 45, 4E, 54, 0 , 41, 20, 36, 38, 30, 569<br />
120 DATA 39, 20, 49, 53, 20, 50, 52, 45, 53, 45, 660<br />
130 DATA 4E, 54, 0 , 00, 00, 00, 00, 00, 00, 00, 162</span></p>
<p><span style="color: #009966;">Try this out. It will print on the screen the type of CPU present.</span></p>
<p><span style="color: #009966;">&#8220;Dan H. Eicher&#8221; wrote:<br />
&gt;<br />
&gt;  Does anyone have a short basic program I can type in to find out which CPU I<br />
&gt; have in my coco 3?<br />
&gt;<br />
&gt; Thanks,<br />
&gt; Dan<br />
</span></p>
<hr /><span style="color: #009966;">Thanks to Stephen for sending in the following&#8230; I haven&#8217;t been able to test for myself yet.</span><span style="color: #009966;">Due to a bug in the machine code the program as listed on your new CoCo pages under &#8220;Software Techniques and Reference&#8221; by Robert Gault will always return the same result (6309) no matter which CPU is present. The program listed below will correctly identify which CPU is present and will work on all Coco&#8217;s and Coco Clones such as the Dragon 32/64. </span></p>
<p><span style="color: #009966;">10 &#8216; 6309/6809 CPU ID PROGRAM<br />
20 &#8216; FOR THE COCO/COCO III<br />
30 &#8216; AND DRAGON 32/64<br />
40 &#8216; BY STEPHEN J WOOLHAM<br />
50 &#8216;<br />
60 START=&amp;HD00<br />
70 FOR I=START TO START+15:READ A$:POKE I,VAL(&#8220;&amp;H&#8221;+A$):C=C+PEEK(I):NEXT:IF C&lt;&gt;1363 THEN PRINT&#8221;ERROR IN DATA LINE&#8221;:END<br />
80 EXEC START<br />
90 IF PEEK(157)=3 THEN CPU$=&#8221;6309&#8243;ELSE IF PEEK(157)=9 THEN CPU$=&#8221;6809&#8243;<br />
100 PRINT&#8221;A &#8220;+CPU$+&#8221; CPU IS PRESENT&#8230;&#8221;:END<br />
110 DATA C6,FF,10,4F,5D,27,04,86,9,20,2,86,3,97,9D,39</span></p>
<p><span style="color: #009966;">Stephen Woolham<br />
SJWoolham@Hotmail.com</span></p>
<p><span style="color: #009966;">http://www.fortunecity.com/skyscraper/disk/162/</span></td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/10/how-to-check-which-cpu-is-inside-the-coco/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Reference List of Pokes Peeks and Execs</title>
		<link>http://www.coco3.com/community/2009/10/reference-list-of-pokes-peeks-and-execs</link>
		<comments>http://www.coco3.com/community/2009/10/reference-list-of-pokes-peeks-and-execs#comments</comments>
		<pubDate>Mon, 05 Oct 2009 00:24:15 +0000</pubDate>
		<dc:creator>Roger</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=24974</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><span style="color: #000000;">The following is a list of Coco 1 and 2 (should also work on the 3) pokes which were published in the Saskatoon Color Computer User&#8217;s Group newsletter, March 1986. Originally they were taken from The Color 80 Journal newsletter published by the Adirondiack Color Computer Club in New York state. These might work on a Dragon too- please let me know.I should also mention that I have added several pokes which were suggested  by people who have viewed this list on the internet. </span></p>
<h3><span style="color: #000000;">Important Ones</span></h3>
<ul><span style="color: #000000;"></p>
<li> POKE 65497,0 on Coco 1 and 2<br />
<blockquote><p>double speed of RAM and ROM. It will cause your screen to fill with garbage, and sometimes causes memory to disappear. Printer, disk and cassette functions won&#8217;t work.</p></blockquote>
</li>
<li> POKE 65497,0 on Coco 3<br />
<blockquote><p>double speed of RAM and ROM. Printer, disk and cassette functions won&#8217;t work.</p></blockquote>
</li>
<li>POKE 65496,0<br />
<blockquote><p>puts machine from double speed ROM and RAM back to normal speed.</p></blockquote>
</li>
<li> POKE 65495,0<br />
<blockquote><p>doubles speed of ROMs; Basic programs by 1 and a half. Does not work with all computers, or with disk, cassette or printer operations.</p></blockquote>
</li>
<li> POKE 65494,0<br />
<blockquote><p>puts ROMs and Basic back to normal speed. Cassette, printer and disk works normally.</p></blockquote>
</li>
<li> POKE 65315,54<br />
<blockquote><p><span style="color: #800000;">disables cartridge takeover, allows you to put in a Rompack without it starting up. NOTE: the use of this poke to put in a cartridge with the machine power on can cause damage to your computer. <span style="text-decoration: underline;"><strong>It&#8217;s use is not recommended.</strong></span></span></p></blockquote>
</li>
<li> ?PEEK(487)*256+PEEK(488)<br />
<blockquote><p>start address of last machine language program loaded off of cassette</p></blockquote>
</li>
<li> ?PEEK(126)*256+PEEK(127)<br />
<blockquote><p>end address of last machine language program loaded off of cassette</p></blockquote>
</li>
<li> To put a 64K Coco into all RAM mode, where the ROM can be modified:<br />
<blockquote><p>RESTORE: FOR I=3584 TO 3584+24:READ A:POKE I,A:NEXT:EXEC 3584: DATA 26,80,142,128,0, 166,132,183,255,223,167,128, 140,224,0,39,5,183,255,222,32, 239,28,175,57</p></blockquote>
</li>
<p></span></ul>
<p><span style="color: #000000;"><br />
POKE &amp;H95C9, &amp;H57: POKE &amp;HFF22, &amp;H50  Coco 3 Green border<br />
POKE &amp;H95C9, &amp;H17: POKE &amp;HFF22, &amp;150  coco 3 Black border<br />
FOR X = 442368 TO 446225: POKE X,32: NEXT  Forces lowercase on 32-column mode on the CoCo 3<br />
POKE 149,4:POKE 150,88  Sets printer baud to 50<br />
POKE 149,2:POKE 150,227 Sets printer baud to 75<br />
POKE 149,1:POKE 150,246 Sets printer baud to 110<br />
POKE 149,1:POKE 150,153 Sets printer baud to 134.5<br />
POKE 149,1:POKE 150,110 Sets printer baud to 150<br />
POKE 149,0:POKE 150,180 Sets printer baud to 300<br />
POKE 149,0:POKE 150,87  Sets printer baud to 600<br />
POKE 149,0:POKE 150,40  Sets printer baud to 1200<br />
POKE 149,0:POKE 150,25  Sets printer baud to 1800<br />
POKE 149,0:POKE 150,23  Sets printer baud to 2000<br />
POKE 149,0:POKE 150,18  Sets printer baud to 2400<br />
POKE 149,0:POKE 150,10  Sets printer baud to 3600<br />
POKE 149,0:POKE 150,7   Sets printer baud to 4800<br />
POKE 149,0:POKE 150,3   Sets printer baud to 7200<br />
POKE 149,0:POKE 150,1   Sets printer baud to 9600<br />
POKE 155,X  (16,32,64,132,255) Sets printer width to X<br />
POKE 111,254:DIR        sends directory to printer<br />
PEEK(65314)             returns an even number if printer is on / odd if off<br />
POKE 41382,188          generates a blinking cursor<br />
POKE 41923,0            disables break key on INPUT/LINEINPUT, must be in all RAM<br />
POKE 41923,3            restores break key operation, must be in all RAM<br />
PEEK(25)*256+PEEK(26)   basic program start address<br />
PEEK(106)               comma column width<br />
PEEK(116)               127=32k computer, 63=64k computer<br />
PEEK(170)               0 if trace flag on<br />
PEEK(148)               current cursor color, 1-11<br />
PEEK(182)               current PMODE, ECB only<br />
PEEK(188)               14=disk system, 6=cassette system<br />
PEEK(230)               DLOAD baud rate<br />
PEEK(282)               0 if in lowercase mode<br />
PEEK(32768)             69=ECB computer<br />
POKE 359,57             keeps the computer on the last SCREEN command<br />
used, until another SCREEN command is used.<br />
example: it will stay on the high-res screen<br />
SCREEN 1,1 until SCREEN 0,1 is typed in<br />
POKE 25,6:NEW           PCLEAR 0 in extended Basic<br />
POKE 25,14:POKE 3584,0:NEW   Pclear 0 in Disk Extended Basic<br />
POKE 65314,8            does a SCREEN 0,1 without Extended Basic<br />
POKE 65314,0            does a SCREEN 0,0 without Extended Basic<br />
POKE 178,X              when put before graphics commands in Extended<br />
Basic (Except PCLS) it will create different<br />
colours and patterns.<br />
POKE 186,X              if X is an even number from 2 to 128, it will<br />
move the pointer to the start of the Hi-res<br />
screen, and allows viewing in 1/2 pages<br />
POKE 45,0:POKE 46,0     disables the CONT function after BREAK<br />
POKE 113,0              cold start when RESET is pressed<br />
POKE 113,85             regular restart after POKE 113,0<br />
POKE 148,0              stops flashing cursor for 3 seconds<br />
POKE 175,79             same as TRON, ECB only<br />
POKE 280,PEEK(275)      true random numbers<br />
POKE 282,0              enable lowercase<br />
POKE 282,255            enable uppercase<br />
POKE 283,X              slows keyboard response, X=speed, 1 is fastest<br />
POKE 283,4              normal keyboard response<br />
POKE 293,0              disable ECB and CB commands<br />
POKE 293,20             reverses POKE 293,0<br />
POKE 65313,0            motor on<br />
POKE 65313,52           motor off</span></p>
<p><span style="color: #000000;">GAME CHEATS<br />
===========<br />
Replace X with number in range.</span></p>
<p><span style="color: #000000;">3D Brickaway           POKE 13648,X (1-255) # of men<br />
Astro Blast            POKE 17351,X (1-255) # of men<br />
Cashman                POKE 28302,X (1-255) # of men for player A<br />
Donkey King            POKE 12914,X (1-255) # men in Normal game<br />
POKE 12904,X (1-255) # men in Practice game<br />
Dunkey Munkey          POKE 15121,X (1-100) # of men<br />
Electron               POKE 14019,X (1-255) # of men<br />
Food War               POKE 10307,X (1-255) # of men<br />
Fury                   POKE 13951,X (1-255) # of men<br />
Galagon                POKE 10250,X (0-255) speed of first wave<br />
POKE 15621,X (0-255) speed of second wave<br />
Ghost Gobbler          POKE 9075,X (1-255) # of men<br />
POKE 10860,0 9000 pt. bonus shape (v1.5 only)<br />
POKE 10870,0 3 ghosts trapped (v1.5 only)<br />
POKE 11678,255 black background<br />
Grabber                POKE 16018,10  255 men<br />
Katerpillar Attack     POKE 10793,X (1-255) # of men<br />
Kron                   POKE 16902,4 255 men<br />
LunarRover Patrol      POKE 22369,X (1-255) # of men<br />
Mr. Dig                POKE 21561,X (1-255) # of men<br />
Mudpies                POKE 29679,X (1-100) # of men<br />
Pac-Tac I              POKE 9009,X (1-255) # of men<br />
Planet Invasion        POKE 7446,X (1-40) # of men<br />
Protectors II          POKE 8464,X (1-100) # of men<br />
Space Race             POKE 10605,X (1-100) # of men<br />
The Frog               POKE 12002,X (1-255) # of men<br />
Trapfall               POKE 11452,X (1-255) # of men<br />
Tutankam               POKE 17437,X (1-100) # of men<br />
Whirlybird Run         POKE 8312,X (1-255) # of men<br />
Zaxxon                 POKE 25624,X (1-255) # of men<br />
Zaksund                POKE 16670,X (1-255) # of men<br />
</span></p>
<hr /><span style="color: #000000;"><br />
The following pokes are courtesy of Andrew Williams.Pumpman        $4A85,X         X = number of men<br />
Spacerace      $298E,35            number of men<br />
Downland       $4147,8             number of men  (loaded at $4000 from rompak)<br />
Froggie        $43C1,X         X = number of men<br />
Shock Trooper  $3647,255           number of men<br />
Polaris        $4708,18                           (loaded at $4000 from rompak)<br />
$4709,18            no missile decrement<br />
Rommel 3D      $5EA6,57            constant shield<br />
Gravitor       $1CCA,X         X = number of men<br />
$28A5,57            no walls<br />
$29F5,57            no timer</p>
<p></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/10/reference-list-of-pokes-peeks-and-execs/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>BASIC Opcode Reference List</title>
		<link>http://www.coco3.com/community/2009/10/basic-opcode-reference-list</link>
		<comments>http://www.coco3.com/community/2009/10/basic-opcode-reference-list#comments</comments>
		<pubDate>Mon, 05 Oct 2009 00:23:39 +0000</pubDate>
		<dc:creator>Roger</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=24971</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<table style="width: 100%;" border="1" cellpadding="5">
<tbody>
<tr>
<td width="50%" valign="top"><span style="color: #009966;">Code</span></td>
<td width="50%" valign="top"><span style="color: #009966;">KeyWord</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">128</span></td>
<td valign="top"><span style="color: #009966;">FOR</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">129</span></td>
<td valign="top"><span style="color: #009966;">GO</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">130</span></td>
<td valign="top"><span style="color: #009966;">REM</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">131</span></td>
<td valign="top"><span style="color: #009966;">&#8216;</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">132</span></td>
<td valign="top"><span style="color: #009966;">ELSE</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">133</span></td>
<td valign="top"><span style="color: #009966;">IF</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">134</span></td>
<td valign="top"><span style="color: #009966;">DATA</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">135</span></td>
<td valign="top"><span style="color: #009966;">PRINT</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">136</span></td>
<td valign="top"><span style="color: #009966;">ON</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">137</span></td>
<td valign="top"><span style="color: #009966;">INPUT</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">138</span></td>
<td valign="top"><span style="color: #009966;">END</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">139</span></td>
<td valign="top"><span style="color: #009966;">NEXT</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">140</span></td>
<td valign="top"><span style="color: #009966;">DIM</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">141</span></td>
<td valign="top"><span style="color: #009966;">READ</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">142</span></td>
<td valign="top"><span style="color: #009966;">RUN</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">143</span></td>
<td valign="top"><span style="color: #009966;">RESTORE</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">144</span></td>
<td valign="top"><span style="color: #009966;">RETURN</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">145</span></td>
<td valign="top"><span style="color: #009966;">STOP</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">146</span></td>
<td valign="top"><span style="color: #009966;">POKE</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">147</span></td>
<td valign="top"><span style="color: #009966;">CONT</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">148</span></td>
<td valign="top"><span style="color: #009966;">LIST</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">149</span></td>
<td valign="top"><span style="color: #009966;">CLEAR</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">150</span></td>
<td valign="top"><span style="color: #009966;">NEW</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">151</span></td>
<td valign="top"><span style="color: #009966;">CLOAD</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">152</span></td>
<td valign="top"><span style="color: #009966;">CSAVE</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">153</span></td>
<td valign="top"><span style="color: #009966;">OPEN</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">154</span></td>
<td valign="top"><span style="color: #009966;">CLOSE</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">155</span></td>
<td valign="top"><span style="color: #009966;">LLIST</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">156</span></td>
<td valign="top"><span style="color: #009966;">SET</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">157</span></td>
<td valign="top"><span style="color: #009966;">RESET</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">158</span></td>
<td valign="top"><span style="color: #009966;">CLS</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">159</span></td>
<td valign="top"><span style="color: #009966;">MOTOR</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">160</span></td>
<td valign="top"><span style="color: #009966;">SOUND</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">161</span></td>
<td valign="top"><span style="color: #009966;">AUDIO</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">162</span></td>
<td valign="top"><span style="color: #009966;">EXEC</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">163</span></td>
<td valign="top"><span style="color: #009966;">SKIPF</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">164</span></td>
<td valign="top"><span style="color: #009966;">TAB(</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">165</span></td>
<td valign="top"><span style="color: #009966;">TO</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">166</span></td>
<td valign="top"><span style="color: #009966;">SUB</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">167</span></td>
<td valign="top"><span style="color: #009966;">THEN</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">168</span></td>
<td valign="top"><span style="color: #009966;">NOT</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">169</span></td>
<td valign="top"><span style="color: #009966;">STEP</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">170</span></td>
<td valign="top"><span style="color: #009966;">OFF</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">171</span></td>
<td valign="top"><span style="color: #009966;">&#8220;+&#8221;</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">172</span></td>
<td valign="top"><span style="color: #009966;">&#8220;-&#8221;</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">173</span></td>
<td valign="top"><span style="color: #009966;">&#8220;*&#8221;</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">174</span></td>
<td valign="top"><span style="color: #009966;">&#8220;/&#8221;</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">175</span></td>
<td valign="top"><span style="color: #009966;">&#8220;^&#8221;</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">176</span></td>
<td valign="top"><span style="color: #009966;">AND</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">177</span></td>
<td valign="top"><span style="color: #009966;">OR</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">178</span></td>
<td valign="top"><span style="color: #009966;">&#8220;&gt;&#8221;</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">179</span></td>
<td valign="top"><span style="color: #009966;">&#8220;=&#8221;</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">180</span></td>
<td valign="top"><span style="color: #009966;">&#8220;&lt;&#8221;</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">181</span></td>
<td valign="top"><span style="color: #009966;">DEL</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">182</span></td>
<td valign="top"><span style="color: #009966;">EDIT</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">183</span></td>
<td valign="top"><span style="color: #009966;">TRON</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">184</span></td>
<td valign="top"><span style="color: #009966;">TROFF</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">185</span></td>
<td valign="top"><span style="color: #009966;">DEF</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">186</span></td>
<td valign="top"><span style="color: #009966;">LET</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">187</span></td>
<td valign="top"><span style="color: #009966;">LINE</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">188</span></td>
<td valign="top"><span style="color: #009966;">PCLS</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">189</span></td>
<td valign="top"><span style="color: #009966;">PSET</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">190</span></td>
<td valign="top"><span style="color: #009966;">PRESET</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">191</span></td>
<td valign="top"><span style="color: #009966;">SCREEN</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">192</span></td>
<td valign="top"><span style="color: #009966;">PCLEAR</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">193</span></td>
<td valign="top"><span style="color: #009966;">COLOR</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">194</span></td>
<td valign="top"><span style="color: #009966;">CIRCLE</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">195</span></td>
<td valign="top"><span style="color: #009966;">PAINT</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">196</span></td>
<td valign="top"><span style="color: #009966;">GET</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">197</span></td>
<td valign="top"><span style="color: #009966;">PUT</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">198</span></td>
<td valign="top"><span style="color: #009966;">DRAW</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">199</span></td>
<td valign="top"><span style="color: #009966;">PCOPY</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">200</span></td>
<td valign="top"><span style="color: #009966;">PMODE</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">201</span></td>
<td valign="top"><span style="color: #009966;">PLAY</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">202</span></td>
<td valign="top"><span style="color: #009966;">DLOAD</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">203</span></td>
<td valign="top"><span style="color: #009966;">RENUM</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">204</span></td>
<td valign="top"><span style="color: #009966;">FN</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">205</span></td>
<td valign="top"><span style="color: #009966;">USING</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 128</span></td>
<td valign="top"><span style="color: #009966;">SGN</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 129</span></td>
<td valign="top"><span style="color: #009966;">INT</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 130</span></td>
<td valign="top"><span style="color: #009966;">ABS</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 131</span></td>
<td valign="top"><span style="color: #009966;">USR</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 132</span></td>
<td valign="top"><span style="color: #009966;">RND</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 133</span></td>
<td valign="top"><span style="color: #009966;">SIN</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 134</span></td>
<td valign="top"><span style="color: #009966;">PEEK</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 135</span></td>
<td valign="top"><span style="color: #009966;">LEN</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 136</span></td>
<td valign="top"><span style="color: #009966;">STR$</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 137</span></td>
<td valign="top"><span style="color: #009966;">VAL</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 138</span></td>
<td valign="top"><span style="color: #009966;">ASC</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 139</span></td>
<td valign="top"><span style="color: #009966;">CHR$</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 140</span></td>
<td valign="top"><span style="color: #009966;">EOF</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 141</span></td>
<td valign="top"><span style="color: #009966;">JOYSTK</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 142</span></td>
<td valign="top"><span style="color: #009966;">LEFT$</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 143</span></td>
<td valign="top"><span style="color: #009966;">RIGHT$</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 144</span></td>
<td valign="top"><span style="color: #009966;">MID$</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 145</span></td>
<td valign="top"><span style="color: #009966;">POINT</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 146</span></td>
<td valign="top"><span style="color: #009966;">INKEY$</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 147</span></td>
<td valign="top"><span style="color: #009966;">MEM</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 148</span></td>
<td valign="top"><span style="color: #009966;">ATN</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 149</span></td>
<td valign="top"><span style="color: #009966;">COS</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 150</span></td>
<td valign="top"><span style="color: #009966;">TAN</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 151</span></td>
<td valign="top"><span style="color: #009966;">EXP</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 152</span></td>
<td valign="top"><span style="color: #009966;">FIX</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 153</span></td>
<td valign="top"><span style="color: #009966;">LOG</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 154</span></td>
<td valign="top"><span style="color: #009966;">POS</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 155</span></td>
<td valign="top"><span style="color: #009966;">SQR</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 156</span></td>
<td valign="top"><span style="color: #009966;">HEX$</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 157</span></td>
<td valign="top"><span style="color: #009966;">VARPTR</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 158</span></td>
<td valign="top"><span style="color: #009966;">INSTR</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 159</span></td>
<td valign="top"><span style="color: #009966;">TIMER</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 160</span></td>
<td valign="top"><span style="color: #009966;">PPOINT</span></td>
</tr>
<tr>
<td valign="top"><span style="color: #009966;">255 + 161</span></td>
<td valign="top"><span style="color: #009966;">STRING$</span></td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/10/basic-opcode-reference-list/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How To Upgrade the CoCo 3 to 512k the Easy Way</title>
		<link>http://www.coco3.com/community/2009/10/how-to-upgrade-the-coco-3-to-512k-the-easy-way</link>
		<comments>http://www.coco3.com/community/2009/10/how-to-upgrade-the-coco-3-to-512k-the-easy-way#comments</comments>
		<pubDate>Mon, 05 Oct 2009 00:22:05 +0000</pubDate>
		<dc:creator>Roger</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=24969</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;">As of this writing (February, 1993), the CoCo 3 has long been orphaned, and support for it is now nearly non-existant.  As part of this situation, it has become impossible to buy 512K memory upgrade boards for the CoCo 3.  Well, if you have a 128K CoCo 3 and want to upgrade it to 512K, it still is possible to do this without a 512K memory board.  The good news about this approach is that all that is needed are 16 41256 DRAM chips and four .1 mfd to .47 mfd miniature capacitors, and four 18 pin DIP headers.   The BAD news is that this approach is very tedious, and requires considerably skill and experience with find soldering, and a lot of patience.</span><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"> Materials:</span></span></span></span></p>
<p><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"> 16   41256  (256K x 1) DRAM chips   These should preferably be 150 or 120 ns acess speed, although faster chips (100 ns or faster) will likely work just fine, too.</span></p>
<p><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"> 4  18 pin DIP headers, of a size that will plug into the four 18 pin memory sockets on the CoCo 3.    A Machine Pin style 18 pin socket may work fine for this purpose.   Machine Pin style 20 pin sockets can, of course, be hack-sawed into 18 pin sockets.</span></p>
<p><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"> 4  .1 to .47 mfd (I recommend .33 or .47 mfd) capacitors, physically very small in size (the size of a match-head is best).</span></p>
<p><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"> One short piece of wire.</span></p>
<p><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"><b> Approach:</b></span></p>
<p><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"> What you will do is make four QUADRUPLY STACKED sets of memory chips. That is, you will be making four, four-chip-high piggybacks on top of the four 18 pin headers.  Most of the pins will go straight thru and be soldered to the pins of the chip or header below them.   However, a few pins will be re- routed.</span></p>
<p><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"> Bend straight out (horizontally) pins 1,2, and 14 of a 41256 DRAM chip. Bend pin 16 of that DRAM chip &#8220;forward&#8221; so it reaches just a bit outward in the direction of the length of the 41256 chip.</span></p>
<p><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"> Line up the chip over the 18 pin header, so that pins 1 and 16 of the DRAM chip lie over pins 2 and 17 of the header.  See to it that pin 16 of the 41256 is bent in such a way that it can make contact with pin 18 of the header.</span></p>
<p><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"> Solder pins 3,4,5,6,7, and 9 of the DRAM chip to pins 4,5,6,7,8, and 9 of the header.   These pins will be going STRAIGHT DOWN, unbent.</span></p>
<p><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"> Solder pins 9,10,11,12,13, and pin 15 of the DRAM chip to pins 10,11,12,13,14, and pin 16 of the 18 pin header.  These pins will be going straight down.</span></p>
<p><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"> Solder pin 16 of the DRAM chip to pin 18 of the header.  This requires that pin 16 be bent a bit &#8220;forward&#8221;, as noted above.  You might want to put a &#8220;dog leg&#8221; type bend in it to keep it from contacting pin 17 of the header.</span></p>
<p><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"> Prepare three more 41256 chips in a similar fashion, EXCEPT don&#8217;t bend forward or out pin 1 or 16.  Leave pin 16 alone.  Now stack those three chips on top of the chip and header you prepared, one on top of the other.  Attach pin 1 of the chips to pin 1 of the lowest chip, and attach pin 16 of the chips to pin 16 of the chip below it.  Note that all the pin 16&#8242;s are routed to pin 18 of the header, and that all the pin 1&#8242;s are routed to the pin 1 of the lowest chip, which in turn is NOT hooked to the header, but instead is bent out.</span></p>
<p><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"> Now, using wire wrap or other small gauge wire, join on each chip pins 2 and 14.  Run wires from the joined pins 2 and 14 of each individual chip to pins 2,3,15, and 17 of the 18 pin header.  It does not matter what pair of joined pins goes to what pin of the header&#8230; just be sure that each of those four header pins is connected to a pair of joined pins 2 and 14 from one of the four DRAMs in the stack.</span></p>
<p><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"> Now solder on top of the stack the little capacitor, hooking one side of the capacitor to pin 8 of the DRAM chip and the other side to pin 16 of the DRAM chip at the top of the stack.</span></p>
<p><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"> Make up a total of four such stacks as above.</span></p>
<p><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"> Note that you will likely find it easiest to clip off the narrow part of the horizontally bent out pins, leaving just the fat part of them to solder to. This may in fact be necessary to keep the pins from hitting each other when the stacks are installed.</span></p>
<p><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"> Now plug each of the four stacks into the four 18 pin DRAM sockets in the CoCo 3.</span></p>
<p><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"> Solder short wire jumpers between the joined pin 1&#8242;s of each of the four stacks.</span></p>
<p><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"> Solder a wire from the joined pin 1&#8242;s of all 16 DRAMs to a plate thru solde r pad just in FRONT of pin 11 of CN4 on the CoCo 3 mother board. This is the missing address line used in the 512K upgrade.</span></p>
<p><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"> The plate thru pad in question is located very near CN4, between CN4 and CN 2 CN 4 is a 12 pin socket used for part of the 512K memory board, and CN 2 is th e socket for the keyboard of the CoCo 3.  Be SURE to remove the keyboard of the CoCo 3 before doing this, else you risk destroying the ribbon cable of the keyboard when you try to solder to the CoCo 3 mother board.</span></p>
<p><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"> Your CoCo will look a bit weird, as if there are four &#8220;high rise towers&#8221; in the memory chip sockets.  However, if you carefully follow these instructions, you SHOULD get out of this a 512K CoCo 3.</span></p>
<p><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"><b>Reference Information:</b></span></p>
<p><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"> Pin out of 41256 chip compared to pin out of 4464 chip socket in CoCo 3:</span></p>
<pre><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;">               41256   4464               ------------                        1  *OE  (not used by CoCo 3   tied high  Ignore     extra adr  A8  1   2  I/Oa  bi directional I/O line      Data In   Din 2   3  I/Ob  bi directional I/O line                *WE 3---4  *WE   write enable               *RAS 4---5  *RAS  Row Address Strobe                adr 5---6  adr   address line                adr 6---7  adr   address line                adr 7---8  adr   address line                Vcc 8---9  Vcc   +5 volts

               adr  9--10  adr               adr 10--11  adr               adr 11--12  adr               adr 12--13  adr               adr 13--14  adr    data in    Din 14  15  I/Oc  bidirectional I/O line              *CAS 15--16  *CAS  Column Adress Strobe      ground   gnd 16  17  I/Od  bidirectional I/O line                     \-18  gnd   ground</span></pre>
<p><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"> What is going on here is that the Din and Dout of each 41256 is connected t o each other, and those two joined pins are then connected to one of the bidirectional I/O lines of the header.  The one extra address line (pin 1 of a ll 16 chips) is hooked to the mother board so that it can connect to that address line of the GIME chip&#8217;s memory management section.  Finally, pin 1 of the 4464 chips is not actually used, for it is an enable line that is grounded all the time. Therefore, we can ignore the fact that the 41256 lacks such a line.</span><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"> It is a great pity we could NOT use four 44256 chips to upgrade the CoCo 3 to 512K memory.  This would have eliminated the hassel of staking chips four high . However, the refresh cycle for 44256 chips is 512 cycles, and the durn GIME ch ip in the CoCo supports only 256 cycle refresh.  One would need special extra circuitry (like that on the Disto 2 meg upgrade) to use such chips.</span></p>
<p><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"> I have successfully upgraded one CoCo 3 to 512K in this fashion. It&#8217;s AWFULLY tedious.</span></p>
<p><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;"> &#8212;marty     MARTYGOODMAN on Delphi<br />
MARTYGOODMAN@DELPHI.COM on Internet<br />
Please share this article freely with all.</span></p>
<p><span style="color: rgb(0, 153, 102);" mce_style="color: #009966;">P.S.  minor typo:   pin 14 of the 41256 is a Dout, not a &#8220;Din&#8221; line. All Din lines of a given 41256 chip are shorted to the Dout line of that chip in the CoCo 3 memory circuit. </span></p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/10/how-to-upgrade-the-coco-3-to-512k-the-easy-way/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How can I make a working cartridge image?</title>
		<link>http://www.coco3.com/community/2009/09/how-can-i-make-a-working-cartridge-image</link>
		<comments>http://www.coco3.com/community/2009/09/how-can-i-make-a-working-cartridge-image#comments</comments>
		<pubDate>Mon, 28 Sep 2009 23:20:04 +0000</pubDate>
		<dc:creator>Jmk</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[coco 3]]></category>
		<category><![CDATA[pak]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=20010</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Hi, I&#8217;m trying to convert a CoCo game to a form suitable for a Program PAK.</p>
<p>I&#8217;ve set up the &#8220;DK&#8221; header and made a rom image from $C000-$FFFF (I&#8217;ve left the last 16 bytes blank).</p>
<p>When I try it in MESS, it works in the CoCo 1/2 modes, but&#8230;</p>
<p>1.  With &#8220;old&#8221; Color BASIC, it does not autostart.  I have to type EXEC 49154, is this normal?<br />
2.  It does not work in any CoCo 3 mode.  It starts with a little bit of corruption on screen (some interrupt?), then crashes into a CoCo 3 text mode.  Are there any special considerations on a CoCo 3?</p>
<p>Thanks.</p>
<p>This post was submitted by <a href="http://www.indigobanquet.adsl24.co.uk" rel="nofollow">Jmk</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/09/how-can-i-make-a-working-cartridge-image/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>CBasic3 Manual</title>
		<link>http://www.coco3.com/community/2009/09/3767</link>
		<comments>http://www.coco3.com/community/2009/09/3767#comments</comments>
		<pubDate>Thu, 17 Sep 2009 21:05:06 +0000</pubDate>
		<dc:creator>Bill Pierce</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=3767</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Does anyone have a Cbasic3 (Cer-Comp) manual or quick reference card they could scan?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/09/3767/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>More CoCo Peeks and Pokes</title>
		<link>http://www.coco3.com/community/2009/09/more-coco-peeks-and-pokes</link>
		<comments>http://www.coco3.com/community/2009/09/more-coco-peeks-and-pokes#comments</comments>
		<pubDate>Sun, 06 Sep 2009 21:45:01 +0000</pubDate>
		<dc:creator>Roger</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=149</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>*****   SPECIAL!!!!  PATCHES AND BUG-FIXES TO THE COCO 3 ROMS !!!!   *****</p>
<p>POKE 62861,189:POKE 62862,244            fixes the HDRAW bug</p>
<p>POKE &amp;HE649,&amp;H10                                fixes the RGB and BMP commands</p>
<p>POKE 55180,18:POKE 55181,18:POKE 55182,18    turns of disk drive moter faster</p>
<p>POKE 38543,33:POKE 38563,33            fixes PCLEAR 0 error.  Now you can<br />
PCLEAR 0 and get 28941 bytes of free<br />
MEM!!</p>
<p>POKE &amp;HF670,18:POKE &amp;HF671,18            prevents a WIDTH command from clearing<br />
the screen</p>
<p>POKE &amp;HA1C1,&amp;H39:FOR F=&amp;HA1CA to &amp;HA1C1<br />
STEP -1:READA:POKE F,A:NEXT F:DATA 121,39,<br />
72,67,0,255,182,2,255,127                       put as the first line of your program<br />
it will speed up your computer by about<br />
15%!!  It patches the keyboard scan routine</p>
<p>FOR I=&amp;H8000 to &amp;H8013:READ B$:POKE I,VAL<br />
(&#8220;&amp;H&#8221;+B$):NEXT I:POKE &amp;H85CB,&amp;HBD:POKE<br />
&amp;H85CC,&amp;H80:POKE &amp;H85CD,0:DATA 86,21,BD,<br />
A2,82,A6,84,BD,A2,82,86,21,BD,A2,82,BD,85,<br />
D1,5A,39                                        patches the D command during EDIT to<br />
show the character being deleted!</p>
<p>FOR I=&amp;H8014 TO &amp;H8022:READ B$:POKE I,VAL<br />
(&#8220;&amp;H&#8221;+B$):NEXT I:POKE &amp;HAB85,&amp;H80:POKE<br />
&amp;HAB86,&amp;H14:DATA 10,27,2D,CC,BD,AF,67,BD,<br />
AD,01,9E,47,7E,AD,E6                patches the RESTORE command so you can<br />
restore to any line number.  For example,<br />
RESTORE 40 restores any DATA from line 40<br />
on, but no DATA prior to line 40.  A plain<br />
old RESTORE still restores every DATA<br />
statement</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
COCO 3 POKES, PEEKS, and EXECS</p>
<p>MEMORY MAPPING AND THE 8K BLOCKS<br />
DECIMAL VALUES<br />
MMU Address         Mapped to               Usually is      Hi-Res-Mode<br />
&amp;HFFA0        &amp;H0000 &#8211; &amp;H1FFF            56        56<br />
&amp;HFFA1        &amp;H2000 &#8211; &amp;H3FFF            57        48<br />
&amp;HFFA2        &amp;H4000 &#8211; &amp;H5FFF            58        49<br />
&amp;HFFA3        &amp;H6000 &#8211; &amp;H7FFF            59        50<br />
&amp;HFFA4        &amp;H8000 &#8211; &amp;H9FFF            60        51<br />
&amp;HFFA5        &amp;HA000 &#8211; &amp;HBFFF            61        61<br />
&amp;HFFA6        &amp;HC000 &#8211; &amp;HDFFF            62        53<br />
&amp;HFFA7        &amp;HE000 &#8211; &amp;HFFFF            63        63</p>
<p>Blocks 48 to 63 (&amp;H30 to &amp;H3F) are available on both 128k and 512k CoCos.<br />
They can also be numbered 112 to 127 (&amp;H70 to &amp;H7F).  Blocks 0 to 47<br />
(&amp;H00 to &amp;H2F) are available ONLY on the 512k CoCo.  They can also be<br />
numbered 64 to 111 (&amp;H40 to &amp;H6F)  The numbers can be used interchangeably<br />
because the blocks are &#8220;shadowed&#8221;.  Block &amp;H3F is the same block as &amp;H7F.<br />
On a ONE MEG CoCo, though, the blocks are NOT shadowed, and the numbers<br />
represent different blocks.  See diagram further down.</p>
<p>WHAT ARE THE BLOCKS USED FOR?</p>
<p>Decimal        Hex             Function<br />
112        &amp;H70        first quarter of HSCREEN<br />
113        &amp;H71        second quarter<br />
114        &amp;H72        third quarter<br />
115        &amp;H73        fourth quarter<br />
116        &amp;H74        HGET/HPUT buffer (default)<br />
117        &amp;H75        The Stack<br />
118        &amp;H76        Hi-Res Text Screen (40 and 80 column)<br />
119        &amp;H77        unused<br />
120        &amp;H78        Program storage<br />
121        &amp;H79        Program storage<br />
122        &amp;H7A        Program storage<br />
123        &amp;H7B        Program storage<br />
124        &amp;H7C        Extended Color BASIC (in RAM)<br />
125        &amp;H7D        Color BASIC (in RAM)<br />
126        &amp;H7E        Cartridge Address<br />
127        &amp;H7F        CoCo 3 Super Extended BASIC, and I/O</p>
<p>Memory Block Map</p>
<p>&amp;H00 to &amp;H3F        64 8k blocks in 1 MEG CoCos (I think)<br />
&amp;H40 to &amp;H6F        48 8k blocks in a 512k CoCo  (48x8k=384k)<br />
&amp;H70 to &amp;H7F        16 8k blocks in all CoCo 3s  (16x8k=128k)<br />
&amp;H80 to &amp;HFF        128 8k blocks in 2 MEG CoCos (I think)</p>
<p>In summary, ALL CoCo 3s have blocks &amp;H70 to &amp;H7F available.  In a 512k CoCo 3,<br />
you have &amp;H40 to &amp;H7F available.  In a 1 MEG CoCo 3, you have &amp;H00 to &amp;H7F,<br />
and in a 2 MEG CoCo 3, you have &amp;H00 to &amp;HFF available.</p>
<p>&amp;HFFB0 to &amp;HFFBF    contain the palette registers.  PEEK and POKE to these to<br />
set the 16 palettes.  Values range from 0 to 63.</p>
<p>POKE 63372,x      controls the cursor blink rate in the 40/80 screen.  The<br />
default is 11.  0=fast, 255=slow</p>
<p>POKE 63381,0     stops the cursor blinking in 40/80 screens<br />
POKE 63381,1    starts it blinking again</p>
<p>POKE &amp;HF7A3,x    x is from 0 to 255, it sets the shape of the cursor in 40/80 screens</p>
<p>PEEK(487)*256+PEEK(488)        the start address of an ML program<br />
PEEK(126)*256+PEEK(127)        the end address of an ML program<br />
PEEK(157)*256+PEEK(158)        the EXEC address of the program</p>
<p>POKE &amp;HFF21,&amp;H3C    immediately turns on the cassette relay (MOTOR ON)<br />
POKE &amp;HFF21,&amp;H34    immediately turns off the relay (MOTOR OFF, but no delay)</p>
<p>&amp;HE654 to &amp;HE663    storage of the default CMP palette values<br />
&amp;HE664 to &amp;HE673    storage of the default RGB palette values<br />
&amp;HE674 to &amp;HE687    storage of current palette values</p>
<p>POKE 150,x        set printer baud rate.  87=600, 41=1200, 18=2400, 7=4800, 1=9600<br />
if running in high speed (1.8mhz) baud is doubled also!</p>
<p>POKE &amp;HFFBC,x           POKE here to set the width 32 foreground color<br />
POKE &amp;HFFBD,x           POKE here to set the width 32 background color</p>
<p>EXEC 44539        pauses and waits for any key press (except BREAK/SHIFT/ESC)</p>
<p>POKE 65497,0            1.8mhz speed POKE for the CoCo 3 (no effect with emulator)<br />
POKE 65496,0            normal speed POKE (.89mhz) for CoCo 3</p>
<p>POKE &amp;HE6C6,33          VERY USEFUL &#8211; This disables the automatic clearing of the<br />
HSCREEN.  Usually, when you do an HSCREEN command, the CoCo<br />
automatically clears the HSCREEN.  This POKE prevents that.</p>
<p>POKE 282,255            set keyboard to uppercase<br />
POKE 282,0        set keyboard to lowercase</p>
<p>&amp;HF09D to &amp;HF39C    location of data for the HPRINT character set (8 bytes per<br />
character, 96 characters).  You can modify the HPRINT font<br />
by changing these values.  If you&#8217;re not using HPRINT, this<br />
is available space for ML programs. (768 bytes, 3/4K)</p>
<p>POKE 186,msb<br />
POKE 187,lsb            set the start address for the PMODE 3/4 screen</p>
<p>POKE 113,0:EXEC &amp;H8C1B<br />
POKE 113,0:DLOAD              |&#8211;  three different ways to cold-start a CoCo 3<br />
POKE 113,0      /</p>
<p>POKE 111,254:DIR    forces a disk directory to be printed on the printer</p>
<p>if you PEEK(&amp;H00E7)     you can tell what the WIDTH is (0=32, 1=40, 2=80)</p>
<p>&amp;HE0D4,&amp;HE3A3, &amp;HE50B           poke these with an 8k block number for HGET/HPUT<br />
the default is &amp;H74</p>
<p>PEEK(41)*256+PEEK(42)    the line number to continue after a STOP command</p>
<p>PEEK(49)*256+PEEK(50)    the line number of the next DATA statement to be read</p>
<p>PEEK(135)        the ASCII code of the most recently pressed key<br />
can be used with EXEC 44539 instead of INKEY$</p>
<p>POKE 175,0        turn tracer on  (TRON)<br />
POKE 175,1        turn tracer off (TROFF)</p>
<p>decimal 338 to 345    the keyboard rollover tables &#8211; values change based on what keys<br />
are being held down</p>
<p>if PEEK(341)=191, then the ALT key is being pressed<br />
if PEEK(342)=191, then the CTRL key is being pressed<br />
if PEEK(343)=191, then F1 is being pressed (F11 on the emulator)<br />
if peek(344)=191, then F2 is being pressed (F12 on the emulator)</p>
<p>PEEKs 474 to 481 contain ASCII values of most recently used FILENAME (8 characters)<br />
PEEK(482) contains file type (0=BASIC, 1=DATA, 2=BINARY)</p>
<p>POKE &amp;HD7C0,x:POKE &amp;HD816,y    disk drive step rate (not for ADOS)<br />
x=3  y=23  for 30ms (default)<br />
x=2  y=22  for 20ms<br />
x=1  y=21  for 12ms<br />
x=0  y=20  for 6ms (most drives can do this, it&#8217;s faster and quieter)</p>
<p>44014 to 44018          ASCII values used for the prompt &#8220;OK&#8221;.  You can change the OK prompt<br />
POKE 44014,0        no prompt at all, just a cursor</p>
<p>EXEC 43345        makes a click sound</p>
<p>POKE 41598,19:POKE 41591,95    the BREAK key now pauses (same as SHIFT-@) and<br />
SHIFT-BREAK will act as the BREAK key</p>
<p>POKE &amp;HE414,0:POKE &amp;HE42A,0    disables the CoCo 3 BREAK key</p>
<p>A=RND(-TIMER)        use this to get &#8220;more-random&#8221; numbers from the RND statement<br />
similar to RANDOMIZE on other computers</p>
<p>POKE &amp;HE79B,196:POKE &amp;HE79C,x           where x is from 0 to 255.  This changes the HPAINT<br />
command to paint a variety of patterns<br />
POKE &amp;HE79B,212:POKE &amp;HE79C,181         the defaults for the HPAINT command</p>
<p>After POKE &amp;HF6BC,255, you can CLS x    where x is from 0 to 255 to clear the 40/80<br />
screens with a variety of attributes</p>
<p>&amp;H01DA to &amp;H02D8    the old cassette buffer, which can be used for short ML programs<br />
it&#8217;s 255 bytes long</p>
<p>POKE 41893,0        disables the CLEAR key<br />
POKE 41893,129          enables the CLEAR key</p>
<p>POKE 41909,0        prevents SHIFT-BACK-ARROW from erasing the entire line<br />
POKE 41909,21        enables the SHIFT-BACK-ARROW</p>
<p>POKE &amp;HADEB,&amp;H39    prevents SHIFT-@ from pausing programs, speeds up the program!</p>
<p>POKE &amp;HFE04,x        where x is the column spacing you want (20,40,80,etc.)</p>
<p>POKE &amp;HFF94,x        where x is from 0 to 255, controls the &#8220;blink&#8221; attribute blink rate<br />
POKE &amp;HFF94,126         the default &#8220;blink&#8221; attribute blink rate</p>
<p>POKE &amp;HD762,x        where x is 1 to 255.  This controls how many times the disk drive<br />
tries to read a &#8220;problem&#8221; with the disk.  The default is 5, but if<br />
you set it to 1 or 2, the computer will try fewer times.  If you have<br />
ever accidentally typed, for example, DIR 1, but had no disk in the<br />
drive, the computer tries 5 times to read it.  By changing this value,<br />
it will return to the OK prompt sooner, or try longer, if you want.</p>
<p>POKE &amp;Hf697,x        where x is from 0 to 255.  Default is 32.  When you CLS on a 40/80<br />
screen, this is the ASCII of the character used to clear the screen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/09/more-coco-peeks-and-pokes/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xmodem-CRC Formula for 6809</title>
		<link>http://www.coco3.com/community/2009/09/xmodem-crc-formula-for-6809</link>
		<comments>http://www.coco3.com/community/2009/09/xmodem-crc-formula-for-6809#comments</comments>
		<pubDate>Sun, 06 Sep 2009 21:43:14 +0000</pubDate>
		<dc:creator>Roger</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=146</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<pre>
</pre>
<pre>16-bit Xmodem-CRC calculation
6809 opcode by Roger Taylor

Enter with reg.A being the current byte received or transmitted within your packet

04110 ADC010    EORA    CRC
04120     LDB    CRC+1
04130     ASLB
04140     ROLA
04150     BCC    ADC020
04160     EORA    #16
04170     EORB    #33
04180 ADC020    ASLB
04190     ROLA
04200     BCC    ADC030
04210     EORA    #16
04220     EORB    #33
04230 ADC030    ASLB
04240     ROLA
04250     BCC    ADC040
04260     EORA    #16
04270     EORB    #33
04280 ADC040    ASLB
04290     ROLA
04300     BCC    ADC050
04310     EORA    #16
04320     EORB    #33
04330 ADC050    ASLB
04340     ROLA
04350     BCC    ADC060
04360     EORA    #16
04370     EORB    #33
04380 ADC060    ASLB
04390     ROLA
04400     BCC    ADC070
04410     EORA    #16
04420     EORB    #33
04430 ADC070    ASLB
04440     ROLA
04450     BCC    ADC080
04460     EORA    #16
04470     EORB    #33
04480 ADC080    ASLB
04490     ROLA
04500     BCC    ADC090
04510     EORA    #16
04520     EORB    #33
04530 ADC090    STD    CRC
04540     RTS</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/09/xmodem-crc-formula-for-6809/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CCASM 6809/6309 Cross Assembler</title>
		<link>http://www.coco3.com/community/2009/09/ccasm-68096309-cross-assembler</link>
		<comments>http://www.coco3.com/community/2009/09/ccasm-68096309-cross-assembler#comments</comments>
		<pubDate>Sun, 06 Sep 2009 21:38:11 +0000</pubDate>
		<dc:creator>Roger</dc:creator>
				<category><![CDATA[Rainbow IDE]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=141</guid>
		<description><![CDATA[<a href="http://www.coco3.com/community/2009/09/ccasm-68096309-cross-assembler" title="CCASM 6809/6309 Cross Assembler"><img src="http://www.coco3.com/community/wp-content/uploads/yapb_cache/ccasmopen.46ie9pmiziec4gg80wkoc4ksg.a9sxxja1njksswcs400wcc4cg.th.jpeg" width="180" height="180" alt="CCASM 6809/6309 Cross Assembler" style="float:left;padding:0 10px 10px 0;" ></a>]]></description>
			<content:encoded><![CDATA[<a href="http://www.coco3.com/community/2009/09/ccasm-68096309-cross-assembler" title="CCASM 6809/6309 Cross Assembler"><img src="http://www.coco3.com/community/wp-content/uploads/yapb_cache/ccasmopen.46ie9pmiziec4gg80wkoc4ksg.a9sxxja1njksswcs400wcc4cg.th.jpeg" width="180" height="180" alt="CCASM 6809/6309 Cross Assembler" style="float:left;padding:0 10px 10px 0;" ></a><table style="border: 1px dashed #bbbbbb; width: 90%;" border="0" cellspacing="0" cellpadding="4" align="center">
<tbody>
<tr>
<td style="border: 1px dashed #bbbbbb;" valign="middle">
<ul>
<li><strong>DESCRIPTION &#8211; </strong><strong>CCASM</strong> is a Windows command-prompt <strong>machine language assembler</strong> able to use existing CoCo source code or source code edited on the <strong>PC</strong> and assemble the binary(s) to various formats such as the CoCo &#8216;LOADM&#8217; format, and as multi-size EPROM/ROM image files, and more.With all the emulators in use today, this is a <strong>great</strong> tool for 6809/6309/CoCo/Vectrex programmers to create software from a better environment. Writing machine-language programs is now easier than ever.Assembled programs can be run on a Tandy Color Computer 1/2/3, Vectrex, or any 6809/6309 machine.</li>
<li><strong>EFFICIENCY &#8211; </strong>The assembler size is ~318kb.The assembly process is quick, even for large programs. Assembled programs can sometimes be smaller than the EDTASM version using the same source code. LOADMable programs are typically assembled to smaller file sizes than what EDTASM normally produces.</li>
<li><strong>LINE FORMATS</strong> &#8211; Various CR/LF schemes are supported, allowing CCASM to read and assemble source code created using your favorite CoCo or PC text editor.</li>
<li><strong>INCLUDE LEVELS -</strong> Each source code file can also INCLUDE other files, giving you a worry-free nested source code structure.</li>
<li><strong>DATA STRUCTURES AND OBJECTS -</strong><strong> Data structures</strong> can be created that have any number of fields. New structures can inherit the fields of another structure and can add their own fields. Support for <strong>object-oriented programming</strong> is being improved to allow an easier way to create classes, derived classes, methods, objects, etc.</li>
<li><strong>ERROR DUMPING &#8211; </strong>Assembly errors can optionally be dumped to an error file describing each line that needs attention. The Portal-9 and <a href="http://www.rainbowide.com/">Rainbow IDE</a> use this error file to show you (by highlighting) what lines need attention.</li>
<li><strong>TARGET CPU -</strong> CCASM is designed exclusively for the 6809 and 6309 CPUs, regardless of the machine or board being used. All 6809 and 6309 instruction possibilities are supported.</li>
<li><strong> PROCEDURES!</strong> &#8211; Yes, you can declare and call procedures, complete with parameters and/or local variables and static variables, and nesting ability! This is truly a <strong>huge leap in power</strong>. You can create and use source-based <strong>libraries</strong>, making assembly even that much more easier to use in the future.</li>
<li><strong>EXPRESSION EVALUATOR</strong> &#8211; CCASM has a very nice mathematical expression evaluator, able to crunch down some of the meanest expressions, with more operations than EDTASM or RMA. Functions are also available like sizof{structure} which computes the size of any data structure or union.</li>
<li><strong>NESTED </strong><strong>CONDITIONAL ASSEMBLY</strong> &#8211; Conditional assembly is supported via the <strong>if/endif</strong> and <strong>ifp1/endc</strong> directives, letting you enable or disable sections of source code to be assembled. By enclosing sections of code within conditional statements, you can maintain one source code file for different versions of the program to be assembled. There are many nice uses for conditional assembly.</li>
<li><strong>PLANNED FEATURES</strong><strong> &#8211; Macros. </strong>CCASM will allow you to build your own psuedo-instructions or even modify existing instructions by way of a powerful MACRO function.<br />
<strong>Linux.</strong> A port of CCASM to the Linux operating system is in the works. However, the WIndows version of CCASM works in Linux if you have the WINE system installed (Windows API translator).  This allows Windows apps to work as-is from within Linux!</p>
<p>UPDATE! <strong>On 8-23-07</strong>, CCASM was ported to Linux.  Thorough testing will be done before any official release.</li>
</ul>
</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/09/ccasm-68096309-cross-assembler/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CoCo Filename Extensions</title>
		<link>http://www.coco3.com/community/2009/09/coco-filename-extensions</link>
		<comments>http://www.coco3.com/community/2009/09/coco-filename-extensions#comments</comments>
		<pubDate>Sun, 06 Sep 2009 21:36:21 +0000</pubDate>
		<dc:creator>Roger</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=139</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>The COCO Extension List</p>
<p>The following extensions often show up in the CoCo World.  Here&#8217;s what they are:</p>
<p>AR    compressed file, using the AR utility by Carl Kreider, (uses LZ compression)</p>
<p>ARC    file compressed with TC.BIN and later versions of &#8220;The Compressor&#8221; series</p>
<p>ASM    the assembly language source code from EDTASM</p>
<p>BIN    a binary file, usually a machine language program that needs to be LOADMed</p>
<p>BAS    a general BASIC file (could be tokenized, or in straight ASCII format)</p>
<p>CAS    virtual cassette file for use with Jeff V.&#8217;s CoCo Emulator</p>
<p>CM3    CoCo Max 3 compressed graphic file.  CM3 is a highly efficient horizontal and vertical<br />
compressor (or so the literature tells us)</p>
<p>EC#    Projector-3 command file, the # can be 0-9 or A-Z where the character pressed along with [ALT]<br />
from within Projector-3 will perform the function coded in the file.  MIRROR.ECM is a command<br />
that takes the current picture and flips it horizontally</p>
<p>DAT    generic extension for data of some sort</p>
<p>DOC    generic extension for files that contain information documents about how to use a program</p>
<p>DSK    although not found on a CoCo disk, the DSK files are common with Jeff Vavasour&#8217;s CoCo<br />
emulator.  The DSK file is a Windows/DOS file that contains the data from a real CoCo disk.<br />
The DSK file can either be changed back into a real 5.25 CoCo disk, or used as-is with the<br />
emulator.<br />
DSK    ** There is also a CoCo utility called DSHRINK that will create DSK files from a standard<br />
CoCo 35 track disk (under RS-DOS).  This DSK file contains the entire contents of the disk.<br />
The two DSK files ARE NOT interchangeable. **</p>
<p>FMT    format driver file for the Projector 2 series multiviewer, can be added or removed from the<br />
system disk to customize the program to handle whatever picture formats you want or have</p>
<p>GIF    Graphic Interchange Format, generally the standard graphic format for ALL computers,<br />
although being replaced by TIFF (Tagged Image File Format)  GIF was developed by CompuServe.<br />
GIF 87a is the basic standard, but it was extended to 89a to include embedded text- that is,<br />
a message/note of text that could be viewed during/after seeing the picture.  The note might<br />
be the title, the creator, a BBS or Internet address, etc.  GIF89a also added transparency,<br />
animation, and timed looping.</p>
<p>HLP    generic extension for help files</p>
<p>LZH    identical to the MS-DOS LZH compression, ported to CoCo</p>
<p>MAX    CoCoMax 1 and 2 picture format, is close or identical to the old CoCo 2 .BIN PMODE format</p>
<p>MGE    Color Max 3 &#8220;compressed&#8221; graphic file.  MGE used some sort of alternating compressed/<br />
uncompressed runs of data.  Rumor has it that sometimes the compressed file was even<br />
larger than if the file hadn&#8217;t been compressed, so it was advised to keep the compression<br />
switched off (a menu option)  Standard 320&#215;192 pictures are 14 granules long (about 30k)</p>
<p>NIB    a graphic file format developed by Rick Cooper for CFDM.  FYI, NIB used a rather complex,<br />
but efficient method of using two data buffers, filling one with information about changes<br />
in the current pixel, and the second with what the change was.  The data was then combined<br />
and compressed again (I think using some sort of RLE) and saved to disk.  NIB was &#8220;extended&#8221;<br />
by (me) Stuart Wyss to be fully backwards compatible, but to also support embedded text<br />
(like GIF89a), 640&#215;192, forced color sets, and color-cycling (to support CoCo Max animation)</p>
<p>PAK    (not to be confused with Emulator PAK files) was a compression developed by G.B. Jansen</p>
<p>PAK    (not to be confused with G.B. Jansen&#8217;s PAK) is an MS-DOS extension of files from Jeff V.s<br />
CoCo emulator.  A PAK file could either be a &#8220;snapshot&#8221; of the system, or a program pack.</p>
<p>PIX    yep, a graphic file, belonging, I think, to Apple Macintosh</p>
<p>PM4    standard 6k/12k PMODE dump, same as the .BIN format but some older versions of the Projector<br />
series graphics viewers may require this extension instead</p>
<p>RAT    The RAT Graphics Design Package picture format, viewable by the Projector series viewers</p>
<p>RLE    a graphic file compressed using Run Length Encoding</p>
<p>SQS    a graphic file format developed by (me) Stuart Wyss  (SQS is short for Squash) FYI, SQS was<br />
a sort of &#8220;windowing&#8221; compression format that compared subsequent lines.  It worked pretty<br />
well.</p>
<p>SQZ    another graphic file format developed by Rick Cooper for CFDM  (SQZ is short for Squeeze)</p>
<p>TC3    a file/group of files compressed using the TC3 compressor</p>
<p>TNY    graphic file format for the TINY program (possibly AMIGA format)</p>
<p>TXT    generic extension for text files</p>
<p>VEF    OS-9 graphic format, may be compressed or uncompressed.  Compressed VEFs are sometimes<br />
called &#8220;Squashed VEF&#8221;.</p>
<p>ZIP    The standard for file compression in the MS-DOS/Windows world, available for CoCo.</p>
<p>NOTE:  This is a guide only.  Programmers often make up their own extensions, or use one or two<br />
regardless of what the file actually contains.  For example, BIN is a very common extension.  It<br />
can be a program that needs to be run, a low-res picture file, data for a program, music, etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/09/coco-filename-extensions/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CoCo Cassette Tape Format</title>
		<link>http://www.coco3.com/community/2009/09/coco-cassette-tape-format</link>
		<comments>http://www.coco3.com/community/2009/09/coco-cassette-tape-format#comments</comments>
		<pubDate>Sun, 06 Sep 2009 21:35:16 +0000</pubDate>
		<dc:creator>Roger</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=137</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Color BASIC Cassette File Format  The CoCo saves a file on cassette as a series of <em>blocks</em>. A block may contain anywhere from 0 to 255 bytes of data, in addition to some overhead. Some blocks need to be preceded by a <em>leader</em>, which is used to establish timing when the tape is being read.</p>
<p>A file consists of:</p>
<ol>
<li> a leader</li>
<li> a <em>filename</em> block</li>
<li> a 1/2 second gap</li>
<li> another leader</li>
<li> some number of <em>data</em> blocks</li>
<li> an <em>end-of-file</em> block</li>
</ol>
<p>A leader is just 128 bytes of $55 (binary 01010101). There should be no gap at all between the end of the leader and the beginning of the block that follows it. In fact, If the &#8220;gap&#8221; flag in the filename block is $01, I <em>think</em> there should be no gap at all between any two blocks, with only two exceptions: the gap that precedes the file, and the gap following the filename block. There must be a leader after each of those gaps to re-establish timing. If that gap flag is $FF, then there seems to be a 1/2 second gap and another leader before every data block and before the end-of-file block.</p>
<p>A block contains:</p>
<ol>
<li> two &#8220;magic&#8221; bytes (55 and 3C)</li>
<li> one byte &#8211; block type (00=filename, 01=data, FF=EOF)</li>
<li> one byte &#8211; data length (00 to FF)</li>
<li> 0 to 255 bytes &#8211; data</li>
<li> one byte &#8211; checksum (sum of data, type, and length bytes)</li>
<li> another magic byte (55)</li>
</ol>
<p>The three different types of blocks contain different amounts of data. A filename block contains fifteen bytes of data; an EOF (end-of-file) block contains no data bytes at all; and a data block may contain anywhere from 0 to 255 bytes, as indicated by the length byte.</p>
<p>The data in a filename block:</p>
<ol>
<li> eight bytes &#8211; the filename</li>
<li> one byte &#8211; file type (00=BASIC, 01=data, 02=machine code)</li>
<li> one byte &#8211; ASCII flag (00=binary, FF=ASCII)</li>
<li> one byte &#8211; gap flag (00=no gaps, FF=gaps)<br />
<em>(The tech manual shows 01 as the code for &#8220;no gaps&#8221;,       but binaries saved by Extended Color BASIC actually have 00.)</em></li>
<li> two bytes &#8211; machine code starting address</li>
<li> two bytes &#8211; machine code loading address</li>
</ol>
<p>I have now verified that bytes are stored least-significant bit first. (Thanks to <a href="http://www.undergrad.math.uwaterloo.ca/%7Esrsouth/">Simon South</a> for first pointing this out to me).</p>
<p>Each bit is recorded as a single cycle of a sine-wave. The frequency of the wave distinguishes a &#8220;0&#8243; from a &#8220;1&#8243; bit. A &#8220;1&#8243; is a single cycle at 2400 Hz, while a &#8220;0&#8243; is a single cycle at 1200 Hz. So the average bit rate is about 1500. But this &#8220;baud rate&#8221; depends on the data; a file containing all 00 bytes would take about twice as long as a file containing all bytes of FF&#8217;s. (It is not exactly twice as long, because the overhead in each block will contain bytes with both 0&#8242;s and 1&#8242;s.)</p>
<p>The CoCo recognizes bits by detecting zero crossings &#8211; those places where the sine wave crosses from positive to negative or visa-versa. This means that it is independent of the volume (or loudness) of the signal, except that smaller signals are easier to mess up with noise. It is also independent of inversions &#8211; the tape can play the signal back upside-down and the computer won&#8217;t even notice the difference.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/09/coco-cassette-tape-format/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>1488 and 1489 Pinouts</title>
		<link>http://www.coco3.com/community/2009/09/1488-and-1489-pinouts</link>
		<comments>http://www.coco3.com/community/2009/09/1488-and-1489-pinouts#comments</comments>
		<pubDate>Sun, 06 Sep 2009 21:33:40 +0000</pubDate>
		<dc:creator>Roger</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=134</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Drivers and level shifters.    MAX232, MAX232A 5V RS232 transceiver.<br />
To operate, connect two capacitors to the C1 and C2 pins, one between the V- and GND, and one between V+ and GND.  For the MAX232, capacitors should be 10uF, for the MAX232A 100nF is enough.</p>
<pre>      +---+--+---+
  C1+ |1  +--+ 16| VCC
   V+ |2       15| GND
  C1- |3       14| T1out
  C2+ |4  MAX  13| R1in
  C2- |5  232  12| R1out
   V- |6       11| T1in
T2out |7       10| T2in
 R2in |8        9| R2out
      +----------+</pre>
<p>MAX242 5V RS232 transceiver with shutdown.</p>
<pre>      +---+--+---+
  /EN |1  +--+ 18| /SHDN
  C1+ |2       17| VCC
   V+ |3       16| GND
  C1- |4       15| T1out
  C2+ |5  MAX  14| R1in
  C2- |6  242  13| R1out
   V- |7       12| T1in
T2out |8       11| T2in
 R2in |9       10| R2out
      +----------+</pre>
<p>LTC485 Quad RS485 line driver.</p>
<pre>     +---+--+---+            +---+---*---+---+
 1A1 |1  +--+ 16| VCC        | A | EN| Y |/Y |
 1Y1 |2       15| 2A2        +===+===*===+===+
/1Y1 |3       14| 2Y2        | 0 | 1 | 0 | 1 |
 1EN |4       13| /2Y2       | 1 | 1 | 1 | 0 |
/1Y2 |5 75174 12| 2EN        | X | 0 | Z | Z |
 1Y2 |6       11| /2Y1       +---+---*---+---+
 1A2 |7       10| 2Y1
 GND |8        9| 2A1
     +----------+</pre>
<p>LTC485 RS485 line transceiver.</p>
<pre>    +---+--+---+             Receiver:           Transmitter:
  Y |1  +--+  8| VCC         +-------+---*---+   +---+---*---+---+
/OE |2        7| B           |  A-B  |/OE| Y |   | D |DEN| A | B |
DEN |3  75176 6| A           +=======+===*===+   +===+===*===+===+
  D |4        5| GND         |&gt;+200mV| 0 | 1 |   | 0 | 1 | 0 | 1 |
    +----------+             |&lt;-200mV| 0 | 0 |   | 1 | 1 | 1 | 0 |
                             |   X   | 1 | Z |   | X | 0 | Z | Z |
                             +-------+---*---+   +---+---*---+---+</pre>
<p>LTC488 Quad RS485 line receiver.<br />
Note the unusual ORed output enables.</p>
<pre>    +---+--+---+             +-------+---+---*---+
 B1 |1  +--+ 16| VCC         |  A-B  | OE|/OE| Y |
 A1 |2       15| B4          +=======+===+===*===+
 Y1 |3       14| A4          |&gt;+200mV| 1 | X | 1 |
 OE |4       13| Y4          |&gt;+200mV| X | 0 | 1 |
 Y2 |5 75173 12| /OE         |&lt;-200mV| 1 | X | 0 |
 A2 |6       11| Y3          |&lt;-200mV| X | 0 | 0 |
 B2 |7       10| A3          |   X   | 0 | 1 | Z |
GND |8        9| B3          +-------+---+---*---+
    +----------+</pre>
<p>LTC489 Quad RS485 line receiver.</p>
<pre>    +---+--+---+             +-------+---*---+
1B1 |1  +--+ 16| VCC         |  A-B  | OE| Y |
1A1 |2       15| 2B2         +=======+===*===+
1Y1 |3       14| 2A2         |&gt;+200mV| 1 | 1 |
1OE |4       13| 2Y2         |&lt;-200mV| 1 | 0 |
1Y2 |5 75175 12| 2OE         |   X   | 0 | Z |
1A2 |6       11| 2Y1         +-------+---*---+
1B2 |7       10| 2A1
GND |8        9| 2B1
    +----------+</pre>
<p>MC1413 7-bit 50V 500mA TTL-input NPN darlington driver.<br />
The drivers need no power supply; the VDD pin is the common cathode of the seven integrated protection diodes.</p>
<pre>    +---+--+---+             +---*---+
 A0 |1  +--+ 16| /Y0         | A |/Y |
 A1 |2       15| /Y1         +===*===+
 A2 |3       14| /Y2         | 0 | Z |
 A3 |4  ULN  13| /Y3         | 1 | 0 |
 A4 |5  2003 12| /Y4         +---*---+
 A5 |6       11| /Y5
 A6 |7       10| /Y6
GND |8        9| VDD
    +----------+</pre>
<p>1488 TTL to RS232 level shifter.<br />
The outputs are at RS-232 levels, and sometimes are connected to ground through a small capacitor (up to 470 pF) to reduce slew-rate. Note that 1B is missing (and can be taken to be 1 at all times). Usually VDD=+12 and VEE=-12.</p>
<pre>    +---+--+---+          +---+---*-----+
VEE |1  +--+ 14| VDD      | A | B |  Y  |
 1A |2       13| 4A       +===+===*=====+
 1Y |3       12| 4B       | 0 | 0 | VDD |
 2A |4  1488 11| 4Y       | 0 | 1 | VDD |
 2B |5       10| 3A       | 1 | 0 | VDD |
 2Y |6        9| 3B       | 1 | 1 | VEE |
GND |7        8| 3Y       +---+---*-----+
    +----------+</pre>
<p>1489 RS232 to TTL level shifter.<br />
A inputs are RS232-level inputs, C inputs are response control, a TTL signal which could be used to adjust threshhold and hysteresis but is generally unnecessary and unused. It is often tied through a 300 &#8211; 470 pF capacitor to ground.</p>
<pre>    +---+--+---+
 1A |1  +--+ 14| VCC
 1C |2       13| 4A
 1Y |3       12| 4C
 2A |4  1489 11| 4Y
 2C |5       10| 3A
 2Y |6        9| 3C
GND |7        8| 3Y
    +----------+</pre>
<p>ULN2003 7-bit 50V 500mA TTL-input NPN darlington driver.<br />
The drivers need no power supply; the VDD pin is the common cathode of the seven integrated protection diodes.</p>
<pre>    +---+--+---+             +---*---+
 A0 |1  +--+ 16| /Y0         | A |/Y |
 A1 |2       15| /Y1         +===*===+
 A2 |3       14| /Y2         | 0 | Z |
 A3 |4  ULN  13| /Y3         | 1 | 0 |
 A4 |5  2003 12| /Y4         +---*---+
 A5 |6       11| /Y5
 A6 |7       10| /Y6
GND |8        9| VDD
    +----------+</pre>
<p>UDN2585 7-bit 50V 500mA TTL-input PNP (high-side) darlington driver.<br />
The drivers need no power supply; the GND pin is the common anode of the seven integrated protection diodes.</p>
<pre>    +---+--+---+             +---*---+
 A0 |1  +--+ 16| /Y0         | A |/Y |
 A1 |2       15| /Y1         +===*===+
 A2 |3       14| /Y2         | 0 | Z |
 A3 |4  UDN  13| /Y3         | 1 | 0 |
 A4 |5  2585 12| /Y4         +---*---+
 A5 |6       11| /Y5
 A6 |7       10| /Y6
VCC |8        9| GND
    +----------+</pre>
<p>26LS31 4-bit 3-state RS422 line driver.</p>
<pre>    +---+--+---+
 1A |1  +--+ 16| VCC
 1Y |2       15| 4A
/1Y |3       14| 4Y
 CE |4  26LS 13| /4Y
/2Y |5   31  12| /CE
 2Y |6       11| /3Y
 2A |7       10| 3Y
GND |8        9| 3A
    +----------+</pre>
<p>26LS32 Quad RS422 line receiver.<br />
Note the unusual ORed output enables.</p>
<pre>    +---+--+---+             +-------+---+---*---+
 B1 |1  +--+ 16| VCC         |  A-B  | OE|/OE| Y |
 A1 |2       15| B4          +=======+===+===*===+
 Y1 |3       14| A4          |&gt;+200mV| 1 | X | 1 |
 OE |4  26LS 13| Y4          |&gt;+200mV| X | 0 | 1 |
 Y2 |5   32  12| /OE         |&lt;-200mV| 1 | X | 0 |
 A2 |6       11| Y3          |&lt;-200mV| X | 0 | 0 |
 B2 |7       10| A3          |   X   | 0 | 1 | Z |
GND |8        9| B3          +-------+---+---*---+
    +----------+</pre>
<p>ULN2803 8-bit 50V 500mA TTL-input NPN darlington driver.<br />
The drivers need no power supply; the VDD pin is the common cathode of the eight integrated protection diodes.</p>
<pre>    +---+--+---+             +---*---+
 A0 |1  +--+ 18| /Y0         | A |/Y |
 A1 |2       17| /Y1         +===*===+
 A2 |3       16| /Y2         | 0 | Z |
 A3 |4  ULN  15| /Y3         | 1 | 0 |
 A4 |5  2803 14| /Y4         +---*---+
 A5 |6       13| /Y5
 A6 |7       12| /Y6
 A7 |8       11| /Y7
GND |9       10| VDD
    +----------+</pre>
<p>UCN5800 4-bit 50V 500mA TTL-input NPN darlington driver with input latches and output enable.<br />
The VDD pin is the common cathode of the four integrated protection diodes.</p>
<pre>    +---+--+---+
RST |1  +--+ 14| /OE
 LE |2       13| VCC
 D1 |3       12| /Q1
 D2 |4  UCN  11| /Q2
 D3 |5  5800 10| /Q3
 D4 |6        9| /Q4
GND |7        8| VDD
    +----------+</pre>
<p>UCN5801 8-bit 50V 500mA TTL-input NPN darlington driver with input latches and output enable.<br />
The VDD pin is the common cathode of the eight integrated protection diodes.</p>
<pre>    +---+--+---+
RST |1  +--+ 22| /OE
 LE |2       21| VCC
 D0 |3       20| /Q0
 D1 |4       19| /Q1
 D2 |5       18| /Q2
 D3 |6  UCN  17| /Q3
 D4 |7  5801 16| /Q4
 D5 |8       15| /Q5
 D6 |9       14| /Q6
 D7 |10      13| /Q7
GND |11      12| VDD
    +----------+</pre>
<p>UCN5810 10-bit serial-in 60V 40mA TTL-input PNP (high-side) darlington driver with output latches and output enable.<br />
The VDD pin is the output supply voltage.</p>
<pre>    +---+--+---+
 Q7 |1  +--+ 18| Q8
 Q6 |2       17| Q9
 Q5 |3       16| SOUT
CLK |4       15| VDD
GND |5  UCN  14| SIN
VCC |6  5810 13| /OE
 LE |7       12| Q0
 Q4 |8       11| Q1
 Q3 |9       10| Q2
    +----------+</pre>
<p>UCN5815 8-bit 60V 40mA TTL-input PNP (high-side) darlington driver with input latches and output enable.<br />
The VDD pin is the output supply voltage.</p>
<pre>    +---+--+---+
RST |1  +--+ 22| /OE
 LE |2       21| VCC
 D0 |3       20| Q0
 D1 |4       19| Q1
 D2 |5       18| Q2
 D3 |6  UCN  17| Q3
 D4 |7  5815 16| Q4
 D5 |8       15| Q5
 D6 |9       14| Q6
 D7 |10      13| Q7
GND |11      12| VDD
    +----------+</pre>
<p>UCN5821, UCN5822 8-bit serial-in 50/80V 500mA TTL-input NPN darlington driver with output latches and output enable.<br />
Maximum open collector voltage is 50V for UCN5821 and 80V for UCN5822.</p>
<pre>     +---+--+---+
 CLK |1  +--+ 16| /Q0
 SIN |2       15| /Q1
 GND |3       14| /Q2
 VCC |4  UCN  13| /Q3
SOUT |5  5821 12| /Q4
  LE |6  5822 11| /Q5
 /OE |7       10| /Q6
 GND |8        9| /Q7
     +----------+</pre>
<p>UCN5890, UCN5891, UCN5895 8-bit serial-in 50/80V 250/500mA TTL-input PNP (high-side) darlington driver with output latches and output enable.<br />
Maximum open collector voltage is 50V for UCN5891 and UCN5895 and 80V for UCN5890.  Output current is 250mA for UCN5895, 500mA for UCN5890 and UCN5891.  The VDD pin is the output supply voltage.</p>
<pre>    +---+--+---+
GND |1  +--+ 16| SOUT
CLK |2       15| VCC
SIN |3       14| /OE
 LE |4  UCN  13| VDD
 Q0 |5  589x 12| Q7
 Q1 |6       11| Q6
 Q2 |7       10| Q5
 Q3 |8        9| Q4
    +----------+</pre>
<p>DS8863, DS8963 8-bit 10V/18V 500mA TTL-input NPN darlington driver.<br />
Maximum open collector voltage is 10V for DS8863 and 18V for DS8963.</p>
<pre>    +---+--+---+             +---*---+
/Y0 |1  +--+ 18| VCC         | A |/Y |
 A0 |2       17| A7          +===*===+
 A1 |3       16| /Y7         | 0 | Z |
/Y1 |4  DS   15| A6          | 1 | 0 |
/Y2 |5  8863 14| /Y6         +---*---+
 A2 |6  8963 13| A5
/Y3 |7       12| /Y5
 A3 |8       11| A4
GND |9       10| /Y4
    +----------+</pre>
<p>75173 Quad RS485 line receiver.<br />
Note the unusual ORed output enables.</p>
<pre>    +---+--+---+             +-------+---+---*---+
 B1 |1  +--+ 16| VCC         |  A-B  | OE|/OE| Y |
 A1 |2       15| B4          +=======+===+===*===+
 Y1 |3       14| A4          |&gt;+200mV| 1 | X | 1 |
 OE |4       13| Y4          |&gt;+200mV| X | 0 | 1 |
 Y2 |5 75173 12| /OE         |&lt;-200mV| 1 | X | 0 |
 A2 |6       11| Y3          |&lt;-200mV| X | 0 | 0 |
 B2 |7       10| A3          |   X   | 0 | 1 | Z |
GND |8        9| B3          +-------+---+---*---+
    +----------+</pre>
<p>75174 Quad RS485 line driver.</p>
<pre>     +---+--+---+            +---+---*---+---+
 1A1 |1  +--+ 16| VCC        | A | EN| Y |/Y |
 1Y1 |2       15| 2A2        +===+===*===+===+
/1Y1 |3       14| 2Y2        | 0 | 1 | 0 | 1 |
 1EN |4       13| /2Y2       | 1 | 1 | 1 | 0 |
/1Y2 |5 75174 12| 2EN        | X | 0 | Z | Z |
 1Y2 |6       11| /2Y1       +---+---*---+---+
 1A2 |7       10| 2Y1
 GND |8        9| 2A1
     +----------+</pre>
<p>75175 Quad RS485 line receiver.</p>
<pre>    +---+--+---+             +-------+---*---+
1B1 |1  +--+ 16| VCC         |  A-B  | OE| Y |
1A1 |2       15| 2B2         +=======+===*===+
1Y1 |3       14| 2A2         |&gt;+200mV| 1 | 1 |
1OE |4       13| 2Y2         |&lt;-200mV| 1 | 0 |
1Y2 |5 75175 12| 2OE         |   X   | 0 | Z |
1A2 |6       11| 2Y1         +-------+---*---+
1B2 |7       10| 2A1
GND |8        9| 2B1
    +----------+</pre>
<p>75176 RS485 line transceiver.</p>
<pre>    +---+--+---+             Receiver:           Transmitter:
  Y |1  +--+  8| VCC         +-------+---*---+   +---+---*---+---+
/OE |2        7| B           |  A-B  |/OE| Y |   | D |DEN| A | B |
DEN |3  75176 6| A           +=======+===*===+   +===+===*===+===+
  D |4        5| GND         |&gt;+200mV| 0 | 1 |   | 0 | 1 | 0 | 1 |
    +----------+             |&lt;-200mV| 0 | 0 |   | 1 | 1 | 1 | 0 |
                             |   X   | 1 | Z |   | X | 0 | Z | Z |
                             +-------+---*---+   +---+---*---+---+</pre>
<p>75188 TTL to RS232 level shifter.<br />
The outputs are at RS-232 levels, and sometimes are connected to ground through a small capacitor (up to 470 pF) to reduce slew-rate. Note that 1B is missing (and can be taken to be 1 at all times). Usually VDD=+12 and VEE=-12.</p>
<pre>    +---+--+---+          +---+---*-----+
VEE |1  +--+ 14| VDD      | A | B |  Y  |
 1A |2       13| 4A       +===+===*=====+
 1Y |3       12| 4B       | 0 | 0 | VDD |
 2A |4  1488 11| 4Y       | 0 | 1 | VDD |
 2B |5       10| 3A       | 1 | 0 | VDD |
 2Y |6        9| 3B       | 1 | 1 | VEE |
GND |7        8| 3Y       +---+---*-----+
    +----------+</pre>
<p>75189 RS232 to TTL level shifter.<br />
A inputs are RS232-level inputs, C inputs are response control, a TTL signal which could be used to adjust threshhold and hysteresis but is generally unnecessary and unused. It is often tied through a 300 &#8211; 470 pF capacitor to ground.</p>
<pre>    +---+--+---+
 1A |1  +--+ 14| VCC
 1C |2       13| 4A
 1Y |3       12| 4C
 2A |4  1489 11| 4Y
 2C |5       10| 3A
 2Y |6        9| 3C
GND |7        8| 3Y
    +----------+</pre>
<p>75452 Dual NAND line driver.</p>
<pre>    +---+--+---+
 1A |1  +--+  8| VCC
 1B |2        7| 2B
 1Y |3 75452  6| 2A
GND |4        5| 2Y
    +----------+</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/09/1488-and-1489-pinouts/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CoCo 3 Peeks and Pokes</title>
		<link>http://www.coco3.com/community/2009/09/coco-3-peeks-and-pokes</link>
		<comments>http://www.coco3.com/community/2009/09/coco-3-peeks-and-pokes#comments</comments>
		<pubDate>Sun, 06 Sep 2009 21:10:55 +0000</pubDate>
		<dc:creator>Roger</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=124</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<table border="0" cellspacing="0" cellpadding="4" width="100%">
<tbody>
<tr align="left" valign="top">
<td>Fix the HDRAW bug</td>
<td>POKE 62861,189:POKE<br />
62862,244</td>
</tr>
<tr align="left" valign="top">
<td>Fix the RGB and BMP commands</td>
<td>POKE &amp;HE649,&amp;H10</td>
</tr>
<tr align="left" valign="top">
<td>Prevent a WIDTH command from clearing the screen</td>
<td>POKE &amp;HF670,18:POKE<br />
&amp;HF671,18</td>
</tr>
<tr align="left" valign="top">
<td>Set the 16 palette registers.<br />
Values range from 0 to 63.</td>
<td>&amp;HFFB0<br />
to &amp;HFFBF</td>
</tr>
<tr align="left" valign="top">
<td>Control the cursor blink<br />
rate in the 40/80 screen. The</p>
<p>default is 11. 0=fast, 255=slow</td>
<td>POKE 63372,x</td>
</tr>
<tr align="left" valign="top">
<td>Stop the cursor blinking in 40/80 screens</td>
<td>POKE 63381,0</td>
</tr>
<tr align="left" valign="top">
<td>Start the cursor blinking again</td>
<td>POKE 63381,1</td>
</tr>
<tr align="left" valign="top">
<td>x is from 0 to 255, it sets the shape of the cursor in 40/80 screens</td>
<td>POKE &amp;HF7A3,x</td>
</tr>
<tr align="left" valign="top">
<td>Storage of the default CMP palette values</td>
<td>&amp;HE654<br />
to &amp;HE663</td>
</tr>
<tr align="left" valign="top">
<td>Storage of the default RGB palette values</td>
<td>&amp;HE664<br />
to &amp;HE673</td>
</tr>
<tr align="left" valign="top">
<td>Storage of current palette values</td>
<td>&amp;HE674<br />
to &amp;HE687</td>
</tr>
<tr align="left" valign="top">
<td>Set the width 32 foreground color</td>
<td>POKE &amp;HFFBC,x</td>
</tr>
<tr align="left" valign="top">
<td>Set the width 32 background color</td>
<td>POKE &amp;HFFBD,x</td>
</tr>
<tr align="left" valign="top">
<td>1.8mhz speed POKE for the CoCo 3 (no effect with emulator)</td>
<td>POKE 65497,0</td>
</tr>
<tr align="left" valign="top">
<td>Normal speed POKE (.89mhz) for CoCo 3</td>
<td>POKE 65496,0</td>
</tr>
<tr align="left" valign="top">
<td>Disable the automatic clearing of the HSCREEN.</td>
<td>POKE &amp;HE6C6,33</td>
</tr>
<tr align="left" valign="top">
<td>location of data for the HPRINT character set (8 bytes per character, 96 characters).</td>
<td>&amp;HF09D<br />
to &amp;HF39C</td>
</tr>
<tr align="left" valign="top">
<td>8k block number for HGET/HPUT the default is &amp;H74</td>
<td>&amp;HE0D4,&amp;HE3A3,<br />
&amp;HE50B</td>
</tr>
<tr align="left" valign="top">
<td>Change the HPAINT command to paint a variety of patterns. x is from 0 to 255.</td>
<td>POKE &amp;HE79B,196:POKE<br />
&amp;HE79C,x</td>
</tr>
<tr align="left" valign="top">
<td>Defaults for the HPAINT command</td>
<td>POKE &amp;HE79B,212:POKE<br />
&amp;HE79C,181</td>
</tr>
<tr align="left" valign="top">
<td>x is the column spacing you want (20,40,80,etc.)</td>
<td>POKE &amp;HFE04,x</td>
</tr>
<tr align="left" valign="top">
<td>x is from 0 to 255, controls the &#8220;blink&#8221; attribute blink rate</td>
<td>POKE &amp;HFF94,x</td>
</tr>
<tr align="left" valign="top">
<td>Default &#8220;blink&#8221; attribute blink rate</td>
<td>POKE &amp;HFF94,126</td>
</tr>
<tr align="left" valign="top">
<td>x is from 0 to 255. Default is 32. When you CLS on a 40/80 screen, this is the ASCII of the character used to clear the screen.</td>
<td>POKE &amp;Hf697,x</td>
</tr>
<tr align="left" valign="top">
<td>End address of an ML<br />
program</td>
<td>PEEK(126)*256+PEEK(127)</td>
</tr>
<tr align="left" valign="top">
<td>EXEC address of the<br />
program</td>
<td>PEEK(157)*256+PEEK(158)</td>
</tr>
<tr align="left" valign="top">
<td>Start address of an<br />
ML program</td>
<td>PEEK(487)*256+PEEK(488)</td>
</tr>
<tr align="left" valign="top">
<td>x is from 0 to 255.<br />
Default is 32. When you CLS on a 40/80</p>
<p>screen, this is the ASCII of the character used to clear the<br />
screen.</td>
<td>POKE &amp;Hf697,x</td>
</tr>
<tr align="left" valign="top">
<td>See what the WIDTH is<br />
(0=32, 1=40, 2=80)</td>
<td>PEEK(&amp;H00E7)</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/09/coco-3-peeks-and-pokes/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CoCo Peeks and Pokes</title>
		<link>http://www.coco3.com/community/2009/09/coco-peeks-and-pokes</link>
		<comments>http://www.coco3.com/community/2009/09/coco-peeks-and-pokes#comments</comments>
		<pubDate>Sun, 06 Sep 2009 21:06:32 +0000</pubDate>
		<dc:creator>Roger</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=121</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>POKE 55180,18:POKE 55181,18:POKE 55182,18                      turns of disk drive moter faster</p>
<p>POKE 38543,33:POKE 38563,33 fixes PCLEAR 0 error. Now you                      can<br />
PCLEAR 0 and get 28941 bytes of free<br />
MEM!!</p>
<p>POKE &amp;HA1C1,&amp;H39:FOR F=&amp;HA1CA to &amp;HA1C1<br />
STEP -1:READA:POKE F,A:NEXT F:DATA 121,39,<br />
72,67,0,255,182,2,255,127 put as the first line of your program<br />
it will speed up your computer by about<br />
15%!! It patches the keyboard scan routine</p>
<p>FOR I=&amp;H8000 to &amp;H8013:READ B$:POKE I,VAL<br />
(&#8220;&amp;H&#8221;+B$):NEXT I:POKE &amp;H85CB,&amp;HBD:POKE<br />
&amp;H85CC,&amp;H80:POKE &amp;H85CD,0:DATA 86,21,BD,<br />
A2,82,A6,84,BD,A2,82,86,21,BD,A2,82,BD,85,<br />
D1,5A,39 patches the D command during EDIT to<br />
show the character being deleted!</p>
<p>FOR I=&amp;H8014 TO &amp;H8022:READ B$:POKE I,VAL<br />
(&#8220;&amp;H&#8221;+B$):NEXT I:POKE &amp;HAB85,&amp;H80:POKE<br />
&amp;HAB86,&amp;H14:DATA 10,27,2D,CC,BD,AF,67,BD,<br />
AD,01,9E,47,7E,AD,E6 patches the RESTORE command so you can<br />
restore to any line number. For example,<br />
RESTORE 40 restores any DATA from line 40<br />
on, but no DATA prior to line 40. A plain<br />
old RESTORE still restores every DATA<br />
statement</p>
<p>POKE &amp;HFF21,&amp;H3C immediately turns on the cassette                      relay (MOTOR ON)<br />
POKE &amp;HFF21,&amp;H34 immediately turns off the relay (MOTOR                      OFF, but no delay)</p>
<p>POKE 150,x set printer baud rate. 87=600, 41=1200, 18=2400,                      7=4800, 1=9600<br />
if running in high speed (1.8mhz) baud is doubled also!</p>
<p>EXEC 44539 pauses and waits for any key press (except BREAK/SHIFT/ESC)</p>
<p>POKE 282,255 set keyboard to uppercase<br />
POKE 282,0 set keyboard to lowercase</p>
<p>POKE 186,msb<br />
POKE 187,lsb set the start address for the PMODE 3/4 screen</p>
<p>POKE 113,0:EXEC &amp;H8C1B<br />
POKE 113,0:DLOAD |&#8211; three different ways to cold-start a                      CoCo 3<br />
POKE 113,0  /</p>
<p>POKE 111,254:DIR forces a disk directory to be printed on                      the printer</p>
<p>PEEK(41)*256+PEEK(42) the line number to continue after a                      STOP command</p>
<p>PEEK(49)*256+PEEK(50) the line number of the next DATA statement                      to be read</p>
<p>PEEK(135) the ASCII code of the most recently pressed key<br />
can be used with EXEC 44539 instead of INKEY$</p>
<p>POKE 175,0 turn tracer on (TRON)<br />
POKE 175,1 turn tracer off (TROFF)</p>
<p>decimal 338 to 345 the keyboard rollover tables &#8211; values                      change based on what keys<br />
are being held down</p>
<p>if PEEK(341)=191, then the ALT key is being pressed<br />
if PEEK(342)=191, then the CTRL key is being pressed<br />
if PEEK(343)=191, then F1 is being pressed (F11 on the emulator)<br />
if peek(344)=191, then F2 is being pressed (F12 on the emulator)</p>
<p>PEEKs 474 to 481 contain ASCII values of most recently used                      FILENAME (8 characters)<br />
PEEK(482) contains file type (0=BASIC, 1=DATA, 2=BINARY)</p>
<p>POKE &amp;HD7C0,x:POKE &amp;HD816,y disk drive step rate                      (not for ADOS)<br />
x=3 y=23 for 30ms (default)<br />
x=2 y=22 for 20ms<br />
x=1 y=21 for 12ms<br />
x=0 y=20 for 6ms (most drives can do this, it&#8217;s faster and                      quieter)</p>
<p>44014 to 44018 ASCII values used for the prompt &#8220;OK&#8221;.                      You can change the OK prompt<br />
POKE 44014,0 no prompt at all, just a cursor</p>
<p>EXEC 43345 makes a click sound</p>
<p>POKE 41598,19:POKE 41591,95 the BREAK key now pauses (same                      as SHIFT-@) and<br />
SHIFT-BREAK will act as the BREAK key</p>
<p>POKE &amp;HE414,0:POKE &amp;HE42A,0 disables the CoCo 3 BREAK                      key</p>
<p>A=RND(-TIMER) use this to get &#8220;more-random&#8221; numbers                      from the RND statement<br />
similar to RANDOMIZE on other computers</p>
<p>After POKE &amp;HF6BC,255, you can CLS x where x is from                      0 to 255 to clear the 40/80<br />
screens with a variety of attributes</p>
<p>&amp;H01DA to &amp;H02D8 the old cassette buffer, which can                      be used for short ML programs<br />
it&#8217;s 255 bytes long</p>
<p>POKE 41893,0 disables the CLEAR key<br />
POKE 41893,129 enables the CLEAR key</p>
<p>POKE 41909,0 prevents SHIFT-BACK-ARROW from erasing the entire                      line<br />
POKE 41909,21 enables the SHIFT-BACK-ARROW</p>
<p>POKE &amp;HADEB,&amp;H39 prevents SHIFT-@ from pausing programs,                      speeds up the program!</p>
<p>POKE &amp;HD762,x where x is 1 to 255. This controls how                      many times the disk drive<br />
tries to read a &#8220;problem&#8221; with the disk. The default                      is 5, but if<br />
you set it to 1 or 2, the computer will try fewer times. If                      you have<br />
ever accidentally typed, for example, DIR 1, but had no disk                      in the<br />
drive, the computer tries 5 times to read it. By changing                      this value,<br />
it will return to the OK prompt sooner, or try longer, if                      you want.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/09/coco-peeks-and-pokes/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Color BASIC Command Tokens</title>
		<link>http://www.coco3.com/community/2009/09/color-basic-command-tokens</link>
		<comments>http://www.coco3.com/community/2009/09/color-basic-command-tokens#comments</comments>
		<pubDate>Sun, 06 Sep 2009 20:51:29 +0000</pubDate>
		<dc:creator>Roger</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=112</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>CoCo BASIC Tokens</p>
<pre>#FILE: $RCSfile: cocotokn.txt $
#DESC: List of the Coco Extended Color Basic tokens
#REV: $Revision: 1.1 $
#DATE: 16/03/94
#AUTHOR: Graham E.Kinns
#DISCLAIMER: All information provided as is etc.
#ARCHIVE: This file is part of the DRGNINFO collection of Dragon info files
#CONTACT: Comments, bugs, revisions, suggestions to Dragon@grempc.demon.co.uk
#HISTORY: 1.0 16/03/94 - Initial version
#RCSID: $Id: cocotokn.txt 1.1 1994/05/10 16:30:57 G.E.Kinns Exp $
#XREF: basicfmt.txt - tokenised Basic format
#      bastoken.txt - Dragon Basic tokens
#Operator tokens
#Token  Keyword

0x80	FOR
0x81	GO
0x82	REM
0x83	'
0x84	ELSE
0x85	IF
0x86	DATA
0x87	PRINT
0x88	ON
0x89	INPUT
0x8a	END
0x8b	NEXT
0x8c	DIM
0x8d	READ
0x8e	RUN
0x8f	RESTORE
0x90	RETURN
0x91	STOP
0x92	POKE
0x93	CONT
0x94	LIST
0x95	CLEAR
0x96	NEW
0x97	CLOAD
0x98	CSAVE
0x99	OPEN
0x9a	CLOSE
0x9b	LLIST
0x9c	SET
0x9d	RESET
0x9e	CLS
0x9f	MOTOR
0xa0	SOUND
0xa1	AUDIO
0xa2	EXEC
0xa3	SKIPF
0xa4	TAB(
0xa5	TO
0xa6	SUB
0xa7	THEN
0xa8	NOT
0xa9	STEP
0xaa	OFF
0xab	+
0xac	-
0xad	*
0xae	/
0xaf	^
0xb0	AND
0xb1	OR
0xb2	&gt;
0xb3	=
0xb4	&lt;
0xb5	DEL
0xb6	EDIT
0xb7	TRON
0xb8	TROFF
0xb9	DEF
0xba	LET
0xbb	LINE
0xbc	PCLS
0xbd	PSET
0xbe	PRESET
0xbf	SCREEN
0xc0	PCLEAR
0xc1	COLOR
0xc2	CIRCLE
0xc3	PAINT
0xc4	GET
0xc5	PUT
0xc6	DRAW
0xc7	PCOPY
0xc8	PMODE
0xc9	PLAY
0xca	DLOAD
0xcb	RENUM
0xcc	FN
0xcd	USING
# RSDOS adds these .. (from Dragon User 12/84)
0xce	DIR
0xcf	DRIVE
0xd0	FIELD
0xd1	FILES
0xd2	KILL
0xd3	LOAD
0xd4	LSET
0xd5	MERGE
0xd6	RENAME
0xd7	RSET
0xd8	SAVE
0xd9	WRITE
0xda	VERIFY
0xdb	UNLOAD
0xdc	DSKINI
0xdd	BACKUP
0xde	COPY
0xdf	DSKI$
0xe0	DSKO$
#Function tokens - all proceeded by 0xff to differentiate from operators
#Token  Keyword
0x80	SGN
0x81	INT
0x82	ABS
0x83	USR
0x84	RND
0x85	SIN
0x86	PEEK
0x87	LEN
0x88	STR$
0x89	VAL
0x8a	ASC
0x8b	CHR$
0x8c	EOF
0x8d	JOYSTK
0x8e	LEFT$
0x8f	RIGHT$
0x90	MID$
0x91	POINT
0x92	INKEY$
0x93	MEM
0x94	ATN
0x95	COS
0x96	TAN
0x97	EXP
0x98	FIX
0x99	LOG
0x9a	POS
0x9b	SQR
0x9c	HEX$
0x9d	VARPTR
0x9e	INSTR
0x9f	TIMER
0xa0	PPOINT
0xa1	STRING$
# RSDOS adds these .. (from Dragon User 12/84)
0xa2	CVN
0xa3	FREE
0xa4	LOC
0xa5	LOF
0xa6	MKN$</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/09/color-basic-command-tokens/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CoCo Joystick and Audio Sampling</title>
		<link>http://www.coco3.com/community/2009/09/coco-joystick-and-audio-sampling</link>
		<comments>http://www.coco3.com/community/2009/09/coco-joystick-and-audio-sampling#comments</comments>
		<pubDate>Sun, 06 Sep 2009 20:46:17 +0000</pubDate>
		<dc:creator>Roger</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/?p=108</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<div><span style="text-decoration: underline;"><strong>CoCo Joystick and Audio Sampling</strong></span></p>
<table class="toc" border="0">
<tbody>
<tr>
<td>
<ul>
<li><a href="#Joystick_Sampling">1 Joystick Sampling</a></li>
<li><a href="#Mute_the_CoCo">2 Mute the CoCo</a></li>
<li><a href="#Select_a_joystick">3 Select a joystick</a></li>
<li><a href="#Write_a_zero_to_the_sound_register">4 Write a zero to the sound register</a></li>
<li><a href="#Compare_the_sound_register_to_the_value_from_the_joystick">5 Compare the sound register to the value from the joystick</a></li>
<li><a href="#Increment_sound_register">6 Increment sound register</a></li>
<li><a href="#Colophon">7 Colophon</a></li>
</ul>
</td>
</tr>
</tbody>
</table>
<div>
<div><a name="Joystick_Sampling"></a></p>
<p><span style="text-decoration: underline;"><strong>Joystick Sampling</strong></span></p>
<div>Successive Linear Approximation on the Color Computer</div>
<div>The CoCo uses analog joysticks. A 5 volt signal is sent to the joystick and a smaller voltage is returned depending on the orientation of the stick. The job of reading the joystick is converting that analog voltage to a binary value. During this article it would be advisable to obtain a schematic of the Color Computer. Here is a <a href="http://home.netcom.com/%7Etlindner/Download/CoCoPIAs.pdf">detailed</a> block diagram that will be good enough for this article. Also, a good understanding of the <a href="http://www.google.com/search?q=pia+6821+pdf&amp;ie=UTF-8&amp;oe=UTF-8">Peripheral Interface Adaptor</a> will help you get the most out of machine language programming.</div>
<div>Since the CoCo does not have a hardware Analog-To-Digital converter chip, the process it uses is called <em>successive linear approximation</em>.</div>
<div>Here is the process:</div>
<ol>
<li>Mute the CoCo.</li>
<li>Select a joystick.</li>
<li>Write a zero to the sound register</li>
<li>Compare the sound register to the value from the joystick.</li>
<li>If the sound register is greater than or equal to the joystick value, then you have just discovered the joystick value</li>
<li>Increment sound register.</li>
<li>Sound register only goes to 64, so stop when you hit 65.</li>
<li>Go back to step 4.</li>
</ol>
<p><a name="Mute_the_CoCo"></a><span style="text-decoration: underline;"><strong>Mute the CoCo</strong></span></p>
<div>During this process you are writing to the sound register. You must mute the CoCo so none of this is audible. The CoCo&#8217;s mute switch is controlled by line CB2 of PIA 2. CB2 (like the other 19 lines) is a bidirectional line. This means the line can either output data or input data. For this excersize we need to setup CB2 to output data. We do this by setting bits 4 and 5 of control register B.</div>
<pre>        BEGIN LDA $FF23  Get current Control Register B value of PIA 2
        ORA #$30   Set CB2 to be an output. (Set bits 4 and 5.)</pre>
<div>Now the status of bit 3 of Control Register B will control the CB2 line. If bit 3 is low the line will be low. If bit 3 is high the line will be high. Setting CB2 low will mute the CoCo.</div>
<pre>        ANDA  #$F7   Clear bit 3 - Mute CoCo
        STA   $FF23  Write value back to Control Register B</pre>
<p><a name="Select_a_joystick"></a><span style="text-decoration: underline;"><strong>Select a joystick</strong></span></p>
<div>There are two josticks with two axes each. This is four different joystick values to read.</div>
<table border="1" cellpadding="1">
<tbody>
<tr>Position Joystick</tr>
<tr>0 Right, Horiz</tr>
<tr>1 Right, Vert</tr>
<tr>2 Left, Horiz</tr>
<tr>3 Left, Vert</tr>
</tbody>
</table>
<div>Four positions can be encoded in 2 bits:</div>
<table border="1" cellpadding="1">
<tbody>
<tr>Binary Decimal</tr>
<tr>00 0</tr>
<tr>01 1</tr>
<tr>10 2</tr>
<tr>11 3</tr>
</tbody>
</table>
<div>There is a four position selector switch inside the CoCo. It is controlled by CA2 and CB2 of PIA 1. CA2 represents the most significant bit of the position, and CB2 represents the least significant bit. These lines will need to be configured as outputs and then the lines themselves will be need to be set to the proper value.</div>
<pre>        LDA  $FF01  Get current Control Register A value of PIA 1
        LDB  $FF03  Get current Control Register B value of PIA 1
        ORA  #$30   Set CA2 to be an output. (Set bits 4 and 5 of CRA.)
        ORB  #$30   Set CB2 to be an output. (Set bits 4 and 5 of CRB.)
        ANDA #$F7   Set CA2 low. (Clear bit 3.)
        ORB  #$08   Set CB2 high. (Set bit 3.)
        STA  $FF01  Store value back in CRA.
        STB  $FF03  Store value back in CRA.</pre>
<div>CA2 low and CB2 high means we are selecting position 1 which corresponds to the vertical axis of the right joystick.</div>
<div class="editsection"><a name="Write_a_zero_to_the_sound_register"></a><span style="text-decoration: underline;"><strong>Write a zero to the sound register</strong></span></p>
<div>The CoCo&#8217;s sound register is 6 bits of side A of PIA 2. Specifically bits 2 thru 7 of the Data Register A. This corresponds to lines PA2 thru PA7. These lines need to be configured as outputs so their signals will go to the digital to analog converter.</div>
<pre>        LDA  $FF21   Load Control Register A of PIA 2
        ANDA #$FB    Engage Data Direction Register A. (Clear bit 2.)
        STA  $FF21   Store value back in CRA.
        LDA  $FF20   Load Data Direction Register A of PIA 2.
        ORA  #$FC    Set lines PA2 thru PA7 as output. (Set bits 2 thru 7.)
        STA  $FF20   Store value back in DDRA.</pre>
<div>Address $FF20 is both the Data Register A and the Data Direction Register A. It&#8217;s function is controller by bit 2 of the Control Register A. So in order to actually write data to the CoCo&#8217;s sound register we need to modify the control register so we can access the data register.</div>
<pre>        LDA  $FF21   Load Control Register A of PIA 2
        ORA  #$04    Engage Data Register A. (Set bit 2.)
        STA  $FF21   Store value back in CRA.</pre>
<div>Clearing bits 2 thru 7 of the Data Register A of PIA 2 will write a zero to the sound register.</div>
<pre>        LDB  $FF20   Load Data Register A of PIA 2.
        ANDB #$03    Write a zero to the sound register. (Clear bits 2 thru 7.)</pre>
<p><a name="Compare_the_sound_register_to_the_value_from_the_joystick"></a><span style="text-decoration: underline;"><strong>Compare the sound register to the value from the joystick</strong></span></p>
<div>The comparator chip inside the CoCo has two analog inputs and one digital output. The two inputs are labeled plus and minus. The plus input is connected to the four position switch that connects to the four different joystick axis. The minus input is connected to the output of the digital to analog converted that is controlled by bits 2 thru 7 of side A of PIA 2. The comparator will output a high signal if the plus input is higher than the minus input. Otherwise the comparator will output a low signal. The comparator output is connected to line PA7 of PIA 1. We need to setup this line to be an input.</div>
<pre>        LDA  $FF01   Load Control Register A of PIA 1
        ANDA #$FB    Engage Data Direction Register A. (Clear bit 2.)
        STA  $FF01   Store value back in CRA.
        LDA  $FF00   Load Data Direction Register A of PIA 1.
        ANDA #$7F    Set line PA7 to be an input. (Clear bit 7.)
        STA  $FF00   Store value back in DDRA.</pre>
<div>Modify the Control Register A to engage the Data Register A at $FF00.</div>
<pre>        LDA  $FF01   Load Control Register A of PIA 1
        ORA  #$04    Engage Data Register A. (Set bit 2.)
        STA  $FF01   Store value back in CRA.</pre>
<div>Read the output from the comparator.</div>
<pre>LOOP    STB  $FF20   Store value in Sound Register
        LDA  $FF00   Bit 7 of register A contains the output information from the comparator.</pre>
<div>If bit 7 is high, then we have found the current value.</div>
<pre>       BPL DONE   Branch if negative condition is set to label DONE.</pre>
<p><a name="Increment_sound_register"></a><span style="text-decoration: underline;"><strong>Increment sound register</strong></span></p>
<div>Increment Sound register value by one.</div>
<pre>        ADDB #$04   Increment Sound register by one value</pre>
<div>Check for a carry. The sound register will overflow after 64 tries.</div>
<pre>        BCS  DONE    Branch to label DONE if carry bit set.
        BRA  LOOP    Branch back to the label LOOP</pre>
<div>We&#8217;re done. The value of the joystick is in the sound register. We need to shift the data over two bits to normalize it to 1 thru 64.</div>
<pre>DONE    LSRB         Logical shift right
        LSRB         Logical shift right</pre>
<div>Now subtract one to bring it to 0 thru 63.</div>
<pre>        DECB</pre>
<div>Write value to video memory to see it.</div>
<pre>        ORB  #$80    Set bit 7 to turn it into a VDG graphic character
        STA  $500    Put value into middle of the 32 collum screen.
        SWI	     Return to ZBUG.
        END</pre>
<div class="editsection"><a name="Colophon"></a><span style="text-decoration: underline;"><strong>Colophon</strong></span></p>
<div>As you can see, reading the joystick is quite involved. It is interesting to note that Color BASIC will attempt to read the joystick value ten times but will immediately return once it gets the same value twice from this process. If all ten tries produce different results, the tenth is returned.</div>
<div>Another quirk is BASIC will sample all four joysticks when joystick zero is read. Reading joysticks 1 thru 3 will return values cached during the sampling done when issuing the JOYSTK(0) command.</div>
</div>
</div>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/09/coco-joystick-and-audio-sampling/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>os9 .dsk image</title>
		<link>http://www.coco3.com/community/2009/06/os9-dsk-image</link>
		<comments>http://www.coco3.com/community/2009/06/os9-dsk-image#comments</comments>
		<pubDate>Fri, 26 Jun 2009 20:51:46 +0000</pubDate>
		<dc:creator>Randy</dc:creator>
				<category><![CDATA[Rainbow IDE]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/06/os9-dsk-image/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>I assembled source code for a date module, and it seems to have gone well after I found an os9 defs file. Now I need to make a virtual disk, I can&#8217;t seem to make any that work from separate programs/modules. Do I need to specify an assembler? Is it copy or os9 module? Probably I need os9.exe, but what disk format should it be to make a physical os9 disk? I need a set of options that will work&#8230;Thanks, Randy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/06/os9-dsk-image/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Does basic have Merge command?</title>
		<link>http://www.coco3.com/community/2009/06/does-basic-have-merge-command</link>
		<comments>http://www.coco3.com/community/2009/06/does-basic-have-merge-command#comments</comments>
		<pubDate>Fri, 26 Jun 2009 01:35:04 +0000</pubDate>
		<dc:creator>sc</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/06/does-basic-have-merge-command/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t have any book handy&#8230; can DECB load a program and merge it with currently running program?  I&#8217;d like to be able to write a base program with line numbers below 10000, then use a &#8220;merge&#8221; command to load routines on demand into the 10000+ line number range and gosub them when I need to.  Can I do that?</p>
<p>-sc</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/06/does-basic-have-merge-command/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Drivewire COM port settings?</title>
		<link>http://www.coco3.com/community/2009/06/drivewire-com-port-settings</link>
		<comments>http://www.coco3.com/community/2009/06/drivewire-com-port-settings#comments</comments>
		<pubDate>Sat, 13 Jun 2009 05:59:56 +0000</pubDate>
		<dc:creator>sc</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/06/drivewire-com-port-settings/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been playing around with making my own drivewire server app on Windows.  Unexpected problem is I can&#8217;t get connected.  I know it runs at 57600 on a coco3, so I expected it to be &#8220;57600,N,8,1&#8243;.  But I don&#8217;t get any responses&#8230; anybody know if it uses any unusual bits, stop bits, parity, handshaking, etc?  I know my cable is good because I fire up the &#8220;real&#8221; drivewire server app and boom, no problem.</p>
<p>-sc</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/06/drivewire-com-port-settings/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Rainbow IDE 1.6 is really super</title>
		<link>http://www.coco3.com/community/2009/06/rainbow-ide-1-6-is-really-super</link>
		<comments>http://www.coco3.com/community/2009/06/rainbow-ide-1-6-is-really-super#comments</comments>
		<pubDate>Sun, 07 Jun 2009 12:10:39 +0000</pubDate>
		<dc:creator>earlcasper</dc:creator>
				<category><![CDATA[Rainbow IDE]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/06/rainbow-ide-1-6-is-really-super/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>I recently downloaded Rainbow IDE 1.6 It&#8217;s advertised as beta, but I found that with a bit of tinkering, it was vastly superior to 1.4 <img src='http://www.coco3.com/community/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  I was so pleased that I sent in for another 2 site license even though I might have gotten by with the second site of my last two site license. Last time I paid with my pay pal account and it took forever to get a key. <img src='http://www.coco3.com/community/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  This time I tried a credit card. I&#8217;m hoping that my key will come soon. It&#8217;s quite usable even without the key, but I think that the key will make the experience even more pleasant. <img src='http://www.coco3.com/community/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/06/rainbow-ide-1-6-is-really-super/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Downloading Rainbow</title>
		<link>http://www.coco3.com/community/2009/06/downloading-rainbow</link>
		<comments>http://www.coco3.com/community/2009/06/downloading-rainbow#comments</comments>
		<pubDate>Sat, 06 Jun 2009 12:50:00 +0000</pubDate>
		<dc:creator>earlcasper</dc:creator>
				<category><![CDATA[Rainbow IDE]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/06/downloading-rainbow/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>I can&#8217;t seem to download either rainbow IDE or the bios collection. A task bar shows up at the bottom of my browser, so something is happening, but I can&#8217;t find anything afterwords. <img src='http://www.coco3.com/community/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/06/downloading-rainbow/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Memory</title>
		<link>http://www.coco3.com/community/2009/06/memory-3</link>
		<comments>http://www.coco3.com/community/2009/06/memory-3#comments</comments>
		<pubDate>Thu, 04 Jun 2009 16:57:24 +0000</pubDate>
		<dc:creator>pastageek</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/06/memory-3/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Has anyone ever made a program that would let the color computer use the Host PC&#8217;s ram?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/06/memory-3/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Visual Studio CoCo plugin</title>
		<link>http://www.coco3.com/community/2009/06/visual-studio-coco-plugin</link>
		<comments>http://www.coco3.com/community/2009/06/visual-studio-coco-plugin#comments</comments>
		<pubDate>Tue, 02 Jun 2009 16:34:09 +0000</pubDate>
		<dc:creator>pastageek</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/06/visual-studio-coco-plugin/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>The Rainbow IDE very popular, but what about making plugin for an all languages IDE such as Visual Studio. The IDE even has templates for making them. Would anyone be interested in helping me make a plugin for color computer syntax? For those of you that don&#8217;t know, Visual Studio supports not only syntax highlighting, but also code completion with intellisense. </p>
<p>As you start typing code, a list popes up with relevant syntax, variables, functions, you name it as well as templates such as with for loops where I all I have to do is type for then hit the tab button twice and it creates a for loop with all its parameters and in the case of C# it also gives you the curly braces.</p>
<p>I think this would help coco developers.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/06/visual-studio-coco-plugin/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>simple random number generator</title>
		<link>http://www.coco3.com/community/2009/05/simple-random-number-generator</link>
		<comments>http://www.coco3.com/community/2009/05/simple-random-number-generator#comments</comments>
		<pubDate>Thu, 28 May 2009 22:02:16 +0000</pubDate>
		<dc:creator>Lod</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/05/simple-random-number-generator/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Hi,<br />I am working on a simple machine language project and would like to get a somewhat random sequence of values using as few cycles as possible.  I am not well versed in assembler but I&#8217;m trying to get better with it.  I have studied the section in the basic rom that generates values for the RAND function in basic, but I&#8217;m not understanding it very well.  </p>
<p>Is there an example somewhere I could study to learn from?  Google hasn&#8217;t given me much help, at least not that I could make sense of.  I tried to implement a suggestion that I found to multiply and then add a value using the D register over and over, but I wasn&#8217;t sure how to implement multiplication on a 16 bit value.  I tried loading D and then multiply on A and B, then the addd, and got a sequence that repeats every 5 bytes so I did something wrong there.</p>
<p>Sorry if this is a silly question, I could use any advice.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/05/simple-random-number-generator/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>XRoar in Flash</title>
		<link>http://www.coco3.com/community/2009/05/xroar-in-flash</link>
		<comments>http://www.coco3.com/community/2009/05/xroar-in-flash#comments</comments>
		<pubDate>Sun, 10 May 2009 00:29:31 +0000</pubDate>
		<dc:creator>sixxie</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/05/xroar-in-flash/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Fairly limited so far, but working quite well on recent-ish machines:</p>
<p>[url]http://www.6809.org.uk/dragon/xroar-flash.shtml[/url]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/05/xroar-in-flash/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Possible BREAKOUTlike game&#8230;..</title>
		<link>http://www.coco3.com/community/2009/05/possible-breakoutlike-game</link>
		<comments>http://www.coco3.com/community/2009/05/possible-breakoutlike-game#comments</comments>
		<pubDate>Wed, 06 May 2009 03:09:32 +0000</pubDate>
		<dc:creator>Alr</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/05/possible-breakoutlike-game/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>www.aaronrls01.webs.com/Mocha/Breakout/BreakOut.dsk</p>
<p>Load both files and type in RUN. Keyboard=left and right buttons and joystick is whatever simulates a joystick on what your running it on.</p>
<p>What do you gusy think? Does it have potential?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/05/possible-breakoutlike-game/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Window Master &#8211; FAO: Tim Linder</title>
		<link>http://www.coco3.com/community/2009/04/window-master-fao-tim-linder</link>
		<comments>http://www.coco3.com/community/2009/04/window-master-fao-tim-linder#comments</comments>
		<pubDate>Sat, 25 Apr 2009 18:23:40 +0000</pubDate>
		<dc:creator>manny</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/04/window-master-fao-tim-linder/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Tim (or anyone else that might be able to work on this),</p>
<p>Do you think you could take a look at Window Master?  Under MESS the mouse doesn&#8217;t seem to work properly.  It just seems to like the corner of the screen under any of the different adapters that are available in MESS&#8217; menu.</p>
<p>If you need any more information (to help debug,) or for a copy of the DMK image, you can contact either myself or Briza.</p>
<p>Thanks!<br />-M.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/04/window-master-fao-tim-linder/feed</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>CoCo 3 Ethernet?</title>
		<link>http://www.coco3.com/community/2009/04/coco-3-ethernet</link>
		<comments>http://www.coco3.com/community/2009/04/coco-3-ethernet#comments</comments>
		<pubDate>Wed, 15 Apr 2009 05:19:31 +0000</pubDate>
		<dc:creator>BookWorm</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/04/coco-3-ethernet/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Wow, Bluetooth on the CoCo! We also have IDE, Compact Flash, and VGA!</p>
<p>What&#8217;s the next great project? I&#8217;m not an engineer, and I don&#8217;t have the money to start developing stuff myself. I&#8217;m only making a suggestion for those who are in that position. But I know far less powerfull computers are using ethernet now, and I think this would be a *very* useful and popular product for the CoCo.</p>
<p>Why not? Please think about it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/04/coco-3-ethernet/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Saving basic/assembly programs to floppy (am I out of luck?)</title>
		<link>http://www.coco3.com/community/2009/04/saving-basicassembly-programs-to-floppy-am-i-out-of-luck</link>
		<comments>http://www.coco3.com/community/2009/04/saving-basicassembly-programs-to-floppy-am-i-out-of-luck#comments</comments>
		<pubDate>Wed, 15 Apr 2009 04:27:18 +0000</pubDate>
		<dc:creator>echosa</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/04/saving-basicassembly-programs-to-floppy-am-i-out-of-luck/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Hi all. I&#8217;m new to the forums and new to the CoCo. I&#8217;ve been messing around with it for the past few days (mostly playing Rogue (floppy) and Dungeons of Dagorath (ROMPak)). </p>
<p>I&#8217;m a programmer by hobby and by profession, and I&#8217;d like to do some hobby programs for the CoCo3 I have. However, I can&#8217;t figure out how to save to disk.</p>
<p>I ran a graphics program (can&#8217;t think of the name at the moment) and successfully saved a picture to my second floppy drive (D1, I have two stacked floppy drives that connect via the cartridge input, although I have them in slot 4 of my multi-pak interface). So, I know the hardware is working. However, when I boot into Extended Basic (I noticed its &#8220;extended&#8221; when the floppy drives are present, and not Extended when they are not) I can&#8217; figure out how to save. When I run the EDTASM+ ROMPak, I can&#8217;t save there either. Supposedly the WD command is supposed to work, but I can&#8217;t figure it out.</p>
<p>I read somewhere that you have to have the disk version of EDTASM (not the ROMPak like I have) to save to disk. (Mine can apparently save to cartridge (?) or cassette). Is this true?</p>
<p>As far as the Extended basic goes, I can&#8217;t even figure out how to get a directory listing. I usually end up going into OS9 L2 for that. (If anybody want to explain that to me, or link me to websites I haven&#8217;t read yet [and I've read a lot already] please feel free).</p>
<p>I love to learn new computer &#8220;stuff&#8221; and I love to program. Any information, guides, reading, manuals, or anything that you can toss my way would be wonderful.</p>
<p>If you need any more information, just ask.</p>
<p>Thanks in advance, and I look forward to any helpful replies!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/04/saving-basicassembly-programs-to-floppy-am-i-out-of-luck/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Wanted, opinions on 6809 C Compilers/Macro Assemblers</title>
		<link>http://www.coco3.com/community/2009/04/wanted-opinions-on-6809-c-compilersmacro-assemblers</link>
		<comments>http://www.coco3.com/community/2009/04/wanted-opinions-on-6809-c-compilersmacro-assemblers#comments</comments>
		<pubDate>Wed, 08 Apr 2009 15:55:57 +0000</pubDate>
		<dc:creator>pilot352</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/04/wanted-opinions-on-6809-c-compilersmacro-assemblers/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently started a CoCo programming project. In doing so, I decided that I wanted to write it in C and assemblers. After a massive search for a C Compiler, I started using the free compiles called CC09 along with it&#8217;s assembler but I hated it. It doesn&#8217;t conform to ANSI and it creates horrible code. I guess you get what you pay for!! <img src='http://www.coco3.com/community/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> )</p>
<p>I then went to GCC (another freebie) but after reading that it&#8217;s basically supported by one guy and I had difficulty implementing it, I gave up.</p>
<p>BTW, how come everything for Linux has to be so freaking convoluted. Just to find a simple patch, I have to wonder through thousands of links that say &#8220;go here&#8221; just to be taken to another thousand links&#8230; jeeeze!!</p>
<p>Anyway, I finally settled on Dunfield&#8217;s 6809 C compiler. It cost me $100.00, but so far it works quite well. It doesn&#8217;t support typedefs or enums though. But I&#8217;ve been working around that.</p>
<p>I was just wondering what C Compilers do others use and what are your opinions of them???</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/04/wanted-opinions-on-6809-c-compilersmacro-assemblers/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Cassette format documented?</title>
		<link>http://www.coco3.com/community/2009/04/cassette-format-documented</link>
		<comments>http://www.coco3.com/community/2009/04/cassette-format-documented#comments</comments>
		<pubDate>Mon, 06 Apr 2009 07:47:25 +0000</pubDate>
		<dc:creator>potatohead</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/04/cassette-format-documented/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s say I&#8217;ve a .cas file.</p>
<p>If I want to make an audio file, or just generate the audio, where can I find bits to waves documentation?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/04/cassette-format-documented/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Advice needed from the gurus!</title>
		<link>http://www.coco3.com/community/2009/03/advice-needed-from-the-gurus</link>
		<comments>http://www.coco3.com/community/2009/03/advice-needed-from-the-gurus#comments</comments>
		<pubDate>Tue, 31 Mar 2009 07:35:14 +0000</pubDate>
		<dc:creator>wmikrut</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/03/advice-needed-from-the-gurus/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Hello everyone!</p>
<p>I am currently writing a very simple game for the CoCo3 &#8212; (Sorry &#8211; with a twist) and I would like some advice.</p>
<p>It seems programming sprites these days is a lost art, and I am having some trouble pinning down some information.  I want to use 16 sprites to control the moving of all the pawns in the game&#8230;. and this is where I start to have some trouble.</p>
<p>I understand the basic concepts &#8212; save the background, draw the sprite, restore the background and move.  I also understand why using and/or will quickly draw a sprite and why vsync is needed.</p>
<p>Following the advice I have read here in the forums, I figured each of the 16 pawns would be defined as this:</p>
<p>Start Address of Pawn Graphic (16-Bit)<br />X/Y Position of the Pawn (16-Bit)<br />Pawn Status (8 Bit)</p>
<p>So far so good&#8230; and now I get stuck&#8230; the definition of the sprite itself.  <br />I can easily store the pawn definition in 8 bytes like this:<br />00011000 = $18<br />00111100 = $3C<br />00011000 = $18<br />00011000 &#8230; etc&#8230;<br />00011000<br />00111100<br />01111110<br />11111111</p>
<p>I already wrote an ML routine that decodes each bit of the 8 bytes and can draw the pawn on the screen&#8230; but how do I associate color with the pawn?  Would it just be best to define the 64 bytes and include all the information&#8230;. or am I missing something here in the sprite definition?</p>
<p>I apologize if this is a basic question &#8212; I have never really worked with sprites before &#8212; and the information train is quickly drying up on the net.</p>
<p>Thank you!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/03/advice-needed-from-the-gurus/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Reverse engineering the Proto CoCo 3</title>
		<link>http://www.coco3.com/community/2009/03/reverse-engineering-the-proto-coco-3</link>
		<comments>http://www.coco3.com/community/2009/03/reverse-engineering-the-proto-coco-3#comments</comments>
		<pubDate>Sun, 29 Mar 2009 01:21:19 +0000</pubDate>
		<dc:creator>hhos</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/03/reverse-engineering-the-proto-coco-3/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m attempting to reverse engineer the prototype CoCo 3 that belongs to Allen Huffman. I&#8217;m certain there is a good deal of interest in this. There certainly was in the chat room when I brought the subject up. Currently, I am only trying to classify each chip as a member of one of three categories: </p>
<p>CoCo<br />GIME<br />Other</p>
<p>So far I am certain of only this:<br />The CPU and associated ROM, the PIA&#8217;s, RAM and probably the 74LS138 in the upper left corner of the -008 picture are CoCo.<br />The FDC is in &#8220;other&#8221;.</p>
<p>I hope you will all take an interest and contribute. I would like to discuss a coordinate system for referencing components&#8217; locations.  I think letters across the short edge and numbers along the long side.  This will save time searching for the component/trace/wire under discussion by avoiding the tedious task of scanning the whole board for &#8220;U92&#8243;.</p>
<p>Thanks,<br />HH</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/03/reverse-engineering-the-proto-coco-3/feed</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>J6809 Saving&#8230;</title>
		<link>http://www.coco3.com/community/2009/03/j6809-saving</link>
		<comments>http://www.coco3.com/community/2009/03/j6809-saving#comments</comments>
		<pubDate>Sat, 28 Mar 2009 01:57:18 +0000</pubDate>
		<dc:creator>Alr</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/03/j6809-saving/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>JUST figured our you can save your programs on this as DSK for Mocha, And now I REALLY wana save them&#8230;Only problem is that I can&#8217;t figure out how&#8230;Please help <img src='http://www.coco3.com/community/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p> ALR</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/03/j6809-saving/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CoCo Graphics Editor ?</title>
		<link>http://www.coco3.com/community/2009/03/coco-graphics-editor</link>
		<comments>http://www.coco3.com/community/2009/03/coco-graphics-editor#comments</comments>
		<pubDate>Thu, 26 Mar 2009 10:16:24 +0000</pubDate>
		<dc:creator>wmikrut</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/03/coco-graphics-editor/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>I have recently registered the Rainbow IDE and it is a NICE utility!  I don&#8217;t even know how I did it before with the EDT Cart!</p>
<p>I have worked through understanding all the new ( I say new because my days were spent pushing a CoCo2 back in the day) registers and most of their functions (Thank you RG!)</p>
<p>One thing I would like to know is if anyone knows of a utility I can use to create sprite images.  My guess is this would need to be a CoCo3 util so I can get the colors right.</p>
<p>I need to take an image and break it down into binary for inclusion in my programs.  I already read some good advice from 6809er &#8212; and now I would like to put it to work!</p>
<p>Thank you!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/03/coco-graphics-editor/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Best coco text editor?</title>
		<link>http://www.coco3.com/community/2009/03/best-coco-text-editor</link>
		<comments>http://www.coco3.com/community/2009/03/best-coco-text-editor#comments</comments>
		<pubDate>Mon, 23 Mar 2009 22:40:49 +0000</pubDate>
		<dc:creator>sc</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/03/best-coco-text-editor/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>What&#8217;s the best text editor for my 512 coco3?  Something I can just run via DECB, and quickly edit large files and save them back to disk&#8230;</p>
<p>There is absolutely no reason why I can&#8217;t use notepad on my PC, except I need a certain amount of green radiation every week&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/03/best-coco-text-editor/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>CoCo3 MMU Question</title>
		<link>http://www.coco3.com/community/2009/03/coco3-mmu-question</link>
		<comments>http://www.coco3.com/community/2009/03/coco3-mmu-question#comments</comments>
		<pubDate>Mon, 23 Mar 2009 08:27:13 +0000</pubDate>
		<dc:creator>wmikrut</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/03/coco3-mmu-question/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>I do have a question about the MMU operation in the CoCo3 &#8212; and unfortunately, when I had one back in the day &#8212; it was the 128K version.  So now I have a new feature to use &#8212; and I would like to know if I am in the ballpark&#8230; or am I wandering about aimlessly in the outback!</p>
<p>I am aware of FFA0-FFA7 &#8230; and FFA8-FFAF</p>
<p>Getting right to the point, let&#8217;s assume I am writing an ML program&#8230; and I start in page 1 with an ORG of $2000.  Let&#8217;s say I need to access additional pages of memory, but I want to control that feature.</p>
<p>So with my small program operating out of page 1, I want to control page 2 and point it to different segments of memory.</p>
<p>If I try to point FFA2 to say, 30 &#8212; I freeze up &#8212; and I do think the machine spews profanity at me!</p>
<p>Ok, so I load FFAA with 30 &#8212; all is well so far.  Then I set FF91 &#8212; and I can smell the smoke coming from my machine.</p>
<p>Seems to me I am missing something very simple here &#8212; and I am hoping someone will hit me with a tack hammer and set me straight on how to manually control blocking of virtual memory segments.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/03/coco3-mmu-question/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Kaboom! For Coco 1/2?</title>
		<link>http://www.coco3.com/community/2009/03/kaboom-for-coco-12</link>
		<comments>http://www.coco3.com/community/2009/03/kaboom-for-coco-12#comments</comments>
		<pubDate>Fri, 13 Mar 2009 17:47:08 +0000</pubDate>
		<dc:creator>Alr</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/03/kaboom-for-coco-12/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>No offense to 6809er, but I think we need a Kaboom! Port to the Trs-80 to speed up the action&#8230;</p>
<p> Does this seem like a good idea? Has anybody ever tried it? Is the 6809 fast enough to do it 16 Bombs Per Second like the Atari 2600 Version?</p>
<p> I am asking, Because although I am on a project I have to start on again, I am thinking for my next complete game <img src='http://www.coco3.com/community/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Alr</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/03/kaboom-for-coco-12/feed</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Yet another CoCo diskette utility &#8211; download now available</title>
		<link>http://www.coco3.com/community/2009/03/yet-another-coco-diskette-utility-download-now-available</link>
		<comments>http://www.coco3.com/community/2009/03/yet-another-coco-diskette-utility-download-now-available#comments</comments>
		<pubDate>Sun, 08 Mar 2009 11:07:41 +0000</pubDate>
		<dc:creator>fiscap</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/03/yet-another-coco-diskette-utility-download-now-available/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>So I&#8217;ve been working on this program on-and-off for a couple of months now. It all started when I simply got frustrated looking through hundreds of .DSK images for a particular program. I originally thought that I could methodically go through every single image and create a .CSV or .TXT file to catalog everything, but after about 30 seconds of that thought, I knew I could waste much more time creating a application to do it for me. <img src='http://www.coco3.com/community/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>My original plan was to remake the .DSK imaging utility into a more user-friendly application, with the ability to export a .XML data file as a catalog. With this approach, I could do whatever I wanted with the data &#8211; such as a simple database or HTML utility. After some additional thought, I came up with the idea of creating a basic database within the application itself. My end goal is to be able to create an entire catalog of all my disk images and incorporate meta-data for their content. There will also be a search utility in the application which will allow you to look for files or content on the disk images themselves. I&#8217;ve also included a hex editor to modify the contents of the disk images &#8211; may be useful to someone.</p>
<p>Let me know If anyone has ideas on anything I should be including for functionality.</p>
<p>[b:914eae0c22]Latest build located[/b:914eae0c22] [url=http://www.fiscap.com/trs-80_fdce.zip]here[/url].</p>
<p>Here are a couple of screenshots of my progress so far:</p>
<p>[url=http://www.fiscap.com/images/trs80_catalog.jpg][img:914eae0c22]http://www.fiscap.com/images/trs80_catalog_tn.jpg[/img:914eae0c22]<br />[/url]<br />[url=http://www.fiscap.com/images/trs80_explorer.jpg][img:914eae0c22]http://www.fiscap.com/images/trs80_explorer_tn.jpg[/img:914eae0c22]<br />[/url]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/03/yet-another-coco-diskette-utility-download-now-available/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>How&#8217;s this keyboard reading routine look?</title>
		<link>http://www.coco3.com/community/2009/03/hows-this-keyboard-reading-routine-look</link>
		<comments>http://www.coco3.com/community/2009/03/hows-this-keyboard-reading-routine-look#comments</comments>
		<pubDate>Fri, 06 Mar 2009 10:53:58 +0000</pubDate>
		<dc:creator>Alr</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/03/hows-this-keyboard-reading-routine-look/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>For W and S keys, It starts at a JSR to KBD 10S&#8230;.Bottom of the page XD</p>
<p> http://aaronrls01.webs.com/Cocogames/GameKBD.txt</p>
<p> Anyone see any mistakes or errors? I don&#8217;t wan assemble the game and find out something was wrong and start ALL over again&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/03/hows-this-keyboard-reading-routine-look/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Hard Drive/ 40 track/80 track and MESS</title>
		<link>http://www.coco3.com/community/2009/03/hard-drive-40-track80-track-and-mess</link>
		<comments>http://www.coco3.com/community/2009/03/hard-drive-40-track80-track-and-mess#comments</comments>
		<pubDate>Thu, 05 Mar 2009 07:07:21 +0000</pubDate>
		<dc:creator>pilot352</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/03/hard-drive-40-track80-track-and-mess/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Is there a way to get any of these to work using the latest MESS emulator? I&#8217;ve tried under OS9 LII and RSDos and it wont let me format the disk images. I&#8217;m sure there&#8217;s a way (especially the HD ) but it alludes me.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/03/hard-drive-40-track80-track-and-mess/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>New utility for DSK files &#8211; Please help</title>
		<link>http://www.coco3.com/community/2009/03/new-utility-for-dsk-files-please-help</link>
		<comments>http://www.coco3.com/community/2009/03/new-utility-for-dsk-files-please-help#comments</comments>
		<pubDate>Wed, 04 Mar 2009 08:25:18 +0000</pubDate>
		<dc:creator>pilot352</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/03/new-utility-for-dsk-files-please-help/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Hello,</p>
<p>This is my first post here but not my first time with the CoCo. I&#8217;ve owned a CoCo from day 1 ( old gray 4K version 1.0 ). I was bored lately and wrote a small utility to access .DSK files. I am offering this utility free here. All I ask is that you try it and let me know how it works for you. I am also interested in opinions on features to add.</p>
<p>You can download the utility here&#8230;<br />>>>> DOWNLOAD THE LATEST VERSION BELOW < <<<</p>
<p>If you find a problem, please post it here so I can address it. I&#8217;m just doing this for fun and with the hope that everyone will find the utility useful.</p>
<p>For those who are really interested, just email me or post here and I can send you the source code for the utility.</p>
<p>Here&#8217;s a screen shot (reduced in size)&#8230;<br />[img:d084a05686]http://home.comcast.net/~pilot352/CoCoDsk.jpg[/img:d084a05686]</p>
<p>Again, this is just for fun and your comments are welcome.</p>
<p>Thanks for your time.</p>
<p>Also, I will be making revisions from time to time and will post them here as I release them.</p>
<p>Enjoy!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/03/new-utility-for-dsk-files-please-help/feed</wfw:commentRss>
		<slash:comments>48</slash:comments>
		</item>
		<item>
		<title>Manuals?</title>
		<link>http://www.coco3.com/community/2009/03/manuals</link>
		<comments>http://www.coco3.com/community/2009/03/manuals#comments</comments>
		<pubDate>Mon, 02 Mar 2009 19:57:44 +0000</pubDate>
		<dc:creator>Alr</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/03/manuals/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Where&#8217;s a site that I can download the diagram that shows what ports on the PIA that the color computer read the keyboard. I have a service manual at my house with the list, But would it be in the Manuals anywhere? After searching the downloads I couldn&#8217;t find anything.</p>
<p> Also, A screenie would be fine, too.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/03/manuals/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>OS9 Microware C on the coco</title>
		<link>http://www.coco3.com/community/2009/02/os9-microware-c-on-the-coco</link>
		<comments>http://www.coco3.com/community/2009/02/os9-microware-c-on-the-coco#comments</comments>
		<pubDate>Sun, 22 Feb 2009 08:41:44 +0000</pubDate>
		<dc:creator>tfadden</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/02/os9-microware-c-on-the-coco/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Can the 6809 do a unsigned long?  I am trying to compile something, and it chokes on:</p>
<p>result = result * 256 + ( (unsigned long)*bytes++ &#038; 0x00FF);</p>
<p>Trying to find the correct syntax, and or if it can do it.</p>
<p>Thanks,</p>
<p>Tim</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/02/os9-microware-c-on-the-coco/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Previously Unaccessable HSCREEN via Basic</title>
		<link>http://www.coco3.com/community/2009/02/previously-unaccessable-hscreen-via-basic</link>
		<comments>http://www.coco3.com/community/2009/02/previously-unaccessable-hscreen-via-basic#comments</comments>
		<pubDate>Sun, 15 Feb 2009 06:57:24 +0000</pubDate>
		<dc:creator>Robert Gault</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/02/previously-unaccessable-hscreen-via-basic/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Coco3 owners are familiar with the four HSCREEN mode:<br />1 320&#215;192,  4 colors<br />2 320&#215;192, 16 colors<br />3 640&#215;192,  2 colors<br />4 640&#215;192,  4 colors</p>
<p>Actually there are ten HSCREEN modes available as listed in the service manual. Resulting from another thread on Programming, I have found a convenient method for accessing the other mode while retaining all of the drawing commands in Super Extended Basic.<br />One strange finding comparing the PMODE4 screen with the HSCREEN 256&#215;192 x2 which have identical size is that artifact coloration does not behave the same way. If you have a composite monitor, you should try the two programs below and carefully compare the results.</p>
<p>There is a table in RAM that gives the horizontal bytes per line for each of the HSCREEN modes. If you change the values in this table and then POKE a value into $FF99, you can access the extra modes.</p>
<p>HSCREEN 256x192x4 colors with artifacts<br />[code:1:e3980c2174]<br />10 ON BRK goto 110<br />20 POKE&#038;HFFB0,0:POKE&#038;HFFB2,&#038;H3F<br />30 POKE&#038;HE6CB,64<br />40 HSCREEN1<br />50 POKE&#038;HFF99,17<br />60 HCLS0:HCOLOR2<br />70 HLINE(0,0)-(255,191),PSET<br />100 GOTO100<br />110 RGB</p>
<p>analogous PMODE screen<br />10 WIDTH32<br />20 PMODE3:PCLS1:SCREEN1,1<br />30 COLOR2,0<br />40 LINE(0,0)-(255,191),PSET<br />50 PMODE4,1:SCREEN1,1<br />60 GOTO60<br />[/code:1:e3980c2174]</p>
<p>Both of the above programs draw a diagonal line on a 256x192 screen. Both will show artifact colors on a composite monitor. However, the PMODE program line will have a single color either red or blue while the HSCREEN program will have three colors white, red, and blue. Both lines look identical on an RGB monitor.</p>
<p>Any of the other HSCREEN modes can be used if you enter the correct width in the table at $E6CB. You must match the color resolution of the new mode with the mode value being replaced.<br />So if you want 256x192x16 you must replace the line width for mode2 which also has 16 colors. Above 256x192x4 was used so the mode1 line width was replaced as it also has 4 color resolution.</p>
<p>===========================<br />correction to line 30 first program. POKE value should be 64</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/02/previously-unaccessable-hscreen-via-basic/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>256 color mode (composite mode artifacting)</title>
		<link>http://www.coco3.com/community/2009/02/256-color-mode-composite-mode-artifacting</link>
		<comments>http://www.coco3.com/community/2009/02/256-color-mode-composite-mode-artifacting#comments</comments>
		<pubDate>Mon, 09 Feb 2009 03:02:51 +0000</pubDate>
		<dc:creator>potatohead</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/02/256-color-mode-composite-mode-artifacting/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>See the wiki discussion entry here:</p>
<p>http://en.wikipedia.org/wiki/Talk:TRS-80_Color_Computer</p>
<p>I added it as discussion as I no longer have a color computer III. I figure you guys can re-do this, and post up your experiences, best color sets and other technical info.</p>
<p>Have fun!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/02/256-color-mode-composite-mode-artifacting/feed</wfw:commentRss>
		<slash:comments>129</slash:comments>
		</item>
		<item>
		<title>Stupid BASIC help&#8230;.</title>
		<link>http://www.coco3.com/community/2009/01/stupid-basic-help</link>
		<comments>http://www.coco3.com/community/2009/01/stupid-basic-help#comments</comments>
		<pubDate>Wed, 14 Jan 2009 01:54:26 +0000</pubDate>
		<dc:creator>Alr</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.coco3.com/community/2009/01/stupid-basic-help/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>How do I input a hex number on the &#8220;Input&#8221; command? Or do I have to make it hex?</p>
<p> I haven&#8217;t done basic since I started assembly some time ago XD</p>
<p> I am now paying the price XD</p>
]]></content:encoded>
			<wfw:commentRss>http://www.coco3.com/community/2009/01/stupid-basic-help/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

