
<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>CoCopedia - The Tandy/Radio Shack Color Computer Wiki - User contributions [en]</title>
		<link>https://www.cocopedia.com/wiki/Special:Contributions/Tlindner</link>
		<description>User contributions</description>
		<language>en</language>
		<generator>MediaWiki 1.45.1</generator>
		<lastBuildDate>Tue, 09 Jun 2026 12:40:46 GMT</lastBuildDate>
		<item>
			<title>Multi-Pak Interface</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Multi-Pak_Interface&amp;diff=11599</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Multi-Pak_Interface&amp;diff=11599</guid>
			<description>&lt;p&gt;Tlindner: Removed line about how a modified MPI is incompatible with a CoCo 1/2.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavHardware}}&lt;br /&gt;
[[File:Multi-pak 26-3024 Grey.jpg|thumb|Multi-pak 26-3024 Grey|alt=Multi-pak 26-3024 Grey]]&lt;br /&gt;
[[File:Multi-pak 26-3024.jpg|thumb|Multi-pak 26-3024 White|alt=Multi-pak 26-3024]]&lt;br /&gt;
[[File:Multi-pak 26-3124.jpg|thumb|Multi-pak 26-3124 White|alt=Multi-pak 26-3124]]&lt;br /&gt;
The MULTI-PAK is a peripheral that plugs into the expansion slot (cartridge port) of the Color Computer and expands it to handle up to 4 cartridges interchangeable and can be used one at a time without having to put out one another. This exchange of the 4 slot can be done without shutting down the computer, although sometimes a reset is required. You can even do some things with several at once.&lt;br /&gt;
&lt;br /&gt;
The following models exist:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;26-3024 Grey&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;26-3024 White&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;26-3124 White&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;26-3124A White&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are also [http://www.youtube.com/watch?v=zy8WdMEAF5Y custom made MULTIPAK]&lt;br /&gt;
and [https://web.archive.org/web/20140814210838/http://www.coco3.com/community/2010/07/this-is-part-1-of-2-of-an-8-slot-mpi-multi-pak-interface-design-for-my-friends-at-coco3-com-andor-the-maltedmedia-list-members-from-your-friend-johngimechip-com/ 8 Slot MULTIPAK (archived)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To use the MULTI-PAK smoothly with Color Computer 3, use this:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Upgrading 26-3024 MPIs typically replaces the existing PAL chip with a PAL/GAL chip programmed for the CoCo 3&#039;s addressing pattern, or redirect a pin on the PAL to a 74SL10 to limit the addressing.&lt;br /&gt;
&lt;br /&gt;
Upgrading the 26-3124 involves trace cutting and wiring in a 74LS10 chip to change the addresses.&lt;br /&gt;
&lt;br /&gt;
(From Cloud9&#039;s website): Here&#039;s a simple test that will determine if your Mulit-Pak has already been upgraded to work with a CoCo 3. From BASIC&#039;s OK prompt, type PRINT PEEK(&amp;amp;HFF90) and press ENTER. If 126 is returned then the Multi-Pak has been upgraded. If it returns 255 then it has NOT been upgraded.&lt;br /&gt;
&lt;br /&gt;
To make a 20-3024 Multi-Pak Interface work with both a CoCo 1/2 and a CoCo 3 requires a piggybacked PAL/GAL with a switch to activate one or the other. I&#039;m sure someone can figure out some circuitry to switch the 20-3124 type Multi-Pak Interface.&lt;br /&gt;
&lt;br /&gt;
[https://web.archive.org/web/20140814204443/http://www.coco3.com/community/2010/05/26-3124-mpi-coco-3-upgrade-1/ 26-3124 Multi-Pak Interface CoCo 3 Upgrade #1 (add in a 74SL10 chip to limit the address range)]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://web.archive.org/web/20140814204443/http://www.coco3.com/community/2010/06/26-3124-mpi-coco-3-upgrade-2/ 26-3124 Multi-Pak Interface CoCo 3 Upgrade #2 (program and add in a new GAL chip to replace the logic of the PAL)]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://web.archive.org/web/20091027042408/http://www.geocities.com/idezilla/CoCoZilla/patchmpi.html 26-3024 Multi-Pak Interface CoCo 3 upgrade By Robin W. Drake (add in an 74SL10 chip to limit the address range)]&lt;br /&gt;
&lt;br /&gt;
Besides the two that provides [http://www.frontiernet.net/~mmarlette/Cloud-9/Hardware/MPI%20PAL.html Cloud-9 hardware Upgrade PAL Multi-Pak], but you have to send the MULTI-PAK.&lt;br /&gt;
&lt;br /&gt;
The disk controller must be used in slot 4, and while you can use two disk controllers in the Multi-Pak Interface, problems exist as their addressing may conflict. This may be worked-around in some software.&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
*[https://colorcomputerarchive.com/repo/Documents/Manuals/Hardware/Multi-Pak%20Interface%20Owners%20Manual%20%28Tandy%29.pdf Multi-Pak Interface Owners Manual (Tandy)]&lt;br /&gt;
*[http://www.trailingedge.com/trs80/Coco-Multi-Pakom.pdf Multi-Pak 26-3124 for the Color Computer 2 Owners Manual]&lt;br /&gt;
*[https://web.archive.org/web/20140814210855/http://www.coco3.com/community/2010/07/this-is-part-1-of-2-of-an-8-slot-mpi-multi-pak-interface-design-for-my-friends-at-coco3-com-andor-the-maltedmedia-list-members-from-your-friend-johngimechip-com/ 8-slot-mpi-multi-pak-interface-design]&lt;br /&gt;
&lt;br /&gt;
=Video=&lt;br /&gt;
*[http://www.youtube.com/watch?v=Hs2nL3tir9Q YouTube Atarileaf] with a joke about MULTI-PAK in the movie &#039;&#039;The Fifth Element&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Mod=&lt;br /&gt;
A 74SL10 chip is used to provide 3 NAND gates that when combined as described limit addressing to not include the overlapping regions of memory. The 74LS10 can be mounted on top of another chip to provide provide power and ground, attaching pins 7 &amp;amp; 14 with pins 7 &amp;amp; 14 of the mounted chip. Bend out the other pins to not touch the underlying chip and run wires to the appropriate points to provide the logic needed, with one pin of the PAL redirected from its normal path. The points differ for the 26-3024 and 26-3124; both modifications outlined here (and in above links):&lt;br /&gt;
&lt;br /&gt;
[[File:MPI Mod for coco3.JPG|MPI Mod for coco3]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Detail for 26-3024:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:3024MOD.jpg]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Detail for 26-3124:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[File:MPI Mod for coco3 diagram.JPG|MPI Mod for coco3 diagram]]&lt;br /&gt;
[[File:Mod3124.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]]&lt;/div&gt;</description>
			<pubDate>Sun, 21 Sep 2025 13:49:03 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Multi-Pak_Interface</comments>
		</item>
		<item>
			<title>Advanced Color BASIC Documentation</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=11596</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=11596</guid>
			<description>&lt;p&gt;Tlindner: /* Advanced Color BASIC - added ROM vector calls = */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Advanced Color BASIC - New and updated features explained ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
This document explains the version 0.0.7 of Advanced Color BASIC ROM found late in 2023.&amp;lt;br&amp;gt;&lt;br /&gt;
It is from Robert Killgus&#039; collection.&amp;lt;br&amp;gt;&lt;br /&gt;
This is a very early version of the software and eventually became Deluxe Color BASIC. There are known bugs (ON ERROR GOTO error codes are not contiguous is an example), and it includes Disk Extended BASIC (to support the built in 32K RAM drive).&lt;br /&gt;
&lt;br /&gt;
=== Allows lowercase characters in keywords. ===&lt;br /&gt;
(This includes mixing the case within a keyword.)&lt;br /&gt;
&lt;br /&gt;
=== Key repeat is built in. ===&lt;br /&gt;
While there is no BASIC command to change either the key repeat speed or the delay time before key repeat starts, Advanced Color Basic does initialize 2 memory locations in RAM with defaults, that one can change after the fact:&lt;br /&gt;
* &#039;&#039;&#039;POKE &amp;amp;HA00,&amp;lt;key repeat delay value&amp;gt;&#039;&#039;&#039;  (0=no key repeat). Default value is 10 (1/6th of a second)&lt;br /&gt;
* &#039;&#039;&#039;POKE &amp;amp;H9FF,&amp;lt;key repeat start delay value&amp;gt;&#039;&#039;&#039;  Default value is 30 (1/2 a second)&lt;br /&gt;
Both delay values are a count of 1/60th second VSYNC interrupts. NOTE: I would not recommend changing the key repeat start delay value to below 15 (or even 20) as it will start repeating quick that it begins to operate with keybounce.&lt;br /&gt;
&lt;br /&gt;
=== Full screen editor is always available. ===&lt;br /&gt;
* Hold alternate and arrow keys to move the cursor around.&lt;br /&gt;
* Alternate and &#039;I&#039; will insert a space and move the characters after the cursor to the right one space.&lt;br /&gt;
* Alternate and &#039;D&#039; will delete the character under the cursor and shift the remaining characters to the left.&lt;br /&gt;
* Alternate and &#039;E&#039; will delete the characters after the cursor to the end of the line.&lt;br /&gt;
* Alternate and ‘H” will move the cursor to the top left corner of the screen.&lt;br /&gt;
* Right Arrow (without the alternate key, Control-I) will move the cursor right 8 spaces.&lt;br /&gt;
* Left Arrow (without the alternate key, Control-H) will move the cursor one space to the left, and clear the character.&lt;br /&gt;
* Control and &#039;U&#039;, Shift-Left Arrow will clear the line and move the cursor to the left.&lt;br /&gt;
* The break key will abort editing and put the cursor at the bottom left of the screen.&lt;br /&gt;
* CLEAR (Control-L) will abort editing and clear the screen.&lt;br /&gt;
Press the enter key to commit an edited line. You do not have to be at the end of a line.&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-3. ===&lt;br /&gt;
Sends and receives data to/from the new serial port.&lt;br /&gt;
Uses:&lt;br /&gt;
PRINT #-3, &amp;quot;HELLO WORLD&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== RESTORE enhancement ===&lt;br /&gt;
The RESTORE command by itself (as before) will reset the READ/DATA ptr to the first DATA line in the current BASIC program. A new option of specifying the line number of the DATA statement that the next READ should come from has been added.&lt;br /&gt;
  RESTORE 1000:&#039;This sets the next READ to get data from line 1000.&lt;br /&gt;
&lt;br /&gt;
=== RAM Disk ===&lt;br /&gt;
Drive 4 is a RAM Disk. It has 12 granules available. It is available even if there is no disk cartridge inserted.&lt;br /&gt;
&lt;br /&gt;
If a disk cartridge is inserted on cold boot, you are presented with a menu option to go to BASIC or &amp;quot;Disk&amp;quot;. If you choose &amp;quot;Disk&amp;quot; the equivalent of a DOS command is executed.&lt;br /&gt;
&lt;br /&gt;
== New commands ==&lt;br /&gt;
&lt;br /&gt;
=== ERROR &amp;lt;value&amp;gt; ===&lt;br /&gt;
Will cause the computer to stop the program and issue the respective error.&lt;br /&gt;
&lt;br /&gt;
=== RESUME &amp;lt;line number&amp;gt; ===&lt;br /&gt;
Resumes a program at line number from the error handler.&lt;br /&gt;
&lt;br /&gt;
=== WHILE &amp;lt;boolean expression&amp;gt; / WEND ===&lt;br /&gt;
This is a loop construct that will execute the statements between WHILE and WEND repeatedly until the boolean expression is false.&lt;br /&gt;
&lt;br /&gt;
=== TONE channel, toneperiod, amplitude ===&lt;br /&gt;
* channel: 1-3&lt;br /&gt;
* toneperiod: 0-4095&lt;br /&gt;
* amplitude: 0-15&lt;br /&gt;
&lt;br /&gt;
=== NOISE channel,noiseperiod,amplitude ===&lt;br /&gt;
* channel: 1-3&lt;br /&gt;
* noiseperiod: 0-31&lt;br /&gt;
* amplitude 0-15&lt;br /&gt;
&lt;br /&gt;
=== ENV param1,param2,param3,param4,param5 ===&lt;br /&gt;
* 5 numeric parameters 0-65535 allowed (TBD). It appears that each parameter is actual two individual byte values&lt;br /&gt;
&lt;br /&gt;
  TONE 1,2048,15 &#039; start tone 2048 on channel 1 at max volume&lt;br /&gt;
  NOISE 2,31,15 &#039; start noise 31 on channel 2 at max volume&lt;br /&gt;
  NOISE 2,0 &#039; stop noise on channel 2&lt;br /&gt;
  TONE 1,0,0 &#039; stop tone on channel 1&lt;br /&gt;
  SOUND command unaltered&lt;br /&gt;
&lt;br /&gt;
TBD determine if PLAY command supports 3-voice like N60 BASIC (also by Microsoft) does. (At first glance, it does not appear to)&lt;br /&gt;
&lt;br /&gt;
=== CHAIN ===&lt;br /&gt;
&lt;br /&gt;
Chains to another BASIC program. Optional line number to start 2nd program running from.&lt;br /&gt;
&lt;br /&gt;
 CHAIN &amp;quot;PROGRAM[.BAS][,&amp;lt;line number&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
Line number can be a variable.&lt;br /&gt;
&lt;br /&gt;
If no COMMON command has been issued before CHAIN, then all variables are initialized in the called program (same as RUN). However, any numeric variables or arrays defined in a COMMON command will be passed intact to the called program.&lt;br /&gt;
&lt;br /&gt;
=== COMMON ===&lt;br /&gt;
This defines variables to pass along to a CHAIN&#039;ed program. From what I can tell, these can only be be numeric (either straight variables or arrays), but not strings. For regular variables, specify the 1 or 2 character variable name. For arrays, specify the array name with open and closes parenthesis, but with no number to designate how many elements (the chained program will inherit the size used by the calling program). I believe strings were planned - current if passing a string or string array, the string lengths come through, but the ptr to the actual string data gets cleared.&lt;br /&gt;
 COMMON A,B,C,SC()&lt;br /&gt;
&lt;br /&gt;
=== TERM ===&lt;br /&gt;
Executes the ROM based terminal program (the cursor changes from a blinking black one to a blinking blue one to let the user know that they are in terminal mode). Further details on commands and Escape sequences within the terminal programming coming soon. It appears to support most of the &#039;&#039;&#039;Videotex&#039;&#039;&#039; screen controls (although without RLE graphics support).&lt;br /&gt;
 ALT-BREAK = Exit terminal&lt;br /&gt;
 F1 = toggle CR / CR LF&lt;br /&gt;
 F2 = toggle Local Echo on/off&lt;br /&gt;
&lt;br /&gt;
=== CONFIG ===&lt;br /&gt;
Configures the UART Serial port:&amp;lt;br&amp;gt;&lt;br /&gt;
 CONFIG #-3,[1-15],[1-5],[5-8],[1-2]&amp;lt;br&amp;gt;&lt;br /&gt;
==== First parameter: ====&lt;br /&gt;
BAUD&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 = 50&lt;br /&gt;
* 2 = 75&lt;br /&gt;
* 3 = 109.92&lt;br /&gt;
* 4 = 135.56&lt;br /&gt;
* 5 = 150&lt;br /&gt;
* 6 = 300&lt;br /&gt;
* 7 = 600&lt;br /&gt;
* 8 = 1,200&lt;br /&gt;
* 9 = 1,800&lt;br /&gt;
* 10 = 2,400&lt;br /&gt;
* 11 = 3,600&lt;br /&gt;
* 12 = 4,800&lt;br /&gt;
* 13 = 7,200&lt;br /&gt;
* 14 = 9,600&lt;br /&gt;
* 15 = 19,200&lt;br /&gt;
Default: 6&lt;br /&gt;
&lt;br /&gt;
==== Second Parameter: ====&lt;br /&gt;
Sent to 6551 command register&amp;lt;br&amp;gt;&lt;br /&gt;
* 1: $09 00001001 - No Parity&lt;br /&gt;
* 2: $29 00101001 - Odd Parity&lt;br /&gt;
* 3: $69 01101001 - Even Parity&lt;br /&gt;
* 4: $A9 10101001 - Mark Parity&lt;br /&gt;
* 5: $E9 11101001 - Space Parity&lt;br /&gt;
* Transmit interrupt disabled&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
==== Third parameter: ====&lt;br /&gt;
Data word length, 5 to 8.&lt;br /&gt;
* Default: 8&lt;br /&gt;
&lt;br /&gt;
==== Fourth parameter: ====&lt;br /&gt;
Stop Bits&lt;br /&gt;
* 1 = 1 stop bit&lt;br /&gt;
* 2 = 2 stop bits&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
=== MAPMODE &amp;lt;value&amp;gt; ===&lt;br /&gt;
If the value is 0, the Color Computer is set to 0.89 MHz for the entire address space.&lt;br /&gt;
If the value is 1, the Color Computer is set to 1.78 MHz speed when reading from ROM, and 0.89 MHz when reading or writing to RAM.&lt;br /&gt;
&lt;br /&gt;
=== XOR ===&lt;br /&gt;
The exclusive or operator is true if 1 (and only 1) input is true, otherwise it is false.&amp;lt;br&amp;gt;&lt;br /&gt;
This is used in the same sense as AND and OR in if/then statements:&lt;br /&gt;
  IF A XOR B THEN 40&lt;br /&gt;
It is also use like AND and OR in bit wise expressions:&lt;br /&gt;
  C = A XOR B&lt;br /&gt;
&lt;br /&gt;
=== ERR ===&lt;br /&gt;
Variable that contains the last error number.&lt;br /&gt;
&lt;br /&gt;
=== ERL ===&lt;br /&gt;
Variable that contains the line number where the last error occurred.&lt;br /&gt;
&lt;br /&gt;
=== TIME ===&lt;br /&gt;
Returns the current number of 1/60th clock ticks that the current TIME$ value represents (including hours, minutes and seconds).&lt;br /&gt;
&amp;lt;br&amp;gt;Please note that it rolls over at 24 hours.&lt;br /&gt;
&lt;br /&gt;
=== TIME$ ===&lt;br /&gt;
Will either return the current 24 hour clock value, or set the 24 hour clock value, using a string format. The string format is &amp;quot;HH:MM:SS&amp;quot;, in 24 hour time format, so HH can be 0 to 23, MM can be 0 to 59, and SS can be 0 to 59.&lt;br /&gt;
Examples:&lt;br /&gt;
  A$=TIME$&lt;br /&gt;
  TIME$=&amp;quot;13:25:00&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== STRIG(button) ===&lt;br /&gt;
This function returns the state of one of the four joystick buttons. Negative 1 if pressed, zero if not pressed.&amp;lt;br&amp;gt;&lt;br /&gt;
Button numbers 1, 3, 5, 7 return the real time value of the button state. This allows rapid fire with the button held down.&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 - Left joystick button 1&lt;br /&gt;
* 3 - Left joystick button 2&lt;br /&gt;
* 5 - Right joystick button 1&lt;br /&gt;
* 7 - Right joystick button 2&lt;br /&gt;
Button numbers 0, 2, 4, 6 return -1 if the button was pressed since the last time this function was called.&amp;lt;br&amp;gt;&lt;br /&gt;
It will then return 0 as long as the button is held down. A new button press will be required to get another -1. This is for single shot fire - the user needs to let go and press the button again in order to fire again.&lt;br /&gt;
* 0 - Left joystick button 1&lt;br /&gt;
* 2 - Left joystick button 2&lt;br /&gt;
* 4 - Right joystick button 1&lt;br /&gt;
* 6 - Right joystick button 2&lt;br /&gt;
&lt;br /&gt;
=== INPUT$(count, device) ===&lt;br /&gt;
Used to scan an input device and accumulate a string:&lt;br /&gt;
  10 A$=INPUT$(3,#0)&lt;br /&gt;
  20 ? A$&lt;br /&gt;
Will pause the program and wait for three key presses. They are put into A$. This will support cassette, serial and disk file I/O.&lt;br /&gt;
&lt;br /&gt;
=== ON ERROR GOTO &amp;lt;line number&amp;gt; ===&lt;br /&gt;
BASIC will jump to line number when an error is encountered. ERL and ERR will contain the line number with the error and the numeric error code, respectively.&lt;br /&gt;
&lt;br /&gt;
== Changed Commands: ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;EDIT&#039;&#039;&#039; command will now accept a single line number or a range. The command will clear the screen, list the program line/lines and put the cursor at the start of the screen. NOTE: While EDIT lets you select a line number range (and will display them) only the last line changed on screen will actually be committed to the BASIC program (if you edit line 10 and line 20, and hit ENTER to accept the changes after editing line 20, any changes to line 10 will be ignored).&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;CLS&#039;&#039;&#039; value of 9 to 255 will clear the screen and print the entire version/copyright banner (instead of only MICROSOFT). Any program and variables in memory are still intact.&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;CLS&#039;&#039;&#039; value greater than 255 will cause an ?FC error.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SCREEN&#039;&#039;&#039; has a new option for it&#039;s first parameter. -1 will change the 32x16 text display to true lowercase. So the acceptable values for the first parameter (the 2nd parameter is optional, for the colorset 0 or 1) are:&lt;br /&gt;
* SCREEN -1 (true lowercase)&lt;br /&gt;
* SCREEN 0 (inverse lowercase)&lt;br /&gt;
* SCREEN 1 (graphics mode)&lt;br /&gt;
&#039;&#039;PLEASE NOTE&#039;&#039;: The VDG in the Deluxe is not a full implementation of the T1 VDG that appeared in late model Coco 2&#039;s (and were duplicated in the Coco 3). It does not support border (green/black) control, and some of the characters are different from both a regular VDG and a T1 VDG (the pipe symbol is an example).&lt;br /&gt;
&lt;br /&gt;
== Advanced Color BASIC - added ROM vector calls ==&lt;br /&gt;
&lt;br /&gt;
Like Color BASIC and Disk BASIC, which used Extended indirect addresses to call functions within the ROM’s (like JOYIN, DSKCON, etc.), Advanced Color BASIC seems to reserve from $8000-$8015 for additional calls as well. This allows the routines themselves to move around as the ROM was updated, but calling programs would have a set point to enter them.&lt;br /&gt;
&lt;br /&gt;
[$8000] - Calls $FB00, which is a 3 entry table of LBRA instructions:&lt;br /&gt;
    LBRA  $FD32  (executes the TERM (terminal program) command, I believe)&lt;br /&gt;
    LBRA  $FB1A&lt;br /&gt;
    LBRA  $FD92&lt;br /&gt;
&lt;br /&gt;
[$8002] - Calls $FB09, which is a 1 entry table of LBRA instructions (I assume more would have&lt;br /&gt;
been added later)&lt;br /&gt;
LBRA	$FE16&lt;br /&gt;
&lt;br /&gt;
[$8004] - ??? (points to $09D4, which is in BASIC’s data area)&lt;br /&gt;
&lt;br /&gt;
[$8006] - ??? (points to $E968)&lt;br /&gt;
&lt;br /&gt;
[$8008] - ??? (points to $0ABE, which is in BASIC’s data area)&lt;br /&gt;
&lt;br /&gt;
[$800A] - ??? (points to $AD15)&lt;br /&gt;
&lt;br /&gt;
[$800C] - Call $9254, which checks the 6551 initialized flag (&amp;gt;$0A04). If it is 0 (not initialized), it will initialize the 6551 &amp;amp; it’s related variables including 128 byte receive buffer. If not, it just returns.&lt;br /&gt;
&lt;br /&gt;
[$800E] - ??? (points to $929D)&lt;br /&gt;
&lt;br /&gt;
[$8010] - ??? (points to $DE28)&lt;br /&gt;
&lt;br /&gt;
[$8012] - Calls $92E7, which will return a character from the 128 byte RS232 receive buffer, OR wait for an RS232 character to be received if the buffer is empty.&lt;br /&gt;
&lt;br /&gt;
[$8014] - Calls $92BD, which will transmit a character through the RS232.&lt;/div&gt;</description>
			<pubDate>Mon, 08 Sep 2025 03:45:33 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Advanced_Color_BASIC_Documentation</comments>
		</item>
		<item>
			<title>Advanced Color BASIC Documentation</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=11595</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=11595</guid>
			<description>&lt;p&gt;Tlindner: /* Changed Commands: */Changed information base on a comment from Darren Atikison.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Advanced Color BASIC - New and updated features explained ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
This document explains the version 0.0.7 of Advanced Color BASIC ROM found late in 2023.&amp;lt;br&amp;gt;&lt;br /&gt;
It is from Robert Killgus&#039; collection.&amp;lt;br&amp;gt;&lt;br /&gt;
This is a very early version of the software and eventually became Deluxe Color BASIC. There are known bugs (ON ERROR GOTO error codes are not contiguous is an example), and it includes Disk Extended BASIC (to support the built in 32K RAM drive).&lt;br /&gt;
&lt;br /&gt;
=== Allows lowercase characters in keywords. ===&lt;br /&gt;
(This includes mixing the case within a keyword.)&lt;br /&gt;
&lt;br /&gt;
=== Key repeat is built in. ===&lt;br /&gt;
While there is no BASIC command to change either the key repeat speed or the delay time before key repeat starts, Advanced Color Basic does initialize 2 memory locations in RAM with defaults, that one can change after the fact:&lt;br /&gt;
* &#039;&#039;&#039;POKE &amp;amp;HA00,&amp;lt;key repeat delay value&amp;gt;&#039;&#039;&#039;  (0=no key repeat). Default value is 10 (1/6th of a second)&lt;br /&gt;
* &#039;&#039;&#039;POKE &amp;amp;H9FF,&amp;lt;key repeat start delay value&amp;gt;&#039;&#039;&#039;  Default value is 30 (1/2 a second)&lt;br /&gt;
Both delay values are a count of 1/60th second VSYNC interrupts. NOTE: I would not recommend changing the key repeat start delay value to below 15 (or even 20) as it will start repeating quick that it begins to operate with keybounce.&lt;br /&gt;
&lt;br /&gt;
=== Full screen editor is always available. ===&lt;br /&gt;
* Hold alternate and arrow keys to move the cursor around.&lt;br /&gt;
* Alternate and &#039;I&#039; will insert a space and move the characters after the cursor to the right one space.&lt;br /&gt;
* Alternate and &#039;D&#039; will delete the character under the cursor and shift the remaining characters to the left.&lt;br /&gt;
* Alternate and &#039;E&#039; will delete the characters after the cursor to the end of the line.&lt;br /&gt;
* Alternate and ‘H” will move the cursor to the top left corner of the screen.&lt;br /&gt;
* Right Arrow (without the alternate key, Control-I) will move the cursor right 8 spaces.&lt;br /&gt;
* Left Arrow (without the alternate key, Control-H) will move the cursor one space to the left, and clear the character.&lt;br /&gt;
* Control and &#039;U&#039;, Shift-Left Arrow will clear the line and move the cursor to the left.&lt;br /&gt;
* The break key will abort editing and put the cursor at the bottom left of the screen.&lt;br /&gt;
* CLEAR (Control-L) will abort editing and clear the screen.&lt;br /&gt;
Press the enter key to commit an edited line. You do not have to be at the end of a line.&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-3. ===&lt;br /&gt;
Sends and receives data to/from the new serial port.&lt;br /&gt;
Uses:&lt;br /&gt;
PRINT #-3, &amp;quot;HELLO WORLD&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== RESTORE enhancement ===&lt;br /&gt;
The RESTORE command by itself (as before) will reset the READ/DATA ptr to the first DATA line in the current BASIC program. A new option of specifying the line number of the DATA statement that the next READ should come from has been added.&lt;br /&gt;
  RESTORE 1000:&#039;This sets the next READ to get data from line 1000.&lt;br /&gt;
&lt;br /&gt;
=== RAM Disk ===&lt;br /&gt;
Drive 4 is a RAM Disk. It has 12 granules available. It is available even if there is no disk cartridge inserted.&lt;br /&gt;
&lt;br /&gt;
If a disk cartridge is inserted on cold boot, you are presented with a menu option to go to BASIC or &amp;quot;Disk&amp;quot;. If you choose &amp;quot;Disk&amp;quot; the equivalent of a DOS command is executed.&lt;br /&gt;
&lt;br /&gt;
== New commands ==&lt;br /&gt;
&lt;br /&gt;
=== ERROR &amp;lt;value&amp;gt; ===&lt;br /&gt;
Will cause the computer to stop the program and issue the respective error.&lt;br /&gt;
&lt;br /&gt;
=== RESUME &amp;lt;line number&amp;gt; ===&lt;br /&gt;
Resumes a program at line number from the error handler.&lt;br /&gt;
&lt;br /&gt;
=== WHILE &amp;lt;boolean expression&amp;gt; / WEND ===&lt;br /&gt;
This is a loop construct that will execute the statements between WHILE and WEND repeatedly until the boolean expression is false.&lt;br /&gt;
&lt;br /&gt;
=== TONE channel, toneperiod, amplitude ===&lt;br /&gt;
* channel: 1-3&lt;br /&gt;
* toneperiod: 0-4095&lt;br /&gt;
* amplitude: 0-15&lt;br /&gt;
&lt;br /&gt;
=== NOISE channel,noiseperiod,amplitude ===&lt;br /&gt;
* channel: 1-3&lt;br /&gt;
* noiseperiod: 0-31&lt;br /&gt;
* amplitude 0-15&lt;br /&gt;
&lt;br /&gt;
=== ENV param1,param2,param3,param4,param5 ===&lt;br /&gt;
* 5 numeric parameters 0-65535 allowed (TBD). It appears that each parameter is actual two individual byte values&lt;br /&gt;
&lt;br /&gt;
  TONE 1,2048,15 &#039; start tone 2048 on channel 1 at max volume&lt;br /&gt;
  NOISE 2,31,15 &#039; start noise 31 on channel 2 at max volume&lt;br /&gt;
  NOISE 2,0 &#039; stop noise on channel 2&lt;br /&gt;
  TONE 1,0,0 &#039; stop tone on channel 1&lt;br /&gt;
  SOUND command unaltered&lt;br /&gt;
&lt;br /&gt;
TBD determine if PLAY command supports 3-voice like N60 BASIC (also by Microsoft) does. (At first glance, it does not appear to)&lt;br /&gt;
&lt;br /&gt;
=== CHAIN ===&lt;br /&gt;
&lt;br /&gt;
Chains to another BASIC program. Optional line number to start 2nd program running from.&lt;br /&gt;
&lt;br /&gt;
 CHAIN &amp;quot;PROGRAM[.BAS][,&amp;lt;line number&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
Line number can be a variable.&lt;br /&gt;
&lt;br /&gt;
If no COMMON command has been issued before CHAIN, then all variables are initialized in the called program (same as RUN). However, any numeric variables or arrays defined in a COMMON command will be passed intact to the called program.&lt;br /&gt;
&lt;br /&gt;
=== COMMON ===&lt;br /&gt;
This defines variables to pass along to a CHAIN&#039;ed program. From what I can tell, these can only be be numeric (either straight variables or arrays), but not strings. For regular variables, specify the 1 or 2 character variable name. For arrays, specify the array name with open and closes parenthesis, but with no number to designate how many elements (the chained program will inherit the size used by the calling program). I believe strings were planned - current if passing a string or string array, the string lengths come through, but the ptr to the actual string data gets cleared.&lt;br /&gt;
 COMMON A,B,C,SC()&lt;br /&gt;
&lt;br /&gt;
=== TERM ===&lt;br /&gt;
Executes the ROM based terminal program (the cursor changes from a blinking black one to a blinking blue one to let the user know that they are in terminal mode). Further details on commands and Escape sequences within the terminal programming coming soon. It appears to support most of the &#039;&#039;&#039;Videotex&#039;&#039;&#039; screen controls (although without RLE graphics support).&lt;br /&gt;
 ALT-BREAK = Exit terminal&lt;br /&gt;
 F1 = toggle CR / CR LF&lt;br /&gt;
 F2 = toggle Local Echo on/off&lt;br /&gt;
&lt;br /&gt;
=== CONFIG ===&lt;br /&gt;
Configures the UART Serial port:&amp;lt;br&amp;gt;&lt;br /&gt;
 CONFIG #-3,[1-15],[1-5],[5-8],[1-2]&amp;lt;br&amp;gt;&lt;br /&gt;
==== First parameter: ====&lt;br /&gt;
BAUD&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 = 50&lt;br /&gt;
* 2 = 75&lt;br /&gt;
* 3 = 109.92&lt;br /&gt;
* 4 = 135.56&lt;br /&gt;
* 5 = 150&lt;br /&gt;
* 6 = 300&lt;br /&gt;
* 7 = 600&lt;br /&gt;
* 8 = 1,200&lt;br /&gt;
* 9 = 1,800&lt;br /&gt;
* 10 = 2,400&lt;br /&gt;
* 11 = 3,600&lt;br /&gt;
* 12 = 4,800&lt;br /&gt;
* 13 = 7,200&lt;br /&gt;
* 14 = 9,600&lt;br /&gt;
* 15 = 19,200&lt;br /&gt;
Default: 6&lt;br /&gt;
&lt;br /&gt;
==== Second Parameter: ====&lt;br /&gt;
Sent to 6551 command register&amp;lt;br&amp;gt;&lt;br /&gt;
* 1: $09 00001001 - No Parity&lt;br /&gt;
* 2: $29 00101001 - Odd Parity&lt;br /&gt;
* 3: $69 01101001 - Even Parity&lt;br /&gt;
* 4: $A9 10101001 - Mark Parity&lt;br /&gt;
* 5: $E9 11101001 - Space Parity&lt;br /&gt;
* Transmit interrupt disabled&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
==== Third parameter: ====&lt;br /&gt;
Data word length, 5 to 8.&lt;br /&gt;
* Default: 8&lt;br /&gt;
&lt;br /&gt;
==== Fourth parameter: ====&lt;br /&gt;
Stop Bits&lt;br /&gt;
* 1 = 1 stop bit&lt;br /&gt;
* 2 = 2 stop bits&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
=== MAPMODE &amp;lt;value&amp;gt; ===&lt;br /&gt;
If the value is 0, the Color Computer is set to 0.89 MHz for the entire address space.&lt;br /&gt;
If the value is 1, the Color Computer is set to 1.78 MHz speed when reading from ROM, and 0.89 MHz when reading or writing to RAM.&lt;br /&gt;
&lt;br /&gt;
=== XOR ===&lt;br /&gt;
The exclusive or operator is true if 1 (and only 1) input is true, otherwise it is false.&amp;lt;br&amp;gt;&lt;br /&gt;
This is used in the same sense as AND and OR in if/then statements:&lt;br /&gt;
  IF A XOR B THEN 40&lt;br /&gt;
It is also use like AND and OR in bit wise expressions:&lt;br /&gt;
  C = A XOR B&lt;br /&gt;
&lt;br /&gt;
=== ERR ===&lt;br /&gt;
Variable that contains the last error number.&lt;br /&gt;
&lt;br /&gt;
=== ERL ===&lt;br /&gt;
Variable that contains the line number where the last error occurred.&lt;br /&gt;
&lt;br /&gt;
=== TIME ===&lt;br /&gt;
Returns the current number of 1/60th clock ticks that the current TIME$ value represents (including hours, minutes and seconds).&lt;br /&gt;
&amp;lt;br&amp;gt;Please note that it rolls over at 24 hours.&lt;br /&gt;
&lt;br /&gt;
=== TIME$ ===&lt;br /&gt;
Will either return the current 24 hour clock value, or set the 24 hour clock value, using a string format. The string format is &amp;quot;HH:MM:SS&amp;quot;, in 24 hour time format, so HH can be 0 to 23, MM can be 0 to 59, and SS can be 0 to 59.&lt;br /&gt;
Examples:&lt;br /&gt;
  A$=TIME$&lt;br /&gt;
  TIME$=&amp;quot;13:25:00&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== STRIG(button) ===&lt;br /&gt;
This function returns the state of one of the four joystick buttons. Negative 1 if pressed, zero if not pressed.&amp;lt;br&amp;gt;&lt;br /&gt;
Button numbers 1, 3, 5, 7 return the real time value of the button state. This allows rapid fire with the button held down.&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 - Left joystick button 1&lt;br /&gt;
* 3 - Left joystick button 2&lt;br /&gt;
* 5 - Right joystick button 1&lt;br /&gt;
* 7 - Right joystick button 2&lt;br /&gt;
Button numbers 0, 2, 4, 6 return -1 if the button was pressed since the last time this function was called.&amp;lt;br&amp;gt;&lt;br /&gt;
It will then return 0 as long as the button is held down. A new button press will be required to get another -1. This is for single shot fire - the user needs to let go and press the button again in order to fire again.&lt;br /&gt;
* 0 - Left joystick button 1&lt;br /&gt;
* 2 - Left joystick button 2&lt;br /&gt;
* 4 - Right joystick button 1&lt;br /&gt;
* 6 - Right joystick button 2&lt;br /&gt;
&lt;br /&gt;
=== INPUT$(count, device) ===&lt;br /&gt;
Used to scan an input device and accumulate a string:&lt;br /&gt;
  10 A$=INPUT$(3,#0)&lt;br /&gt;
  20 ? A$&lt;br /&gt;
Will pause the program and wait for three key presses. They are put into A$. This will support cassette, serial and disk file I/O.&lt;br /&gt;
&lt;br /&gt;
=== ON ERROR GOTO &amp;lt;line number&amp;gt; ===&lt;br /&gt;
BASIC will jump to line number when an error is encountered. ERL and ERR will contain the line number with the error and the numeric error code, respectively.&lt;br /&gt;
&lt;br /&gt;
== Changed Commands: ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;EDIT&#039;&#039;&#039; command will now accept a single line number or a range. The command will clear the screen, list the program line/lines and put the cursor at the start of the screen. NOTE: While EDIT lets you select a line number range (and will display them) only the last line changed on screen will actually be committed to the BASIC program (if you edit line 10 and line 20, and hit ENTER to accept the changes after editing line 20, any changes to line 10 will be ignored).&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;CLS&#039;&#039;&#039; value of 9 to 255 will clear the screen and print the entire version/copyright banner (instead of only MICROSOFT). Any program and variables in memory are still intact.&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;CLS&#039;&#039;&#039; value greater than 255 will cause an ?FC error.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SCREEN&#039;&#039;&#039; has a new option for it&#039;s first parameter. -1 will change the 32x16 text display to true lowercase. So the acceptable values for the first parameter (the 2nd parameter is optional, for the colorset 0 or 1) are:&lt;br /&gt;
* SCREEN -1 (true lowercase)&lt;br /&gt;
* SCREEN 0 (inverse lowercase)&lt;br /&gt;
* SCREEN 1 (graphics mode)&lt;br /&gt;
&#039;&#039;PLEASE NOTE&#039;&#039;: The VDG in the Deluxe is not a full implementation of the T1 VDG that appeared in late model Coco 2&#039;s (and were duplicated in the Coco 3). It does not support border (green/black) control, and some of the characters are different from both a regular VDG and a T1 VDG (the pipe symbol is an example).&lt;br /&gt;
&lt;br /&gt;
== Advanced Color BASIC - added ROM vector calls ===&lt;br /&gt;
&lt;br /&gt;
Like Color BASIC and Disk BASIC, which used Extended indirect addresses to call functions within the ROM’s (like JOYIN, DSKCON, etc.), Advanced Color BASIC seems to reserve from $8000-$8015 for additional calls as well. This allows the routines themselves to move around as the ROM was updated, but calling programs would have a set point to enter them.&lt;br /&gt;
&lt;br /&gt;
[$8000] - Calls $FB00, which is a 3 entry table of LBRA instructions:&lt;br /&gt;
    LBRA  $FD32  (executes the TERM (terminal program) command, I believe)&lt;br /&gt;
    LBRA  $FB1A&lt;br /&gt;
    LBRA  $FD92&lt;br /&gt;
&lt;br /&gt;
[$8002] - Calls $FB09, which is a 1 entry table of LBRA instructions (I assume more would have&lt;br /&gt;
been added later)&lt;br /&gt;
LBRA	$FE16&lt;br /&gt;
&lt;br /&gt;
[$8004] - ??? (points to $09D4, which is in BASIC’s data area)&lt;br /&gt;
&lt;br /&gt;
[$8006] - ??? (points to $E968)&lt;br /&gt;
&lt;br /&gt;
[$8008] - ??? (points to $0ABE, which is in BASIC’s data area)&lt;br /&gt;
&lt;br /&gt;
[$800A] - ??? (points to $AD15)&lt;br /&gt;
&lt;br /&gt;
[$800C] - Call $9254, which checks the 6551 initialized flag (&amp;gt;$0A04). If it is 0 (not initialized), it will initialize the 6551 &amp;amp; it’s related variables including 128 byte receive buffer. If not, it just returns.&lt;br /&gt;
&lt;br /&gt;
[$800E] - ??? (points to $929D)&lt;br /&gt;
&lt;br /&gt;
[$8010] - ??? (points to $DE28)&lt;br /&gt;
&lt;br /&gt;
[$8012] - Calls $92E7, which will return a character from the 128 byte RS232 receive buffer, OR wait for an RS232 character to be received if the buffer is empty.&lt;br /&gt;
&lt;br /&gt;
[$8014] - Calls $92BD, which will transmit a character through the RS232.&lt;/div&gt;</description>
			<pubDate>Mon, 08 Sep 2025 03:39:19 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Advanced_Color_BASIC_Documentation</comments>
		</item>
		<item>
			<title>Advanced Color BASIC Documentation</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10950</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10950</guid>
			<description>&lt;p&gt;Tlindner: /* CONFIG */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Advanced Color BASIC - New and updated features explained ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
This document explains the version 0.0.7 of Advanced Color BASIC ROM found late in 2023.&amp;lt;br&amp;gt;&lt;br /&gt;
It is from Robert Killgus&#039; collection.&amp;lt;br&amp;gt;&lt;br /&gt;
This is a very early version of the software and eventually became Deluxe Color BASIC.&lt;br /&gt;
&lt;br /&gt;
=== Allows lowercase characters in keywords. ===&lt;br /&gt;
=== Key repeat is built in. ===&lt;br /&gt;
&lt;br /&gt;
=== Full screen editor is always available. ===&lt;br /&gt;
* Hold alternate and arrow keys to move the cursor around.&lt;br /&gt;
* Alternate and &#039;I&#039; will insert a space and move the characters after the cursor to the right one space.&lt;br /&gt;
* Alternate and &#039;D&#039; will delete the character under the cursor and shift the remaining characters to the left.&lt;br /&gt;
* Alternate and &#039;E&#039; will delete the characters after the cursor to the end of the line.&lt;br /&gt;
* Alternate and ‘H” will move the cursor to the top left corner of the screen.&lt;br /&gt;
* Right Arrow (without the alternate key, Control-I) will move the cursor right 8 spaces.&lt;br /&gt;
* Left Arrow (without the alternate key, Control-H) will move the cursor one space to the left, and clear the character.&lt;br /&gt;
* Control and &#039;U&#039;, Shift-Left Arrow will clear the line and move the cursor to the left.&lt;br /&gt;
* The break key will abort editing and put the cursor at the bottom left of the screen.&lt;br /&gt;
* CLEAR (Control-L) will abort editing and clear the screen.&lt;br /&gt;
Press the enter key to commit an edited line. You do not have to be at the end of a line.&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-3. ===&lt;br /&gt;
Sends and receives data to/from the new serial port.&lt;br /&gt;
Uses:&lt;br /&gt;
PRINT #-3, &amp;quot;HELLO WORLD&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== RESTORE enhancement ===&lt;br /&gt;
The RESTORE command by itself (as before) will reset the READ/DATA ptr to the first DATA line in the current BASIC program. A new option of specifying the line number of the DATA statement that the next READ should come from has been added.&lt;br /&gt;
  RESTORE 1000:&#039;This sets the next READ to get data from line 1000.&lt;br /&gt;
&lt;br /&gt;
=== RAM Disk ===&lt;br /&gt;
Drive 4 is a RAM Disk. It has 12 granules available. It is available even if there is no disk cartridge inserted.&lt;br /&gt;
&lt;br /&gt;
If a disk cartridge is inserted on cold boot, you are presented with a menu option to go to BASIC or &amp;quot;Disk&amp;quot;. If you choose &amp;quot;Disk&amp;quot; the equivalent of a DOS command is executed.&lt;br /&gt;
&lt;br /&gt;
== New commands ==&lt;br /&gt;
&lt;br /&gt;
=== ERROR &amp;lt;value&amp;gt; ===&lt;br /&gt;
Will cause the computer to stop the program and issue the respective error.&lt;br /&gt;
&lt;br /&gt;
=== RESUME &amp;lt;line number&amp;gt; ===&lt;br /&gt;
Resumes a program at line number from the error handler.&lt;br /&gt;
&lt;br /&gt;
=== WHILE &amp;lt;boolean expression&amp;gt; / WEND ===&lt;br /&gt;
This is a loop construct that will execute the statements between WHILE and WEND repeatedly until the boolean expression is false.&lt;br /&gt;
&lt;br /&gt;
=== TONE channel, toneperiod, amplitude ===&lt;br /&gt;
* channel: 1-3&lt;br /&gt;
* toneperiod: 0-4095&lt;br /&gt;
* amplitude: 0-15&lt;br /&gt;
&lt;br /&gt;
=== NOISE channel,noiseperiod,amplitude ===&lt;br /&gt;
* channel: 1-3&lt;br /&gt;
* noiseperiod: 0-31&lt;br /&gt;
* amplitude 0-15&lt;br /&gt;
&lt;br /&gt;
=== ENV param1,param2,param3,param4,param5 ===&lt;br /&gt;
* 5 numeric parameters 0-65535 allowed (TBD)&lt;br /&gt;
&lt;br /&gt;
  TONE 1,2048,15 &#039; start tone 2048 on channel 1 at max volume&lt;br /&gt;
  NOISE 2,31,15 &#039; start noise 31 on channel 2 at max volume&lt;br /&gt;
  NOISE 2,0 &#039; stop noise on channel 2&lt;br /&gt;
  TONE 1,0,0 &#039; stop tone on channel 1&lt;br /&gt;
  SOUND command unaltered&lt;br /&gt;
&lt;br /&gt;
TBD determine if PLAY command supports 3-voice like N60 BASIC (also by Microsoft) does&lt;br /&gt;
&lt;br /&gt;
=== CHAIN ===&lt;br /&gt;
&lt;br /&gt;
Chains to another BASIC program. Optional line number to start 2nd program running from.&lt;br /&gt;
&lt;br /&gt;
 CHAIN &amp;quot;PROGRAM[.BAS][,&amp;lt;line number&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
Line number can be a variable.&lt;br /&gt;
&lt;br /&gt;
If no COMMON command has been issued before CHAIN, then all variables are initialized in the called program (same as RUN). However, any numeric variables or arrays defined in a COMMON command will be passed intact to the called program.&lt;br /&gt;
&lt;br /&gt;
=== COMMON ===&lt;br /&gt;
This defines variables to pass along to a CHAIN&#039;ed program. From what I can tell, these can only be be numeric (either straight variables or arrays), but not strings. For regular variables, specify the 1 or 2 character variable name. For arrays, specify the array name with open and closes parenthesis, but with no number to designate how many elements (the chained program will inherit the size used by the calling program).&lt;br /&gt;
 COMMON A,B,C,SC()&lt;br /&gt;
&lt;br /&gt;
=== TERM ===&lt;br /&gt;
Executes the ROM based terminal program (the cursor changes from a blinking black one to a blinking blue one to let the user know that they are in terminal mode). Further details on commands and Escape sequences within the terminal programming coming soon.&lt;br /&gt;
 ALT-BREAK = Exit terminal&lt;br /&gt;
 F1 = toggle CR / CR LF&lt;br /&gt;
 F2 = toggle Local Echo on/off&lt;br /&gt;
&lt;br /&gt;
=== CONFIG ===&lt;br /&gt;
Configures the UART Serial port:&amp;lt;br&amp;gt;&lt;br /&gt;
 CONFIG #-3,[1-15],[1-5],[5-8],[1-2]&amp;lt;br&amp;gt;&lt;br /&gt;
==== First parameter: ====&lt;br /&gt;
BAUD&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 = 50&lt;br /&gt;
* 2 = 75&lt;br /&gt;
* 3 = 109.92&lt;br /&gt;
* 4 = 135.56&lt;br /&gt;
* 5 = 150&lt;br /&gt;
* 6 = 300&lt;br /&gt;
* 7 = 600&lt;br /&gt;
* 8 = 1,200&lt;br /&gt;
* 9 = 1,800&lt;br /&gt;
* 10 = 2,400&lt;br /&gt;
* 11 = 3,600&lt;br /&gt;
* 12 = 4,800&lt;br /&gt;
* 13 = 7,200&lt;br /&gt;
* 14 = 9,600&lt;br /&gt;
* 15 = 19,200&lt;br /&gt;
Default: 6&lt;br /&gt;
&lt;br /&gt;
==== Second Parameter: ====&lt;br /&gt;
Sent to 6551 command register&amp;lt;br&amp;gt;&lt;br /&gt;
* 1: $09 00001001 - No Parity&lt;br /&gt;
* 2: $29 00101001 - Odd Parity&lt;br /&gt;
* 3: $69 01101001 - Even Parity&lt;br /&gt;
* 4: $A9 10101001 - Mark Parity&lt;br /&gt;
* 5: $E9 11101001 - Space Parity&lt;br /&gt;
* Transmit interrupt disabled&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
==== Third parameter: ====&lt;br /&gt;
Data word length, 5 to 8.&lt;br /&gt;
* Default: 8&lt;br /&gt;
&lt;br /&gt;
==== Fourth parameter: ====&lt;br /&gt;
Stop Bits&lt;br /&gt;
* 1 = 1 stop bit&lt;br /&gt;
* 2 = 2 stop bits&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
=== MAPMODE &amp;lt;value&amp;gt; ===&lt;br /&gt;
If the value is 0, the Color Computer is set to 0.89 MHz for the entire address space.&lt;br /&gt;
If the value is 1, the Color Computer is set to 1.78 MHz speed when reading from ROM, and 0.89 MHz when reading or writing to RAM.&lt;br /&gt;
&lt;br /&gt;
=== XOR ===&lt;br /&gt;
The exclusive or operator is true if 1 (and only 1) input is true, otherwise it is false.&amp;lt;br&amp;gt;&lt;br /&gt;
This is used in the same sense as AND and OR in if/then statements:&lt;br /&gt;
  IF A XOR B THEN 40&lt;br /&gt;
It is also use like AND and OR in bit wise expressions:&lt;br /&gt;
  C = A XOR B&lt;br /&gt;
&lt;br /&gt;
=== ERR ===&lt;br /&gt;
Variable that contains the last error number.&lt;br /&gt;
&lt;br /&gt;
=== ERL ===&lt;br /&gt;
Variable that contains the line number where the last error occurred.&lt;br /&gt;
&lt;br /&gt;
=== TIME ===&lt;br /&gt;
Returns the current number of 1/60th clock ticks that the current TIME$ value represents (including hours, minutes and seconds).&lt;br /&gt;
&amp;lt;br&amp;gt;Please note that it rolls over at 24 hours.&lt;br /&gt;
&lt;br /&gt;
=== TIME$ ===&lt;br /&gt;
Will either return the current 24 hour clock value, or set the 24 hour clock value, using a string format. The string format is &amp;quot;HH:MM:SS&amp;quot;, in 24 hour time format, so HH can be 0 to 23, MM can be 0 to 59, and SS can be 0 to 59.&lt;br /&gt;
Examples:&lt;br /&gt;
  A$=TIME$&lt;br /&gt;
  TIME$=&amp;quot;13:25:00&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== STRIG(button) ===&lt;br /&gt;
This function returns the state of one of the four joystick buttons. Negative 1 if pressed, zero if not pressed.&amp;lt;br&amp;gt;&lt;br /&gt;
Button numbers 1, 3, 5, 7 return the real time value of the button state. This allows rapid fire with the button held down.&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 - Left joystick button 1&lt;br /&gt;
* 3 - Left joystick button 2&lt;br /&gt;
* 5 - Right joystick button 1&lt;br /&gt;
* 7 - Right joystick button 2&lt;br /&gt;
Button numbers 0, 2, 4, 6 return -1 if the button was pressed since the last time this function was called.&amp;lt;br&amp;gt;&lt;br /&gt;
It will then return 0 as long as the button is held down. A new button press will be required to get another -1. This is for single shot fire - the user needs to let go and press the button again in order to fire again.&lt;br /&gt;
* 0 - Left joystick button 1&lt;br /&gt;
* 2 - Left joystick button 2&lt;br /&gt;
* 4 - Right joystick button 1&lt;br /&gt;
* 6 - Right joystick button 2&lt;br /&gt;
&lt;br /&gt;
=== INPUT$(count, device) ===&lt;br /&gt;
Used to scan an input device and accumulate a string:&lt;br /&gt;
  10 A$=INPUT$(3,#0)&lt;br /&gt;
  20 ? A$&lt;br /&gt;
Will pause the program and wait for three key presses. They are put into A$. This will support cassette, serial and disk file I/O.&lt;br /&gt;
&lt;br /&gt;
=== ON ERROR GOTO &amp;lt;line number&amp;gt; ===&lt;br /&gt;
BASIC will jump to line number when an error is encountered. ERL and ERR will contain the line number with the error and the numeric error code, respectively.&lt;br /&gt;
&lt;br /&gt;
== Changed Commands: ==&lt;br /&gt;
&lt;br /&gt;
The EDIT will now accept a single line number or a range. The command will clear the screen, list the program line/lines and put the cursor at the start of the screen.&lt;br /&gt;
&lt;br /&gt;
A CLS value of 9 to 255 will cold start the computer. We suspect that this is a bug that should eventually be fixed.&lt;br /&gt;
&lt;br /&gt;
A CLS value greater than 255 will cause an ?FC error.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Advanced Color BASIC - added ROM vector calls ===&lt;br /&gt;
&lt;br /&gt;
Like Color BASIC and Disk BASIC, which used Extended indirect addresses to call functions within the ROM’s (like JOYIN, DSKCON, etc.), Advanced Color BASIC seems to reserve from $8000-$8015 for additional calls as well. This allows the routines themselves to move around as the ROM was updated, but calling programs would have a set point to enter them.&lt;br /&gt;
&lt;br /&gt;
[$8000] - Calls $FB00, which is a 3 entry table of LBRA instructions:&lt;br /&gt;
    LBRA  $FD32  (executes the TERM (terminal program) command, I believe)&lt;br /&gt;
    LBRA  $FB1A&lt;br /&gt;
    LBRA  $FD92&lt;br /&gt;
&lt;br /&gt;
[$8002] - Calls $FB09, which is a 1 entry table of LBRA instructions (I assume more would have&lt;br /&gt;
been added later)&lt;br /&gt;
LBRA	$FE16&lt;br /&gt;
&lt;br /&gt;
[$8004] - ??? (points to $09D4, which is in BASIC’s data area)&lt;br /&gt;
&lt;br /&gt;
[$8006] - ??? (points to $E968)&lt;br /&gt;
&lt;br /&gt;
[$8008] - ??? (points to $0ABE, which is in BASIC’s data area)&lt;br /&gt;
&lt;br /&gt;
[$800A] - ??? (points to $AD15)&lt;br /&gt;
&lt;br /&gt;
[$800C] - Call $9254, which checks the 6551 initialized flag (&amp;gt;$0A04). If it is 0 (not initialized), it will initialize the 6551 &amp;amp; it’s related variables including 128 byte receive buffer. If not, it just returns.&lt;br /&gt;
&lt;br /&gt;
[$800E] - ??? (points to $929D)&lt;br /&gt;
&lt;br /&gt;
[$8010] - ??? (points to $DE28)&lt;br /&gt;
&lt;br /&gt;
[$8012] - Calls $92E7, which will return a character from the 128 byte RS232 receive buffer, OR wait for an RS232 character to be received if the buffer is empty.&lt;br /&gt;
&lt;br /&gt;
[$8014] - Calls $92BD, which will transmit a character through the RS232.&lt;/div&gt;</description>
			<pubDate>Sat, 23 Mar 2024 17:49:36 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Advanced_Color_BASIC_Documentation</comments>
		</item>
		<item>
			<title>Advanced Color BASIC Documentation</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10949</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10949</guid>
			<description>&lt;p&gt;Tlindner: Properly title chain command.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Advanced Color BASIC - New and updated features explained ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
This document explains the version 0.0.7 of Advanced Color BASIC ROM found late in 2023.&amp;lt;br&amp;gt;&lt;br /&gt;
It is from Robert Killgus&#039; collection.&amp;lt;br&amp;gt;&lt;br /&gt;
This is a very early version of the software and eventually became Deluxe Color BASIC.&lt;br /&gt;
&lt;br /&gt;
=== Allows lowercase characters in keywords. ===&lt;br /&gt;
=== Key repeat is built in. ===&lt;br /&gt;
&lt;br /&gt;
=== Full screen editor is always available. ===&lt;br /&gt;
* Hold alternate and arrow keys to move the cursor around.&lt;br /&gt;
* Alternate and &#039;I&#039; will insert a space and move the characters after the cursor to the right one space.&lt;br /&gt;
* Alternate and &#039;D&#039; will delete the character under the cursor and shift the remaining characters to the left.&lt;br /&gt;
* Alternate and &#039;E&#039; will delete the characters after the cursor to the end of the line.&lt;br /&gt;
* Alternate and ‘H” will move the cursor to the top left corner of the screen.&lt;br /&gt;
* Right Arrow (without the alternate key, Control-I) will move the cursor right 8 spaces.&lt;br /&gt;
* Left Arrow (without the alternate key, Control-H) will move the cursor one space to the left, and clear the character.&lt;br /&gt;
* Control and &#039;U&#039;, Shift-Left Arrow will clear the line and move the cursor to the left.&lt;br /&gt;
* The break key will abort editing and put the cursor at the bottom left of the screen.&lt;br /&gt;
* CLEAR (Control-L) will abort editing and clear the screen.&lt;br /&gt;
Press the enter key to commit an edited line. You do not have to be at the end of a line.&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-3. ===&lt;br /&gt;
Sends and receives data to/from the new serial port.&lt;br /&gt;
Uses:&lt;br /&gt;
PRINT #-3, &amp;quot;HELLO WORLD&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== RESTORE enhancement ===&lt;br /&gt;
The RESTORE command by itself (as before) will reset the READ/DATA ptr to the first DATA line in the current BASIC program. A new option of specifying the line number of the DATA statement that the next READ should come from has been added.&lt;br /&gt;
  RESTORE 1000:&#039;This sets the next READ to get data from line 1000.&lt;br /&gt;
&lt;br /&gt;
=== RAM Disk ===&lt;br /&gt;
Drive 4 is a RAM Disk. It has 12 granules available. It is available even if there is no disk cartridge inserted.&lt;br /&gt;
&lt;br /&gt;
If a disk cartridge is inserted on cold boot, you are presented with a menu option to go to BASIC or &amp;quot;Disk&amp;quot;. If you choose &amp;quot;Disk&amp;quot; the equivalent of a DOS command is executed.&lt;br /&gt;
&lt;br /&gt;
== New commands ==&lt;br /&gt;
&lt;br /&gt;
=== ERROR &amp;lt;value&amp;gt; ===&lt;br /&gt;
Will cause the computer to stop the program and issue the respective error.&lt;br /&gt;
&lt;br /&gt;
=== RESUME &amp;lt;line number&amp;gt; ===&lt;br /&gt;
Resumes a program at line number from the error handler.&lt;br /&gt;
&lt;br /&gt;
=== WHILE &amp;lt;boolean expression&amp;gt; / WEND ===&lt;br /&gt;
This is a loop construct that will execute the statements between WHILE and WEND repeatedly until the boolean expression is false.&lt;br /&gt;
&lt;br /&gt;
=== TONE channel, toneperiod, amplitude ===&lt;br /&gt;
* channel: 1-3&lt;br /&gt;
* toneperiod: 0-4095&lt;br /&gt;
* amplitude: 0-15&lt;br /&gt;
&lt;br /&gt;
=== NOISE channel,noiseperiod,amplitude ===&lt;br /&gt;
* channel: 1-3&lt;br /&gt;
* noiseperiod: 0-31&lt;br /&gt;
* amplitude 0-15&lt;br /&gt;
&lt;br /&gt;
=== ENV param1,param2,param3,param4,param5 ===&lt;br /&gt;
* 5 numeric parameters 0-65535 allowed (TBD)&lt;br /&gt;
&lt;br /&gt;
  TONE 1,2048,15 &#039; start tone 2048 on channel 1 at max volume&lt;br /&gt;
  NOISE 2,31,15 &#039; start noise 31 on channel 2 at max volume&lt;br /&gt;
  NOISE 2,0 &#039; stop noise on channel 2&lt;br /&gt;
  TONE 1,0,0 &#039; stop tone on channel 1&lt;br /&gt;
  SOUND command unaltered&lt;br /&gt;
&lt;br /&gt;
TBD determine if PLAY command supports 3-voice like N60 BASIC (also by Microsoft) does&lt;br /&gt;
&lt;br /&gt;
=== CHAIN ===&lt;br /&gt;
&lt;br /&gt;
Chains to another BASIC program. Optional line number to start 2nd program running from.&lt;br /&gt;
&lt;br /&gt;
 CHAIN &amp;quot;PROGRAM[.BAS][,&amp;lt;line number&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
Line number can be a variable.&lt;br /&gt;
&lt;br /&gt;
If no COMMON command has been issued before CHAIN, then all variables are initialized in the called program (same as RUN). However, any numeric variables or arrays defined in a COMMON command will be passed intact to the called program.&lt;br /&gt;
&lt;br /&gt;
=== COMMON ===&lt;br /&gt;
This defines variables to pass along to a CHAIN&#039;ed program. From what I can tell, these can only be be numeric (either straight variables or arrays), but not strings. For regular variables, specify the 1 or 2 character variable name. For arrays, specify the array name with open and closes parenthesis, but with no number to designate how many elements (the chained program will inherit the size used by the calling program).&lt;br /&gt;
 COMMON A,B,C,SC()&lt;br /&gt;
&lt;br /&gt;
=== TERM ===&lt;br /&gt;
Executes the ROM based terminal program (the cursor changes from a blinking black one to a blinking blue one to let the user know that they are in terminal mode). Further details on commands and Escape sequences within the terminal programming coming soon.&lt;br /&gt;
 ALT-BREAK = Exit terminal&lt;br /&gt;
 F1 = toggle CR / CR LF&lt;br /&gt;
 F2 = toggle Local Echo on/off&lt;br /&gt;
&lt;br /&gt;
=== CONFIG ===&lt;br /&gt;
Configures the UART Serial port:&amp;lt;br&amp;gt;&lt;br /&gt;
CONFIG #-3,[1-15],[1-5],[5-8],[1-2]&amp;lt;br&amp;gt;&lt;br /&gt;
==== First parameter: ====&lt;br /&gt;
BAUD&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 = 50&lt;br /&gt;
* 2 = 75&lt;br /&gt;
* 3 = 109.92&lt;br /&gt;
* 4 = 135.56&lt;br /&gt;
* 5 = 150&lt;br /&gt;
* 6 = 300&lt;br /&gt;
* 7 = 600&lt;br /&gt;
* 8 = 1,200&lt;br /&gt;
* 9 = 1,800&lt;br /&gt;
* 10 = 2,400&lt;br /&gt;
* 11 = 3,600&lt;br /&gt;
* 12 = 4,800&lt;br /&gt;
* 13 = 7,200&lt;br /&gt;
* 14 = 9,600&lt;br /&gt;
* 15 = 19,200&lt;br /&gt;
Default: 6&lt;br /&gt;
&lt;br /&gt;
==== Second Parameter: ====&lt;br /&gt;
Sent to 6551 command register&amp;lt;br&amp;gt;&lt;br /&gt;
* 1: $09 00001001 - No Parity&lt;br /&gt;
* 2: $29 00101001 - Odd Parity&lt;br /&gt;
* 3: $69 01101001 - Even Parity&lt;br /&gt;
* 4: $A9 10101001 - Mark Parity&lt;br /&gt;
* 5: $E9 11101001 - Space Parity&lt;br /&gt;
* Transmit interrupt disabled&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
==== Third parameter: ====&lt;br /&gt;
Data word length, 5 to 8.&lt;br /&gt;
* Default: 8&lt;br /&gt;
&lt;br /&gt;
==== Fourth parameter: ====&lt;br /&gt;
Stop Bits&lt;br /&gt;
* 1 = 1 stop bit&lt;br /&gt;
* 2 = 2 stop bits&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
=== MAPMODE &amp;lt;value&amp;gt; ===&lt;br /&gt;
If the value is 0, the Color Computer is set to 0.89 MHz for the entire address space.&lt;br /&gt;
If the value is 1, the Color Computer is set to 1.78 MHz speed when reading from ROM, and 0.89 MHz when reading or writing to RAM.&lt;br /&gt;
&lt;br /&gt;
=== XOR ===&lt;br /&gt;
The exclusive or operator is true if 1 (and only 1) input is true, otherwise it is false.&amp;lt;br&amp;gt;&lt;br /&gt;
This is used in the same sense as AND and OR in if/then statements:&lt;br /&gt;
  IF A XOR B THEN 40&lt;br /&gt;
It is also use like AND and OR in bit wise expressions:&lt;br /&gt;
  C = A XOR B&lt;br /&gt;
&lt;br /&gt;
=== ERR ===&lt;br /&gt;
Variable that contains the last error number.&lt;br /&gt;
&lt;br /&gt;
=== ERL ===&lt;br /&gt;
Variable that contains the line number where the last error occurred.&lt;br /&gt;
&lt;br /&gt;
=== TIME ===&lt;br /&gt;
Returns the current number of 1/60th clock ticks that the current TIME$ value represents (including hours, minutes and seconds).&lt;br /&gt;
&amp;lt;br&amp;gt;Please note that it rolls over at 24 hours.&lt;br /&gt;
&lt;br /&gt;
=== TIME$ ===&lt;br /&gt;
Will either return the current 24 hour clock value, or set the 24 hour clock value, using a string format. The string format is &amp;quot;HH:MM:SS&amp;quot;, in 24 hour time format, so HH can be 0 to 23, MM can be 0 to 59, and SS can be 0 to 59.&lt;br /&gt;
Examples:&lt;br /&gt;
  A$=TIME$&lt;br /&gt;
  TIME$=&amp;quot;13:25:00&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== STRIG(button) ===&lt;br /&gt;
This function returns the state of one of the four joystick buttons. Negative 1 if pressed, zero if not pressed.&amp;lt;br&amp;gt;&lt;br /&gt;
Button numbers 1, 3, 5, 7 return the real time value of the button state. This allows rapid fire with the button held down.&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 - Left joystick button 1&lt;br /&gt;
* 3 - Left joystick button 2&lt;br /&gt;
* 5 - Right joystick button 1&lt;br /&gt;
* 7 - Right joystick button 2&lt;br /&gt;
Button numbers 0, 2, 4, 6 return -1 if the button was pressed since the last time this function was called.&amp;lt;br&amp;gt;&lt;br /&gt;
It will then return 0 as long as the button is held down. A new button press will be required to get another -1. This is for single shot fire - the user needs to let go and press the button again in order to fire again.&lt;br /&gt;
* 0 - Left joystick button 1&lt;br /&gt;
* 2 - Left joystick button 2&lt;br /&gt;
* 4 - Right joystick button 1&lt;br /&gt;
* 6 - Right joystick button 2&lt;br /&gt;
&lt;br /&gt;
=== INPUT$(count, device) ===&lt;br /&gt;
Used to scan an input device and accumulate a string:&lt;br /&gt;
  10 A$=INPUT$(3,#0)&lt;br /&gt;
  20 ? A$&lt;br /&gt;
Will pause the program and wait for three key presses. They are put into A$. This will support cassette, serial and disk file I/O.&lt;br /&gt;
&lt;br /&gt;
=== ON ERROR GOTO &amp;lt;line number&amp;gt; ===&lt;br /&gt;
BASIC will jump to line number when an error is encountered. ERL and ERR will contain the line number with the error and the numeric error code, respectively.&lt;br /&gt;
&lt;br /&gt;
== Changed Commands: ==&lt;br /&gt;
&lt;br /&gt;
The EDIT will now accept a single line number or a range. The command will clear the screen, list the program line/lines and put the cursor at the start of the screen.&lt;br /&gt;
&lt;br /&gt;
A CLS value of 9 to 255 will cold start the computer. We suspect that this is a bug that should eventually be fixed.&lt;br /&gt;
&lt;br /&gt;
A CLS value greater than 255 will cause an ?FC error.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Advanced Color BASIC - added ROM vector calls ===&lt;br /&gt;
&lt;br /&gt;
Like Color BASIC and Disk BASIC, which used Extended indirect addresses to call functions within the ROM’s (like JOYIN, DSKCON, etc.), Advanced Color BASIC seems to reserve from $8000-$8015 for additional calls as well. This allows the routines themselves to move around as the ROM was updated, but calling programs would have a set point to enter them.&lt;br /&gt;
&lt;br /&gt;
[$8000] - Calls $FB00, which is a 3 entry table of LBRA instructions:&lt;br /&gt;
    LBRA  $FD32  (executes the TERM (terminal program) command, I believe)&lt;br /&gt;
    LBRA  $FB1A&lt;br /&gt;
    LBRA  $FD92&lt;br /&gt;
&lt;br /&gt;
[$8002] - Calls $FB09, which is a 1 entry table of LBRA instructions (I assume more would have&lt;br /&gt;
been added later)&lt;br /&gt;
LBRA	$FE16&lt;br /&gt;
&lt;br /&gt;
[$8004] - ??? (points to $09D4, which is in BASIC’s data area)&lt;br /&gt;
&lt;br /&gt;
[$8006] - ??? (points to $E968)&lt;br /&gt;
&lt;br /&gt;
[$8008] - ??? (points to $0ABE, which is in BASIC’s data area)&lt;br /&gt;
&lt;br /&gt;
[$800A] - ??? (points to $AD15)&lt;br /&gt;
&lt;br /&gt;
[$800C] - Call $9254, which checks the 6551 initialized flag (&amp;gt;$0A04). If it is 0 (not initialized), it will initialize the 6551 &amp;amp; it’s related variables including 128 byte receive buffer. If not, it just returns.&lt;br /&gt;
&lt;br /&gt;
[$800E] - ??? (points to $929D)&lt;br /&gt;
&lt;br /&gt;
[$8010] - ??? (points to $DE28)&lt;br /&gt;
&lt;br /&gt;
[$8012] - Calls $92E7, which will return a character from the 128 byte RS232 receive buffer, OR wait for an RS232 character to be received if the buffer is empty.&lt;br /&gt;
&lt;br /&gt;
[$8014] - Calls $92BD, which will transmit a character through the RS232.&lt;/div&gt;</description>
			<pubDate>Sat, 23 Mar 2024 17:12:39 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Advanced_Color_BASIC_Documentation</comments>
		</item>
		<item>
			<title>Deluxe Color Computer</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Deluxe_Color_Computer&amp;diff=10913</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Deluxe_Color_Computer&amp;diff=10913</guid>
			<description>&lt;p&gt;Tlindner: /* Pictures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Deluxe Color Computer =&lt;br /&gt;
&lt;br /&gt;
== Pre-Production Boards ==&lt;br /&gt;
&lt;br /&gt;
Three pre-production (PP) boards for the canceled Deluxe Color Computer exist:&lt;br /&gt;
* Boisy Pitre has gathered two of the Deluxe pre-production boards, one from John Prickett and one from Greg Zumwalt which did not have Advanced or Deluxe ROMs.&lt;br /&gt;
* Brian Weiseler has Robert Kilgus&#039; Deluxe with Advanced Color BASIC 00.00.07 ROMs intact&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The Deluxe Color Computer upgrades the [[Color Computer 2]] to include new hardware and software features&lt;br /&gt;
* Motorola 6847 T1 Video Display Generator (VDG) with true lowercase and lowercase descender characters&lt;br /&gt;
* General Instruments AY-3-8913 Programmable Sound Generator the same as [[Speech/Sound Cartridge (26-3144A)]], [[Symphony-12]], [[Philharmonic-12]], or [[CoCo PSG]]&lt;br /&gt;
* American Megatrends (AMI) S6551P Asynchronous Communication Interface Adapter (ACIA) the same as used in the [[Deluxe RS232 Pak]]&lt;br /&gt;
* Additional circuitry for 60Hz timer interrupts&lt;br /&gt;
* Additional color burst control&lt;br /&gt;
* Additional address decoding to make the PSG and S6551 into the CoCo memory map&lt;br /&gt;
==== Memory Map ====&lt;br /&gt;
* $FF00 - $FF1F - PIA 0&lt;br /&gt;
* $FF20 - $FF2F - PIA 1&lt;br /&gt;
* $FF30 - Option Control Register&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Option Control Register Description&lt;br /&gt;
|-&lt;br /&gt;
! Bit Position!! Function &lt;br /&gt;
|-&lt;br /&gt;
| 0|| A14&lt;br /&gt;
|-&lt;br /&gt;
| 1|| A15&lt;br /&gt;
|-&lt;br /&gt;
| 2|| Enable above for RAM range: $4000-$7FFF&lt;br /&gt;
|-&lt;br /&gt;
| 3|| Alternate color set (blue / green alpha display)&lt;br /&gt;
|-&lt;br /&gt;
| 4|| N/A&lt;br /&gt;
|-&lt;br /&gt;
| 5|| N/A&lt;br /&gt;
|-&lt;br /&gt;
| 6|| Enable 60Hz interrupt&lt;br /&gt;
|-&lt;br /&gt;
| 7|| Enable cartridge select: 1 internal / 0 external&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Deluxe_Option_Register_Description.jpg|Option Register&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
* $FF38 AY-3-8910 Data register&lt;br /&gt;
* $FF39 AY-3-8910 Control Register Latch&lt;br /&gt;
* $FF3C SY6551 Transmit / Receive Register&lt;br /&gt;
* $FF3D SY6551 Read status registers&lt;br /&gt;
* $FF3E SY6551 Command register&lt;br /&gt;
* $FF3F SY6551 Control Register&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
The Deluxe Color Computer contains an upgraded Color BASIC which merges Color BASIC, Extended Color BASIC, and Disk Extended Color BASIC into a single 32K Advanced Color BASIC ROM image.&lt;br /&gt;
&lt;br /&gt;
Advanced Color BASIC includes a number of new features as well:&lt;br /&gt;
* [[Advanced Color BASIC Documentation]]&lt;br /&gt;
&lt;br /&gt;
[https://www.pagetable.com/?p=43 Bill Gates&#039; Easter Egg] exists in the Advanced Color BASIC as well from BF67 to BF70&lt;br /&gt;
&lt;br /&gt;
== Pictures ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
DeluxeCoCoMotherboard.jpg|Main board&lt;br /&gt;
Deluxe_coco_daughter_card_front.jpg|Front of daughter card&lt;br /&gt;
deluxe_coco_daughter_card_back.jpg|Back of daughter card&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</description>
			<pubDate>Sat, 02 Mar 2024 20:39:26 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Deluxe_Color_Computer</comments>
		</item>
		<item>
			<title>File:DeluxeCoCoMotherboard.jpg</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=File:DeluxeCoCoMotherboard.jpg&amp;diff=10912</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=File:DeluxeCoCoMotherboard.jpg&amp;diff=10912</guid>
			<description>&lt;p&gt;Tlindner: Picture of Deluxe Color Computer Motherboard taken by Brian Wiesler.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Picture of Deluxe Color Computer Motherboard taken by Brian Wiesler.&lt;/div&gt;</description>
			<pubDate>Sat, 02 Mar 2024 20:37:36 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/File_talk:DeluxeCoCoMotherboard.jpg</comments>
		</item>
		<item>
			<title>Advanced Color BASIC Documentation</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10910</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10910</guid>
			<description>&lt;p&gt;Tlindner: /* ENV param1,param2,param3,param4,param5 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Advanced Color BASIC - New and updated features explained ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
This document explains the version 0.0.7 of Advanced Color BASIC ROM found late in 2023.&amp;lt;br&amp;gt;&lt;br /&gt;
It is from Robert Killgus&#039; collection.&amp;lt;br&amp;gt;&lt;br /&gt;
This is a very early version of the software and eventually became Deluxe Color BASIC.&lt;br /&gt;
&lt;br /&gt;
=== Allows lowercase characters in keywords. ===&lt;br /&gt;
&lt;br /&gt;
=== Full screen editor is always available. ===&lt;br /&gt;
* Hold alternate and arrow keys to move the cursor around.&lt;br /&gt;
* Alternate and &#039;I&#039; will insert a space and move the characters after the cursor to the right one space.&lt;br /&gt;
* Alternate and &#039;D&#039; will delete the character under the cursor and shift the remaining characters to the left.&lt;br /&gt;
* Alternate and &#039;E&#039; will delete the characters after the cursor to the end of the line.&lt;br /&gt;
* Alternate and ‘H” will move the cursor to the top left corner of the screen.&lt;br /&gt;
* Right Arrow (without the alternate key, Control-I) will move the cursor right 8 spaces.&lt;br /&gt;
* Left Arrow (without the alternate key, Control-H) will move the cursor one space to the left, and clear the character.&lt;br /&gt;
* Control and &#039;U&#039;, Shift-Left Arrow will clear the line and move the cursor to the left.&lt;br /&gt;
* The break key will abort editing and put the cursor at the bottom left of the screen.&lt;br /&gt;
* CLEAR (Control-L) will abort editing and clear the screen.&lt;br /&gt;
Press the enter key to commit an edited line. You do not have to be at the end of a line.&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-3. ===&lt;br /&gt;
Sends and receives data to/from the new serial port.&lt;br /&gt;
Uses:&lt;br /&gt;
PRINT #-3, &amp;quot;HELLO WORLD&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-4 - tbd ===&lt;br /&gt;
&lt;br /&gt;
=== RAM Disk ===&lt;br /&gt;
Drive 4 is a RAM Disk. It has 12 granules available. It is available even if there is no disk cartridge inserted.&lt;br /&gt;
&lt;br /&gt;
If a disk cartridge is inserted on cold boot, you are presented with a menu option to go to BASIC or &amp;quot;Disk&amp;quot;. If you choose &amp;quot;Disk&amp;quot; the equivalent of a DOS command is executed.&lt;br /&gt;
&lt;br /&gt;
== New commands ==&lt;br /&gt;
&lt;br /&gt;
=== ERROR &amp;lt;value&amp;gt; ===&lt;br /&gt;
Will cause the computer to stop the program and issue the respective error.&lt;br /&gt;
&lt;br /&gt;
=== RESUME &amp;lt;line number&amp;gt; ===&lt;br /&gt;
Resumes a program at line number from the error handler.&lt;br /&gt;
&lt;br /&gt;
=== WHILE &amp;lt;boolean expression&amp;gt; / WEND ===&lt;br /&gt;
This is a loop construct that will execute the statements between WHILE and WEND repeatedly until the boolean expression is false.&lt;br /&gt;
&lt;br /&gt;
=== TONE channel, toneperiod, amplitude ===&lt;br /&gt;
* channel: 1-3&lt;br /&gt;
* toneperiod: 0-4095&lt;br /&gt;
* amplitude: 0-15&lt;br /&gt;
&lt;br /&gt;
=== NOISE channel,noiseperiod,amplitude ===&lt;br /&gt;
* channel: 1-3&lt;br /&gt;
* noiseperiod: 0-31&lt;br /&gt;
* amplitude 0-15&lt;br /&gt;
&lt;br /&gt;
=== ENV param1,param2,param3,param4,param5 ===&lt;br /&gt;
* 5 numeric parameters 0-65535 allowed (TBD)&lt;br /&gt;
&lt;br /&gt;
  TONE 1,2048,15 &#039; start tone 2048 on channel 1 at max volume&lt;br /&gt;
  NOISE 2,31,15 &#039; start noise 31 on channel 2 at max volume&lt;br /&gt;
  NOISE 2,0 &#039; stop noise on channel 2&lt;br /&gt;
  TONE 1,0,0 &#039; stop tone on channel 1&lt;br /&gt;
  SOUND command unaltered&lt;br /&gt;
&lt;br /&gt;
TBD determine if PLAY command supports 3-voice like N60 BASIC (also by Microsoft) does&lt;br /&gt;
&lt;br /&gt;
=== CHAIN - tbd. ===&lt;br /&gt;
&lt;br /&gt;
=== COMMON ===&lt;br /&gt;
Restrictive comment. For Example:&lt;br /&gt;
10 COMMON This is a comment : PRINT “HELLO WORLD”&lt;br /&gt;
The text after the COMMON command will not be executed, but the command after the colon will. This is different from REM&lt;br /&gt;
10 REM This is a comment : PRINT “HELLO WORLD”&lt;br /&gt;
The REM command will cause everything to be ignored on the whole line.&lt;br /&gt;
&lt;br /&gt;
=== TERM ===&lt;br /&gt;
Executes the ROM based terminal program (the cursor changes from a blinking black one to a blinking blue one to let the user know that they are in terminal mode). Further details on commands within the terminal programming coming soon.&lt;br /&gt;
&lt;br /&gt;
=== CONFIG ===&lt;br /&gt;
Configures the UART Serial port:&amp;lt;br&amp;gt;&lt;br /&gt;
CONFIG #-3,[1-15],[1-5],[5-8],[1-2]&amp;lt;br&amp;gt;&lt;br /&gt;
==== First parameter: ====&lt;br /&gt;
BAUD&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 = 50&lt;br /&gt;
* 2 = 75&lt;br /&gt;
* 3 = 109.92&lt;br /&gt;
* 4 = 135.56&lt;br /&gt;
* 5 = 150&lt;br /&gt;
* 6 = 300&lt;br /&gt;
* 7 = 600&lt;br /&gt;
* 8 = 1,200&lt;br /&gt;
* 9 = 1,800&lt;br /&gt;
* 10 = 2,400&lt;br /&gt;
* 11 = 3,600&lt;br /&gt;
* 12 = 4,800&lt;br /&gt;
* 13 = 7,200&lt;br /&gt;
* 14 = 9,600&lt;br /&gt;
* 15 = 19,200&lt;br /&gt;
Default: 6&lt;br /&gt;
&lt;br /&gt;
==== Second Parameter: ====&lt;br /&gt;
Sent to 6551 command register&amp;lt;br&amp;gt;&lt;br /&gt;
* 1: $09 00001001 - No Parity&lt;br /&gt;
* 2: $29 00101001 - Odd Parity&lt;br /&gt;
* 3: $69 01101001 - Even Parity&lt;br /&gt;
* 4: $A9 10101001 - Mark Parity&lt;br /&gt;
* 5: $E9 11101001 - Space Parity&lt;br /&gt;
* Transmit interrupt disabled&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
==== Third parameter: ====&lt;br /&gt;
Data word length, 5 to 8.&lt;br /&gt;
* Default: 8&lt;br /&gt;
&lt;br /&gt;
==== Fourth parameter: ====&lt;br /&gt;
Stop Bits&lt;br /&gt;
* 1 = 1 stop bit&lt;br /&gt;
* 2 = 2 stop bits&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
=== MAPMODE &amp;lt;value&amp;gt; ===&lt;br /&gt;
If the value is 0, the Color Computer is set to 0.89 MHz for the entire address space.&lt;br /&gt;
If the value is 1, the Color Computer is set to 1.78 MHz speed when reading from ROM, and 0.89 MHz when reading or writing to RAM.&lt;br /&gt;
&lt;br /&gt;
=== XOR ===&lt;br /&gt;
The exclusive or operator is true if 1 (and only 1) input is true, otherwise it is false.&amp;lt;br&amp;gt;&lt;br /&gt;
This is used in the same sense as AND and OR in if/then statements:&lt;br /&gt;
  IF A XOR B THEN 40&lt;br /&gt;
It is also use like AND and OR in bit wise expressions:&lt;br /&gt;
  C = A XOR B&lt;br /&gt;
&lt;br /&gt;
=== ERR ===&lt;br /&gt;
Variable that contains the last error number.&lt;br /&gt;
&lt;br /&gt;
=== ERL ===&lt;br /&gt;
Variable that contains the line number where the last error occurred.&lt;br /&gt;
&lt;br /&gt;
=== TIME ===&lt;br /&gt;
Returns the current value for the 24 bit timer (the old Extended BASIC &amp;quot;TIMER&amp;quot; still works as a 16 bit timer).&amp;lt;br&amp;gt;&lt;br /&gt;
This counter increments 60 times per second and rolls over at 24 hours.&lt;br /&gt;
&lt;br /&gt;
=== TIME$ ===&lt;br /&gt;
Will either return the current 24 hour clock value, or set the 24 hour clock value, using a string format. The string format is &amp;quot;HH:MM:SS&amp;quot;, in 24 hour time format, so HH can be 0 to 23, MM can be 0 to 59, and SS can be 0 to 59.&lt;br /&gt;
Examples:&lt;br /&gt;
  A$=TIME$&lt;br /&gt;
  TIME$=&amp;quot;13:25:00&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== STRIG(button) ===&lt;br /&gt;
This function returns the state of one of the four joystick buttons. Negative 1 if pressed, zero if not pressed.&amp;lt;br&amp;gt;&lt;br /&gt;
Button numbers 1, 3, 5, 7 return the real time value of the button state. This allows rapid fire with the button held down.&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 - Left joystick button 1&lt;br /&gt;
* 3 - Left joystick button 2&lt;br /&gt;
* 5 - Right joystick button 1&lt;br /&gt;
* 7 - Right joystick button 2&lt;br /&gt;
Button numbers 0, 2, 4, 6 return -1 if the button was pressed since the last time this function was called.&amp;lt;br&amp;gt;&lt;br /&gt;
It will then return 0 as long as the button is held down. A new button press will be required to get another -1. This is for single shot fire - the user needs to let go and press the button again in order to fire again.&lt;br /&gt;
* 0 - Left joystick button 1&lt;br /&gt;
* 2 - Left joystick button 2&lt;br /&gt;
* 4 - Right joystick button 1&lt;br /&gt;
* 6 - Right joystick button 2&lt;br /&gt;
&lt;br /&gt;
=== INPUT$(count, device) ===&lt;br /&gt;
Used to scan an input device and accumulate a string:&lt;br /&gt;
  10 A$=INPUT$(3,#0)&lt;br /&gt;
  20 ? A$&lt;br /&gt;
Will pause the program and wait for three key presses. They are put into A$. This will support cassette, serial and disk file I/O.&lt;br /&gt;
&lt;br /&gt;
=== ON ERROR GOTO &amp;lt;line number&amp;gt; ===&lt;br /&gt;
BASIC will jump to line number when an error is encountered. ERL and ERR will contain the line number with the error and the numeric error code, respectively.&lt;br /&gt;
&lt;br /&gt;
== Changed Commands: ==&lt;br /&gt;
&lt;br /&gt;
The EDIT will now accept a single line number or a range. The command will clear the screen, list the program line/lines and put the cursor at the start of the screen.&lt;br /&gt;
&lt;br /&gt;
A CLS value of 9 to 255 will cold start the computer. We suspect that this is a bug that should eventually be fixed.&lt;br /&gt;
&lt;br /&gt;
A CLS value greater than 255 will cause an ?FC error.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Advanced Color BASIC - added ROM vector calls ===&lt;br /&gt;
&lt;br /&gt;
Like Color BASIC and Disk BASIC, which used Extended indirect addresses to call functions within the ROM’s (like JOYIN, DSKCON, etc.), Advanced Color BASIC seems to reserve from $8000-$8015 for additional calls as well. This allows the routines themselves to move around as the ROM was updated, but calling programs would have a set point to enter them.&lt;br /&gt;
&lt;br /&gt;
[$8000] - Calls $FB00, which is a 3 entry table of LBRA instructions:&lt;br /&gt;
    LBRA  $FD32  (executes the TERM (terminal program) command, I believe)&lt;br /&gt;
    LBRA  $FB1A&lt;br /&gt;
    LBRA  $FD92&lt;br /&gt;
&lt;br /&gt;
[$8002] - Calls $FB09, which is a 1 entry table of LBRA instructions (I assume more would have&lt;br /&gt;
been added later)&lt;br /&gt;
LBRA	$FE16&lt;br /&gt;
&lt;br /&gt;
[$8004] - ??? (points to $09D4, which is in BASIC’s data area)&lt;br /&gt;
&lt;br /&gt;
[$8006] - ??? (points to $E968)&lt;br /&gt;
&lt;br /&gt;
[$8008] - ??? (points to $0ABE, which is in BASIC’s data area)&lt;br /&gt;
&lt;br /&gt;
[$800A] - ??? (points to $AD15)&lt;br /&gt;
&lt;br /&gt;
[$800C] - Call $9254, which checks the 6551 initialized flag (&amp;gt;$0A04). If it is 0 (not initialized), it will initialize the 6551 &amp;amp; it’s related variables including 128 byte receive buffer. If not, it just returns.&lt;br /&gt;
&lt;br /&gt;
[$800E] - ??? (points to $929D)&lt;br /&gt;
&lt;br /&gt;
[$8010] - ??? (points to $DE28)&lt;br /&gt;
&lt;br /&gt;
[$8012] - Calls $92E7, which will return a character from the 128 byte RS232 receive buffer, OR wait for an RS232 character to be received if the buffer is empty.&lt;br /&gt;
&lt;br /&gt;
[$8014] - Calls $92BD, which will transmit a character through the RS232.&lt;/div&gt;</description>
			<pubDate>Sat, 02 Mar 2024 19:37:41 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Advanced_Color_BASIC_Documentation</comments>
		</item>
		<item>
			<title>Advanced Color BASIC Documentation</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10909</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10909</guid>
			<description>&lt;p&gt;Tlindner: /* NOISE channel,noiseperiod,amplitude */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Advanced Color BASIC - New and updated features explained ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
This document explains the version 0.0.7 of Advanced Color BASIC ROM found late in 2023.&amp;lt;br&amp;gt;&lt;br /&gt;
It is from Robert Killgus&#039; collection.&amp;lt;br&amp;gt;&lt;br /&gt;
This is a very early version of the software and eventually became Deluxe Color BASIC.&lt;br /&gt;
&lt;br /&gt;
=== Allows lowercase characters in keywords. ===&lt;br /&gt;
&lt;br /&gt;
=== Full screen editor is always available. ===&lt;br /&gt;
* Hold alternate and arrow keys to move the cursor around.&lt;br /&gt;
* Alternate and &#039;I&#039; will insert a space and move the characters after the cursor to the right one space.&lt;br /&gt;
* Alternate and &#039;D&#039; will delete the character under the cursor and shift the remaining characters to the left.&lt;br /&gt;
* Alternate and &#039;E&#039; will delete the characters after the cursor to the end of the line.&lt;br /&gt;
* Alternate and ‘H” will move the cursor to the top left corner of the screen.&lt;br /&gt;
* Right Arrow (without the alternate key, Control-I) will move the cursor right 8 spaces.&lt;br /&gt;
* Left Arrow (without the alternate key, Control-H) will move the cursor one space to the left, and clear the character.&lt;br /&gt;
* Control and &#039;U&#039;, Shift-Left Arrow will clear the line and move the cursor to the left.&lt;br /&gt;
* The break key will abort editing and put the cursor at the bottom left of the screen.&lt;br /&gt;
* CLEAR (Control-L) will abort editing and clear the screen.&lt;br /&gt;
Press the enter key to commit an edited line. You do not have to be at the end of a line.&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-3. ===&lt;br /&gt;
Sends and receives data to/from the new serial port.&lt;br /&gt;
Uses:&lt;br /&gt;
PRINT #-3, &amp;quot;HELLO WORLD&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-4 - tbd ===&lt;br /&gt;
&lt;br /&gt;
=== RAM Disk ===&lt;br /&gt;
Drive 4 is a RAM Disk. It has 12 granules available. It is available even if there is no disk cartridge inserted.&lt;br /&gt;
&lt;br /&gt;
If a disk cartridge is inserted on cold boot, you are presented with a menu option to go to BASIC or &amp;quot;Disk&amp;quot;. If you choose &amp;quot;Disk&amp;quot; the equivalent of a DOS command is executed.&lt;br /&gt;
&lt;br /&gt;
== New commands ==&lt;br /&gt;
&lt;br /&gt;
=== ERROR &amp;lt;value&amp;gt; ===&lt;br /&gt;
Will cause the computer to stop the program and issue the respective error.&lt;br /&gt;
&lt;br /&gt;
=== RESUME &amp;lt;line number&amp;gt; ===&lt;br /&gt;
Resumes a program at line number from the error handler.&lt;br /&gt;
&lt;br /&gt;
=== WHILE &amp;lt;boolean expression&amp;gt; / WEND ===&lt;br /&gt;
This is a loop construct that will execute the statements between WHILE and WEND repeatedly until the boolean expression is false.&lt;br /&gt;
&lt;br /&gt;
=== TONE channel, toneperiod, amplitude ===&lt;br /&gt;
* channel: 1-3&lt;br /&gt;
* toneperiod: 0-4095&lt;br /&gt;
* amplitude: 0-15&lt;br /&gt;
&lt;br /&gt;
=== NOISE channel,noiseperiod,amplitude ===&lt;br /&gt;
* channel: 1-3&lt;br /&gt;
* noiseperiod: 0-31&lt;br /&gt;
* amplitude 0-15&lt;br /&gt;
&lt;br /&gt;
=== ENV param1,param2,param3,param4,param5 ===&lt;br /&gt;
TBD 5 numeric parameters 0-65535 allowed &lt;br /&gt;
&lt;br /&gt;
TONE 1,2048,15 &#039; start tone 2048 on channel 1 at max volume&lt;br /&gt;
NOISE 2,31,15 &#039; start noise 31 on channel 2 at max volume&lt;br /&gt;
NOISE 2,0 &#039; stop noise on channel 2&lt;br /&gt;
TONE 1,0,0 &#039; stop tone on channel 1&lt;br /&gt;
SOUND command unaltered&lt;br /&gt;
TBD determine if PLAY command supports 3-voice like N60 BASIC (also by Microsoft) does&lt;br /&gt;
&lt;br /&gt;
=== CHAIN - tbd. ===&lt;br /&gt;
&lt;br /&gt;
=== COMMON ===&lt;br /&gt;
Restrictive comment. For Example:&lt;br /&gt;
10 COMMON This is a comment : PRINT “HELLO WORLD”&lt;br /&gt;
The text after the COMMON command will not be executed, but the command after the colon will. This is different from REM&lt;br /&gt;
10 REM This is a comment : PRINT “HELLO WORLD”&lt;br /&gt;
The REM command will cause everything to be ignored on the whole line.&lt;br /&gt;
&lt;br /&gt;
=== TERM ===&lt;br /&gt;
Executes the ROM based terminal program (the cursor changes from a blinking black one to a blinking blue one to let the user know that they are in terminal mode). Further details on commands within the terminal programming coming soon.&lt;br /&gt;
&lt;br /&gt;
=== CONFIG ===&lt;br /&gt;
Configures the UART Serial port:&amp;lt;br&amp;gt;&lt;br /&gt;
CONFIG #-3,[1-15],[1-5],[5-8],[1-2]&amp;lt;br&amp;gt;&lt;br /&gt;
==== First parameter: ====&lt;br /&gt;
BAUD&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 = 50&lt;br /&gt;
* 2 = 75&lt;br /&gt;
* 3 = 109.92&lt;br /&gt;
* 4 = 135.56&lt;br /&gt;
* 5 = 150&lt;br /&gt;
* 6 = 300&lt;br /&gt;
* 7 = 600&lt;br /&gt;
* 8 = 1,200&lt;br /&gt;
* 9 = 1,800&lt;br /&gt;
* 10 = 2,400&lt;br /&gt;
* 11 = 3,600&lt;br /&gt;
* 12 = 4,800&lt;br /&gt;
* 13 = 7,200&lt;br /&gt;
* 14 = 9,600&lt;br /&gt;
* 15 = 19,200&lt;br /&gt;
Default: 6&lt;br /&gt;
&lt;br /&gt;
==== Second Parameter: ====&lt;br /&gt;
Sent to 6551 command register&amp;lt;br&amp;gt;&lt;br /&gt;
* 1: $09 00001001 - No Parity&lt;br /&gt;
* 2: $29 00101001 - Odd Parity&lt;br /&gt;
* 3: $69 01101001 - Even Parity&lt;br /&gt;
* 4: $A9 10101001 - Mark Parity&lt;br /&gt;
* 5: $E9 11101001 - Space Parity&lt;br /&gt;
* Transmit interrupt disabled&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
==== Third parameter: ====&lt;br /&gt;
Data word length, 5 to 8.&lt;br /&gt;
* Default: 8&lt;br /&gt;
&lt;br /&gt;
==== Fourth parameter: ====&lt;br /&gt;
Stop Bits&lt;br /&gt;
* 1 = 1 stop bit&lt;br /&gt;
* 2 = 2 stop bits&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
=== MAPMODE &amp;lt;value&amp;gt; ===&lt;br /&gt;
If the value is 0, the Color Computer is set to 0.89 MHz for the entire address space.&lt;br /&gt;
If the value is 1, the Color Computer is set to 1.78 MHz speed when reading from ROM, and 0.89 MHz when reading or writing to RAM.&lt;br /&gt;
&lt;br /&gt;
=== XOR ===&lt;br /&gt;
The exclusive or operator is true if 1 (and only 1) input is true, otherwise it is false.&amp;lt;br&amp;gt;&lt;br /&gt;
This is used in the same sense as AND and OR in if/then statements:&lt;br /&gt;
  IF A XOR B THEN 40&lt;br /&gt;
It is also use like AND and OR in bit wise expressions:&lt;br /&gt;
  C = A XOR B&lt;br /&gt;
&lt;br /&gt;
=== ERR ===&lt;br /&gt;
Variable that contains the last error number.&lt;br /&gt;
&lt;br /&gt;
=== ERL ===&lt;br /&gt;
Variable that contains the line number where the last error occurred.&lt;br /&gt;
&lt;br /&gt;
=== TIME ===&lt;br /&gt;
Returns the current value for the 24 bit timer (the old Extended BASIC &amp;quot;TIMER&amp;quot; still works as a 16 bit timer).&amp;lt;br&amp;gt;&lt;br /&gt;
This counter increments 60 times per second and rolls over at 24 hours.&lt;br /&gt;
&lt;br /&gt;
=== TIME$ ===&lt;br /&gt;
Will either return the current 24 hour clock value, or set the 24 hour clock value, using a string format. The string format is &amp;quot;HH:MM:SS&amp;quot;, in 24 hour time format, so HH can be 0 to 23, MM can be 0 to 59, and SS can be 0 to 59.&lt;br /&gt;
Examples:&lt;br /&gt;
  A$=TIME$&lt;br /&gt;
  TIME$=&amp;quot;13:25:00&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== STRIG(button) ===&lt;br /&gt;
This function returns the state of one of the four joystick buttons. Negative 1 if pressed, zero if not pressed.&amp;lt;br&amp;gt;&lt;br /&gt;
Button numbers 1, 3, 5, 7 return the real time value of the button state. This allows rapid fire with the button held down.&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 - Left joystick button 1&lt;br /&gt;
* 3 - Left joystick button 2&lt;br /&gt;
* 5 - Right joystick button 1&lt;br /&gt;
* 7 - Right joystick button 2&lt;br /&gt;
Button numbers 0, 2, 4, 6 return -1 if the button was pressed since the last time this function was called.&amp;lt;br&amp;gt;&lt;br /&gt;
It will then return 0 as long as the button is held down. A new button press will be required to get another -1. This is for single shot fire - the user needs to let go and press the button again in order to fire again.&lt;br /&gt;
* 0 - Left joystick button 1&lt;br /&gt;
* 2 - Left joystick button 2&lt;br /&gt;
* 4 - Right joystick button 1&lt;br /&gt;
* 6 - Right joystick button 2&lt;br /&gt;
&lt;br /&gt;
=== INPUT$(count, device) ===&lt;br /&gt;
Used to scan an input device and accumulate a string:&lt;br /&gt;
  10 A$=INPUT$(3,#0)&lt;br /&gt;
  20 ? A$&lt;br /&gt;
Will pause the program and wait for three key presses. They are put into A$. This will support cassette, serial and disk file I/O.&lt;br /&gt;
&lt;br /&gt;
=== ON ERROR GOTO &amp;lt;line number&amp;gt; ===&lt;br /&gt;
BASIC will jump to line number when an error is encountered. ERL and ERR will contain the line number with the error and the numeric error code, respectively.&lt;br /&gt;
&lt;br /&gt;
== Changed Commands: ==&lt;br /&gt;
&lt;br /&gt;
The EDIT will now accept a single line number or a range. The command will clear the screen, list the program line/lines and put the cursor at the start of the screen.&lt;br /&gt;
&lt;br /&gt;
A CLS value of 9 to 255 will cold start the computer. We suspect that this is a bug that should eventually be fixed.&lt;br /&gt;
&lt;br /&gt;
A CLS value greater than 255 will cause an ?FC error.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Advanced Color BASIC - added ROM vector calls ===&lt;br /&gt;
&lt;br /&gt;
Like Color BASIC and Disk BASIC, which used Extended indirect addresses to call functions within the ROM’s (like JOYIN, DSKCON, etc.), Advanced Color BASIC seems to reserve from $8000-$8015 for additional calls as well. This allows the routines themselves to move around as the ROM was updated, but calling programs would have a set point to enter them.&lt;br /&gt;
&lt;br /&gt;
[$8000] - Calls $FB00, which is a 3 entry table of LBRA instructions:&lt;br /&gt;
    LBRA  $FD32  (executes the TERM (terminal program) command, I believe)&lt;br /&gt;
    LBRA  $FB1A&lt;br /&gt;
    LBRA  $FD92&lt;br /&gt;
&lt;br /&gt;
[$8002] - Calls $FB09, which is a 1 entry table of LBRA instructions (I assume more would have&lt;br /&gt;
been added later)&lt;br /&gt;
LBRA	$FE16&lt;br /&gt;
&lt;br /&gt;
[$8004] - ??? (points to $09D4, which is in BASIC’s data area)&lt;br /&gt;
&lt;br /&gt;
[$8006] - ??? (points to $E968)&lt;br /&gt;
&lt;br /&gt;
[$8008] - ??? (points to $0ABE, which is in BASIC’s data area)&lt;br /&gt;
&lt;br /&gt;
[$800A] - ??? (points to $AD15)&lt;br /&gt;
&lt;br /&gt;
[$800C] - Call $9254, which checks the 6551 initialized flag (&amp;gt;$0A04). If it is 0 (not initialized), it will initialize the 6551 &amp;amp; it’s related variables including 128 byte receive buffer. If not, it just returns.&lt;br /&gt;
&lt;br /&gt;
[$800E] - ??? (points to $929D)&lt;br /&gt;
&lt;br /&gt;
[$8010] - ??? (points to $DE28)&lt;br /&gt;
&lt;br /&gt;
[$8012] - Calls $92E7, which will return a character from the 128 byte RS232 receive buffer, OR wait for an RS232 character to be received if the buffer is empty.&lt;br /&gt;
&lt;br /&gt;
[$8014] - Calls $92BD, which will transmit a character through the RS232.&lt;/div&gt;</description>
			<pubDate>Sat, 02 Mar 2024 19:36:32 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Advanced_Color_BASIC_Documentation</comments>
		</item>
		<item>
			<title>Advanced Color BASIC Documentation</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10908</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10908</guid>
			<description>&lt;p&gt;Tlindner: /* TONE channel, toneperiod, amplitude */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Advanced Color BASIC - New and updated features explained ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
This document explains the version 0.0.7 of Advanced Color BASIC ROM found late in 2023.&amp;lt;br&amp;gt;&lt;br /&gt;
It is from Robert Killgus&#039; collection.&amp;lt;br&amp;gt;&lt;br /&gt;
This is a very early version of the software and eventually became Deluxe Color BASIC.&lt;br /&gt;
&lt;br /&gt;
=== Allows lowercase characters in keywords. ===&lt;br /&gt;
&lt;br /&gt;
=== Full screen editor is always available. ===&lt;br /&gt;
* Hold alternate and arrow keys to move the cursor around.&lt;br /&gt;
* Alternate and &#039;I&#039; will insert a space and move the characters after the cursor to the right one space.&lt;br /&gt;
* Alternate and &#039;D&#039; will delete the character under the cursor and shift the remaining characters to the left.&lt;br /&gt;
* Alternate and &#039;E&#039; will delete the characters after the cursor to the end of the line.&lt;br /&gt;
* Alternate and ‘H” will move the cursor to the top left corner of the screen.&lt;br /&gt;
* Right Arrow (without the alternate key, Control-I) will move the cursor right 8 spaces.&lt;br /&gt;
* Left Arrow (without the alternate key, Control-H) will move the cursor one space to the left, and clear the character.&lt;br /&gt;
* Control and &#039;U&#039;, Shift-Left Arrow will clear the line and move the cursor to the left.&lt;br /&gt;
* The break key will abort editing and put the cursor at the bottom left of the screen.&lt;br /&gt;
* CLEAR (Control-L) will abort editing and clear the screen.&lt;br /&gt;
Press the enter key to commit an edited line. You do not have to be at the end of a line.&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-3. ===&lt;br /&gt;
Sends and receives data to/from the new serial port.&lt;br /&gt;
Uses:&lt;br /&gt;
PRINT #-3, &amp;quot;HELLO WORLD&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-4 - tbd ===&lt;br /&gt;
&lt;br /&gt;
=== RAM Disk ===&lt;br /&gt;
Drive 4 is a RAM Disk. It has 12 granules available. It is available even if there is no disk cartridge inserted.&lt;br /&gt;
&lt;br /&gt;
If a disk cartridge is inserted on cold boot, you are presented with a menu option to go to BASIC or &amp;quot;Disk&amp;quot;. If you choose &amp;quot;Disk&amp;quot; the equivalent of a DOS command is executed.&lt;br /&gt;
&lt;br /&gt;
== New commands ==&lt;br /&gt;
&lt;br /&gt;
=== ERROR &amp;lt;value&amp;gt; ===&lt;br /&gt;
Will cause the computer to stop the program and issue the respective error.&lt;br /&gt;
&lt;br /&gt;
=== RESUME &amp;lt;line number&amp;gt; ===&lt;br /&gt;
Resumes a program at line number from the error handler.&lt;br /&gt;
&lt;br /&gt;
=== WHILE &amp;lt;boolean expression&amp;gt; / WEND ===&lt;br /&gt;
This is a loop construct that will execute the statements between WHILE and WEND repeatedly until the boolean expression is false.&lt;br /&gt;
&lt;br /&gt;
=== TONE channel, toneperiod, amplitude ===&lt;br /&gt;
* channel: 1-3&lt;br /&gt;
* toneperiod: 0-4095&lt;br /&gt;
* amplitude: 0-15&lt;br /&gt;
&lt;br /&gt;
=== NOISE channel,noiseperiod,amplitude ===&lt;br /&gt;
channel: 1-3&lt;br /&gt;
noiseperiod: 0-31&lt;br /&gt;
amplitude 0-15&lt;br /&gt;
&lt;br /&gt;
=== ENV param1,param2,param3,param4,param5 ===&lt;br /&gt;
TBD 5 numeric parameters 0-65535 allowed &lt;br /&gt;
&lt;br /&gt;
TONE 1,2048,15 &#039; start tone 2048 on channel 1 at max volume&lt;br /&gt;
NOISE 2,31,15 &#039; start noise 31 on channel 2 at max volume&lt;br /&gt;
NOISE 2,0 &#039; stop noise on channel 2&lt;br /&gt;
TONE 1,0,0 &#039; stop tone on channel 1&lt;br /&gt;
SOUND command unaltered&lt;br /&gt;
TBD determine if PLAY command supports 3-voice like N60 BASIC (also by Microsoft) does&lt;br /&gt;
&lt;br /&gt;
=== CHAIN - tbd. ===&lt;br /&gt;
&lt;br /&gt;
=== COMMON ===&lt;br /&gt;
Restrictive comment. For Example:&lt;br /&gt;
10 COMMON This is a comment : PRINT “HELLO WORLD”&lt;br /&gt;
The text after the COMMON command will not be executed, but the command after the colon will. This is different from REM&lt;br /&gt;
10 REM This is a comment : PRINT “HELLO WORLD”&lt;br /&gt;
The REM command will cause everything to be ignored on the whole line.&lt;br /&gt;
&lt;br /&gt;
=== TERM ===&lt;br /&gt;
Executes the ROM based terminal program (the cursor changes from a blinking black one to a blinking blue one to let the user know that they are in terminal mode). Further details on commands within the terminal programming coming soon.&lt;br /&gt;
&lt;br /&gt;
=== CONFIG ===&lt;br /&gt;
Configures the UART Serial port:&amp;lt;br&amp;gt;&lt;br /&gt;
CONFIG #-3,[1-15],[1-5],[5-8],[1-2]&amp;lt;br&amp;gt;&lt;br /&gt;
==== First parameter: ====&lt;br /&gt;
BAUD&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 = 50&lt;br /&gt;
* 2 = 75&lt;br /&gt;
* 3 = 109.92&lt;br /&gt;
* 4 = 135.56&lt;br /&gt;
* 5 = 150&lt;br /&gt;
* 6 = 300&lt;br /&gt;
* 7 = 600&lt;br /&gt;
* 8 = 1,200&lt;br /&gt;
* 9 = 1,800&lt;br /&gt;
* 10 = 2,400&lt;br /&gt;
* 11 = 3,600&lt;br /&gt;
* 12 = 4,800&lt;br /&gt;
* 13 = 7,200&lt;br /&gt;
* 14 = 9,600&lt;br /&gt;
* 15 = 19,200&lt;br /&gt;
Default: 6&lt;br /&gt;
&lt;br /&gt;
==== Second Parameter: ====&lt;br /&gt;
Sent to 6551 command register&amp;lt;br&amp;gt;&lt;br /&gt;
* 1: $09 00001001 - No Parity&lt;br /&gt;
* 2: $29 00101001 - Odd Parity&lt;br /&gt;
* 3: $69 01101001 - Even Parity&lt;br /&gt;
* 4: $A9 10101001 - Mark Parity&lt;br /&gt;
* 5: $E9 11101001 - Space Parity&lt;br /&gt;
* Transmit interrupt disabled&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
==== Third parameter: ====&lt;br /&gt;
Data word length, 5 to 8.&lt;br /&gt;
* Default: 8&lt;br /&gt;
&lt;br /&gt;
==== Fourth parameter: ====&lt;br /&gt;
Stop Bits&lt;br /&gt;
* 1 = 1 stop bit&lt;br /&gt;
* 2 = 2 stop bits&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
=== MAPMODE &amp;lt;value&amp;gt; ===&lt;br /&gt;
If the value is 0, the Color Computer is set to 0.89 MHz for the entire address space.&lt;br /&gt;
If the value is 1, the Color Computer is set to 1.78 MHz speed when reading from ROM, and 0.89 MHz when reading or writing to RAM.&lt;br /&gt;
&lt;br /&gt;
=== XOR ===&lt;br /&gt;
The exclusive or operator is true if 1 (and only 1) input is true, otherwise it is false.&amp;lt;br&amp;gt;&lt;br /&gt;
This is used in the same sense as AND and OR in if/then statements:&lt;br /&gt;
  IF A XOR B THEN 40&lt;br /&gt;
It is also use like AND and OR in bit wise expressions:&lt;br /&gt;
  C = A XOR B&lt;br /&gt;
&lt;br /&gt;
=== ERR ===&lt;br /&gt;
Variable that contains the last error number.&lt;br /&gt;
&lt;br /&gt;
=== ERL ===&lt;br /&gt;
Variable that contains the line number where the last error occurred.&lt;br /&gt;
&lt;br /&gt;
=== TIME ===&lt;br /&gt;
Returns the current value for the 24 bit timer (the old Extended BASIC &amp;quot;TIMER&amp;quot; still works as a 16 bit timer).&amp;lt;br&amp;gt;&lt;br /&gt;
This counter increments 60 times per second and rolls over at 24 hours.&lt;br /&gt;
&lt;br /&gt;
=== TIME$ ===&lt;br /&gt;
Will either return the current 24 hour clock value, or set the 24 hour clock value, using a string format. The string format is &amp;quot;HH:MM:SS&amp;quot;, in 24 hour time format, so HH can be 0 to 23, MM can be 0 to 59, and SS can be 0 to 59.&lt;br /&gt;
Examples:&lt;br /&gt;
  A$=TIME$&lt;br /&gt;
  TIME$=&amp;quot;13:25:00&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== STRIG(button) ===&lt;br /&gt;
This function returns the state of one of the four joystick buttons. Negative 1 if pressed, zero if not pressed.&amp;lt;br&amp;gt;&lt;br /&gt;
Button numbers 1, 3, 5, 7 return the real time value of the button state. This allows rapid fire with the button held down.&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 - Left joystick button 1&lt;br /&gt;
* 3 - Left joystick button 2&lt;br /&gt;
* 5 - Right joystick button 1&lt;br /&gt;
* 7 - Right joystick button 2&lt;br /&gt;
Button numbers 0, 2, 4, 6 return -1 if the button was pressed since the last time this function was called.&amp;lt;br&amp;gt;&lt;br /&gt;
It will then return 0 as long as the button is held down. A new button press will be required to get another -1. This is for single shot fire - the user needs to let go and press the button again in order to fire again.&lt;br /&gt;
* 0 - Left joystick button 1&lt;br /&gt;
* 2 - Left joystick button 2&lt;br /&gt;
* 4 - Right joystick button 1&lt;br /&gt;
* 6 - Right joystick button 2&lt;br /&gt;
&lt;br /&gt;
=== INPUT$(count, device) ===&lt;br /&gt;
Used to scan an input device and accumulate a string:&lt;br /&gt;
  10 A$=INPUT$(3,#0)&lt;br /&gt;
  20 ? A$&lt;br /&gt;
Will pause the program and wait for three key presses. They are put into A$. This will support cassette, serial and disk file I/O.&lt;br /&gt;
&lt;br /&gt;
=== ON ERROR GOTO &amp;lt;line number&amp;gt; ===&lt;br /&gt;
BASIC will jump to line number when an error is encountered. ERL and ERR will contain the line number with the error and the numeric error code, respectively.&lt;br /&gt;
&lt;br /&gt;
== Changed Commands: ==&lt;br /&gt;
&lt;br /&gt;
The EDIT will now accept a single line number or a range. The command will clear the screen, list the program line/lines and put the cursor at the start of the screen.&lt;br /&gt;
&lt;br /&gt;
A CLS value of 9 to 255 will cold start the computer. We suspect that this is a bug that should eventually be fixed.&lt;br /&gt;
&lt;br /&gt;
A CLS value greater than 255 will cause an ?FC error.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Advanced Color BASIC - added ROM vector calls ===&lt;br /&gt;
&lt;br /&gt;
Like Color BASIC and Disk BASIC, which used Extended indirect addresses to call functions within the ROM’s (like JOYIN, DSKCON, etc.), Advanced Color BASIC seems to reserve from $8000-$8015 for additional calls as well. This allows the routines themselves to move around as the ROM was updated, but calling programs would have a set point to enter them.&lt;br /&gt;
&lt;br /&gt;
[$8000] - Calls $FB00, which is a 3 entry table of LBRA instructions:&lt;br /&gt;
    LBRA  $FD32  (executes the TERM (terminal program) command, I believe)&lt;br /&gt;
    LBRA  $FB1A&lt;br /&gt;
    LBRA  $FD92&lt;br /&gt;
&lt;br /&gt;
[$8002] - Calls $FB09, which is a 1 entry table of LBRA instructions (I assume more would have&lt;br /&gt;
been added later)&lt;br /&gt;
LBRA	$FE16&lt;br /&gt;
&lt;br /&gt;
[$8004] - ??? (points to $09D4, which is in BASIC’s data area)&lt;br /&gt;
&lt;br /&gt;
[$8006] - ??? (points to $E968)&lt;br /&gt;
&lt;br /&gt;
[$8008] - ??? (points to $0ABE, which is in BASIC’s data area)&lt;br /&gt;
&lt;br /&gt;
[$800A] - ??? (points to $AD15)&lt;br /&gt;
&lt;br /&gt;
[$800C] - Call $9254, which checks the 6551 initialized flag (&amp;gt;$0A04). If it is 0 (not initialized), it will initialize the 6551 &amp;amp; it’s related variables including 128 byte receive buffer. If not, it just returns.&lt;br /&gt;
&lt;br /&gt;
[$800E] - ??? (points to $929D)&lt;br /&gt;
&lt;br /&gt;
[$8010] - ??? (points to $DE28)&lt;br /&gt;
&lt;br /&gt;
[$8012] - Calls $92E7, which will return a character from the 128 byte RS232 receive buffer, OR wait for an RS232 character to be received if the buffer is empty.&lt;br /&gt;
&lt;br /&gt;
[$8014] - Calls $92BD, which will transmit a character through the RS232.&lt;/div&gt;</description>
			<pubDate>Sat, 02 Mar 2024 19:36:15 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Advanced_Color_BASIC_Documentation</comments>
		</item>
		<item>
			<title>Advanced Color BASIC Documentation</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10907</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10907</guid>
			<description>&lt;p&gt;Tlindner: /* Full screen editor is always available. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Advanced Color BASIC - New and updated features explained ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
This document explains the version 0.0.7 of Advanced Color BASIC ROM found late in 2023.&amp;lt;br&amp;gt;&lt;br /&gt;
It is from Robert Killgus&#039; collection.&amp;lt;br&amp;gt;&lt;br /&gt;
This is a very early version of the software and eventually became Deluxe Color BASIC.&lt;br /&gt;
&lt;br /&gt;
=== Allows lowercase characters in keywords. ===&lt;br /&gt;
&lt;br /&gt;
=== Full screen editor is always available. ===&lt;br /&gt;
* Hold alternate and arrow keys to move the cursor around.&lt;br /&gt;
* Alternate and &#039;I&#039; will insert a space and move the characters after the cursor to the right one space.&lt;br /&gt;
* Alternate and &#039;D&#039; will delete the character under the cursor and shift the remaining characters to the left.&lt;br /&gt;
* Alternate and &#039;E&#039; will delete the characters after the cursor to the end of the line.&lt;br /&gt;
* Alternate and ‘H” will move the cursor to the top left corner of the screen.&lt;br /&gt;
* Right Arrow (without the alternate key, Control-I) will move the cursor right 8 spaces.&lt;br /&gt;
* Left Arrow (without the alternate key, Control-H) will move the cursor one space to the left, and clear the character.&lt;br /&gt;
* Control and &#039;U&#039;, Shift-Left Arrow will clear the line and move the cursor to the left.&lt;br /&gt;
* The break key will abort editing and put the cursor at the bottom left of the screen.&lt;br /&gt;
* CLEAR (Control-L) will abort editing and clear the screen.&lt;br /&gt;
Press the enter key to commit an edited line. You do not have to be at the end of a line.&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-3. ===&lt;br /&gt;
Sends and receives data to/from the new serial port.&lt;br /&gt;
Uses:&lt;br /&gt;
PRINT #-3, &amp;quot;HELLO WORLD&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-4 - tbd ===&lt;br /&gt;
&lt;br /&gt;
=== RAM Disk ===&lt;br /&gt;
Drive 4 is a RAM Disk. It has 12 granules available. It is available even if there is no disk cartridge inserted.&lt;br /&gt;
&lt;br /&gt;
If a disk cartridge is inserted on cold boot, you are presented with a menu option to go to BASIC or &amp;quot;Disk&amp;quot;. If you choose &amp;quot;Disk&amp;quot; the equivalent of a DOS command is executed.&lt;br /&gt;
&lt;br /&gt;
== New commands ==&lt;br /&gt;
&lt;br /&gt;
=== ERROR &amp;lt;value&amp;gt; ===&lt;br /&gt;
Will cause the computer to stop the program and issue the respective error.&lt;br /&gt;
&lt;br /&gt;
=== RESUME &amp;lt;line number&amp;gt; ===&lt;br /&gt;
Resumes a program at line number from the error handler.&lt;br /&gt;
&lt;br /&gt;
=== WHILE &amp;lt;boolean expression&amp;gt; / WEND ===&lt;br /&gt;
This is a loop construct that will execute the statements between WHILE and WEND repeatedly until the boolean expression is false.&lt;br /&gt;
&lt;br /&gt;
=== TONE channel, toneperiod, amplitude ===&lt;br /&gt;
channel: 1-3&lt;br /&gt;
toneperiod: 0-4095&lt;br /&gt;
amplitude: 0-15&lt;br /&gt;
&lt;br /&gt;
=== NOISE channel,noiseperiod,amplitude ===&lt;br /&gt;
channel: 1-3&lt;br /&gt;
noiseperiod: 0-31&lt;br /&gt;
amplitude 0-15&lt;br /&gt;
&lt;br /&gt;
=== ENV param1,param2,param3,param4,param5 ===&lt;br /&gt;
TBD 5 numeric parameters 0-65535 allowed &lt;br /&gt;
&lt;br /&gt;
TONE 1,2048,15 &#039; start tone 2048 on channel 1 at max volume&lt;br /&gt;
NOISE 2,31,15 &#039; start noise 31 on channel 2 at max volume&lt;br /&gt;
NOISE 2,0 &#039; stop noise on channel 2&lt;br /&gt;
TONE 1,0,0 &#039; stop tone on channel 1&lt;br /&gt;
SOUND command unaltered&lt;br /&gt;
TBD determine if PLAY command supports 3-voice like N60 BASIC (also by Microsoft) does&lt;br /&gt;
&lt;br /&gt;
=== CHAIN - tbd. ===&lt;br /&gt;
&lt;br /&gt;
=== COMMON ===&lt;br /&gt;
Restrictive comment. For Example:&lt;br /&gt;
10 COMMON This is a comment : PRINT “HELLO WORLD”&lt;br /&gt;
The text after the COMMON command will not be executed, but the command after the colon will. This is different from REM&lt;br /&gt;
10 REM This is a comment : PRINT “HELLO WORLD”&lt;br /&gt;
The REM command will cause everything to be ignored on the whole line.&lt;br /&gt;
&lt;br /&gt;
=== TERM ===&lt;br /&gt;
Executes the ROM based terminal program (the cursor changes from a blinking black one to a blinking blue one to let the user know that they are in terminal mode). Further details on commands within the terminal programming coming soon.&lt;br /&gt;
&lt;br /&gt;
=== CONFIG ===&lt;br /&gt;
Configures the UART Serial port:&amp;lt;br&amp;gt;&lt;br /&gt;
CONFIG #-3,[1-15],[1-5],[5-8],[1-2]&amp;lt;br&amp;gt;&lt;br /&gt;
==== First parameter: ====&lt;br /&gt;
BAUD&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 = 50&lt;br /&gt;
* 2 = 75&lt;br /&gt;
* 3 = 109.92&lt;br /&gt;
* 4 = 135.56&lt;br /&gt;
* 5 = 150&lt;br /&gt;
* 6 = 300&lt;br /&gt;
* 7 = 600&lt;br /&gt;
* 8 = 1,200&lt;br /&gt;
* 9 = 1,800&lt;br /&gt;
* 10 = 2,400&lt;br /&gt;
* 11 = 3,600&lt;br /&gt;
* 12 = 4,800&lt;br /&gt;
* 13 = 7,200&lt;br /&gt;
* 14 = 9,600&lt;br /&gt;
* 15 = 19,200&lt;br /&gt;
Default: 6&lt;br /&gt;
&lt;br /&gt;
==== Second Parameter: ====&lt;br /&gt;
Sent to 6551 command register&amp;lt;br&amp;gt;&lt;br /&gt;
* 1: $09 00001001 - No Parity&lt;br /&gt;
* 2: $29 00101001 - Odd Parity&lt;br /&gt;
* 3: $69 01101001 - Even Parity&lt;br /&gt;
* 4: $A9 10101001 - Mark Parity&lt;br /&gt;
* 5: $E9 11101001 - Space Parity&lt;br /&gt;
* Transmit interrupt disabled&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
==== Third parameter: ====&lt;br /&gt;
Data word length, 5 to 8.&lt;br /&gt;
* Default: 8&lt;br /&gt;
&lt;br /&gt;
==== Fourth parameter: ====&lt;br /&gt;
Stop Bits&lt;br /&gt;
* 1 = 1 stop bit&lt;br /&gt;
* 2 = 2 stop bits&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
=== MAPMODE &amp;lt;value&amp;gt; ===&lt;br /&gt;
If the value is 0, the Color Computer is set to 0.89 MHz for the entire address space.&lt;br /&gt;
If the value is 1, the Color Computer is set to 1.78 MHz speed when reading from ROM, and 0.89 MHz when reading or writing to RAM.&lt;br /&gt;
&lt;br /&gt;
=== XOR ===&lt;br /&gt;
The exclusive or operator is true if 1 (and only 1) input is true, otherwise it is false.&amp;lt;br&amp;gt;&lt;br /&gt;
This is used in the same sense as AND and OR in if/then statements:&lt;br /&gt;
  IF A XOR B THEN 40&lt;br /&gt;
It is also use like AND and OR in bit wise expressions:&lt;br /&gt;
  C = A XOR B&lt;br /&gt;
&lt;br /&gt;
=== ERR ===&lt;br /&gt;
Variable that contains the last error number.&lt;br /&gt;
&lt;br /&gt;
=== ERL ===&lt;br /&gt;
Variable that contains the line number where the last error occurred.&lt;br /&gt;
&lt;br /&gt;
=== TIME ===&lt;br /&gt;
Returns the current value for the 24 bit timer (the old Extended BASIC &amp;quot;TIMER&amp;quot; still works as a 16 bit timer).&amp;lt;br&amp;gt;&lt;br /&gt;
This counter increments 60 times per second and rolls over at 24 hours.&lt;br /&gt;
&lt;br /&gt;
=== TIME$ ===&lt;br /&gt;
Will either return the current 24 hour clock value, or set the 24 hour clock value, using a string format. The string format is &amp;quot;HH:MM:SS&amp;quot;, in 24 hour time format, so HH can be 0 to 23, MM can be 0 to 59, and SS can be 0 to 59.&lt;br /&gt;
Examples:&lt;br /&gt;
  A$=TIME$&lt;br /&gt;
  TIME$=&amp;quot;13:25:00&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== STRIG(button) ===&lt;br /&gt;
This function returns the state of one of the four joystick buttons. Negative 1 if pressed, zero if not pressed.&amp;lt;br&amp;gt;&lt;br /&gt;
Button numbers 1, 3, 5, 7 return the real time value of the button state. This allows rapid fire with the button held down.&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 - Left joystick button 1&lt;br /&gt;
* 3 - Left joystick button 2&lt;br /&gt;
* 5 - Right joystick button 1&lt;br /&gt;
* 7 - Right joystick button 2&lt;br /&gt;
Button numbers 0, 2, 4, 6 return -1 if the button was pressed since the last time this function was called.&amp;lt;br&amp;gt;&lt;br /&gt;
It will then return 0 as long as the button is held down. A new button press will be required to get another -1. This is for single shot fire - the user needs to let go and press the button again in order to fire again.&lt;br /&gt;
* 0 - Left joystick button 1&lt;br /&gt;
* 2 - Left joystick button 2&lt;br /&gt;
* 4 - Right joystick button 1&lt;br /&gt;
* 6 - Right joystick button 2&lt;br /&gt;
&lt;br /&gt;
=== INPUT$(count, device) ===&lt;br /&gt;
Used to scan an input device and accumulate a string:&lt;br /&gt;
  10 A$=INPUT$(3,#0)&lt;br /&gt;
  20 ? A$&lt;br /&gt;
Will pause the program and wait for three key presses. They are put into A$. This will support cassette, serial and disk file I/O.&lt;br /&gt;
&lt;br /&gt;
=== ON ERROR GOTO &amp;lt;line number&amp;gt; ===&lt;br /&gt;
BASIC will jump to line number when an error is encountered. ERL and ERR will contain the line number with the error and the numeric error code, respectively.&lt;br /&gt;
&lt;br /&gt;
== Changed Commands: ==&lt;br /&gt;
&lt;br /&gt;
The EDIT will now accept a single line number or a range. The command will clear the screen, list the program line/lines and put the cursor at the start of the screen.&lt;br /&gt;
&lt;br /&gt;
A CLS value of 9 to 255 will cold start the computer. We suspect that this is a bug that should eventually be fixed.&lt;br /&gt;
&lt;br /&gt;
A CLS value greater than 255 will cause an ?FC error.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Advanced Color BASIC - added ROM vector calls ===&lt;br /&gt;
&lt;br /&gt;
Like Color BASIC and Disk BASIC, which used Extended indirect addresses to call functions within the ROM’s (like JOYIN, DSKCON, etc.), Advanced Color BASIC seems to reserve from $8000-$8015 for additional calls as well. This allows the routines themselves to move around as the ROM was updated, but calling programs would have a set point to enter them.&lt;br /&gt;
&lt;br /&gt;
[$8000] - Calls $FB00, which is a 3 entry table of LBRA instructions:&lt;br /&gt;
    LBRA  $FD32  (executes the TERM (terminal program) command, I believe)&lt;br /&gt;
    LBRA  $FB1A&lt;br /&gt;
    LBRA  $FD92&lt;br /&gt;
&lt;br /&gt;
[$8002] - Calls $FB09, which is a 1 entry table of LBRA instructions (I assume more would have&lt;br /&gt;
been added later)&lt;br /&gt;
LBRA	$FE16&lt;br /&gt;
&lt;br /&gt;
[$8004] - ??? (points to $09D4, which is in BASIC’s data area)&lt;br /&gt;
&lt;br /&gt;
[$8006] - ??? (points to $E968)&lt;br /&gt;
&lt;br /&gt;
[$8008] - ??? (points to $0ABE, which is in BASIC’s data area)&lt;br /&gt;
&lt;br /&gt;
[$800A] - ??? (points to $AD15)&lt;br /&gt;
&lt;br /&gt;
[$800C] - Call $9254, which checks the 6551 initialized flag (&amp;gt;$0A04). If it is 0 (not initialized), it will initialize the 6551 &amp;amp; it’s related variables including 128 byte receive buffer. If not, it just returns.&lt;br /&gt;
&lt;br /&gt;
[$800E] - ??? (points to $929D)&lt;br /&gt;
&lt;br /&gt;
[$8010] - ??? (points to $DE28)&lt;br /&gt;
&lt;br /&gt;
[$8012] - Calls $92E7, which will return a character from the 128 byte RS232 receive buffer, OR wait for an RS232 character to be received if the buffer is empty.&lt;br /&gt;
&lt;br /&gt;
[$8014] - Calls $92BD, which will transmit a character through the RS232.&lt;/div&gt;</description>
			<pubDate>Sat, 02 Mar 2024 19:34:43 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Advanced_Color_BASIC_Documentation</comments>
		</item>
		<item>
			<title>Deluxe Color Computer</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Deluxe_Color_Computer&amp;diff=10807</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Deluxe_Color_Computer&amp;diff=10807</guid>
			<description>&lt;p&gt;Tlindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Deluxe Color Computer =&lt;br /&gt;
&lt;br /&gt;
== Pre-Production Boards ==&lt;br /&gt;
&lt;br /&gt;
Three pre-production (PP) boards for the canceled Deluxe Color Computer exist:&lt;br /&gt;
* Boisy Pitre has gathered two of the Deluxe pre-production boards, one from John Prickett and one from Greg Zumwalt which did not have Advanced or Deluxe ROMs.&lt;br /&gt;
* Brian Weiseler has Robert Kilgus&#039; Deluxe with Advanced Color BASIC 00.00.07 ROMs intact&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The Deluxe Color Computer upgrades the [[Color Computer 2]] to include new hardware and software features&lt;br /&gt;
* Motorola 6847 T1 Video Display Generator (VDG) with true lowercase and lowercase descender characters&lt;br /&gt;
* General Instruments AY-3-8913 Programmable Sound Generator the same as [[Speech/Sound Cartridge (26-3144A)]], [[Symphony-12]], [[Philharmonic-12]], or [[CoCo PSG]]&lt;br /&gt;
* American Megatrends (AMI) S6551P Asynchronous Communication Interface Adapter (ACIA) the same as used in the [[Deluxe RS232 Pak]]&lt;br /&gt;
* Additional circuitry for 60Hz timer interrupts&lt;br /&gt;
* Additional color burst control&lt;br /&gt;
* Additional address decoding to make the PSG and S6551 into the CoCo memory map&lt;br /&gt;
==== Memory Map ====&lt;br /&gt;
* $FF00 - $FF1F - PIA 0&lt;br /&gt;
* $FF20 - $FF2F - PIA 1&lt;br /&gt;
* $FF30 - Option Control Register&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Option Control Register Description&lt;br /&gt;
|-&lt;br /&gt;
! Bit Position!! Function &lt;br /&gt;
|-&lt;br /&gt;
| 0|| A14&lt;br /&gt;
|-&lt;br /&gt;
| 1|| A15&lt;br /&gt;
|-&lt;br /&gt;
| 2|| Enable above for RAM range: $4000-$7FFF&lt;br /&gt;
|-&lt;br /&gt;
| 3|| Alternate color set (blue / green alpha display)&lt;br /&gt;
|-&lt;br /&gt;
| 4|| N/A&lt;br /&gt;
|-&lt;br /&gt;
| 5|| N/A&lt;br /&gt;
|-&lt;br /&gt;
| 6|| Enable 60Hz interrupt&lt;br /&gt;
|-&lt;br /&gt;
| 7|| Enable cartridge select: 1 internal / 0 external&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Deluxe_Option_Register_Description.jpg|Option Register&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
* $FF38 AY-3-8910 Data register&lt;br /&gt;
* $FF39 AY-3-8910 Control Register Latch&lt;br /&gt;
* $FF3C SY6551 Transmit / Receive Register&lt;br /&gt;
* $FF3D SY6551 Read status registers&lt;br /&gt;
* $FF3E SY6551 Command register&lt;br /&gt;
* $FF3F SY6551 Control Register&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
The Deluxe Color Computer contains an upgraded Color BASIC which merges Color BASIC, Extended Color BASIC, and Disk Extended Color BASIC into a single 32K Advanced Color BASIC ROM image.&lt;br /&gt;
&lt;br /&gt;
Advanced Color BASIC includes a number of new features as well:&lt;br /&gt;
* [[Advanced Color BASIC Documentation]]&lt;br /&gt;
&lt;br /&gt;
[https://www.pagetable.com/?p=43 Bill Gates&#039; Easter Egg] exists in the Advanced Color BASIC as well from BF67 to BF70&lt;br /&gt;
&lt;br /&gt;
== Pictures ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Deluxe_coco_daughter_card_front.jpg|Front of daughter card&lt;br /&gt;
deluxe_coco_daughter_card_back.jpg|Back of daughter card&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</description>
			<pubDate>Thu, 22 Feb 2024 02:55:51 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Deluxe_Color_Computer</comments>
		</item>
		<item>
			<title>File:Deluxe coco daughter card back.jpg</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=File:Deluxe_coco_daughter_card_back.jpg&amp;diff=10806</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=File:Deluxe_coco_daughter_card_back.jpg&amp;diff=10806</guid>
			<description>&lt;p&gt;Tlindner: Back of the daughter card.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Back of the daughter card.&lt;/div&gt;</description>
			<pubDate>Thu, 22 Feb 2024 02:53:13 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/File_talk:Deluxe_coco_daughter_card_back.jpg</comments>
		</item>
		<item>
			<title>File:Deluxe coco daughter card front.jpg</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=File:Deluxe_coco_daughter_card_front.jpg&amp;diff=10805</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=File:Deluxe_coco_daughter_card_front.jpg&amp;diff=10805</guid>
			<description>&lt;p&gt;Tlindner: Picture of the front of the daughter card.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Picture of the front of the daughter card.&lt;/div&gt;</description>
			<pubDate>Thu, 22 Feb 2024 02:51:39 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/File_talk:Deluxe_coco_daughter_card_front.jpg</comments>
		</item>
		<item>
			<title>Deluxe Color Computer</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Deluxe_Color_Computer&amp;diff=10804</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Deluxe_Color_Computer&amp;diff=10804</guid>
			<description>&lt;p&gt;Tlindner: /* Memory Map */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Deluxe Color Computer =&lt;br /&gt;
&lt;br /&gt;
== Pre-Production Boards ==&lt;br /&gt;
&lt;br /&gt;
Three pre-production (PP) boards for the canceled Deluxe Color Computer exist:&lt;br /&gt;
* Boisy Pitre has gathered two of the Deluxe pre-production boards, one from John Prickett and one from Greg Zumwalt which did not have Advanced or Deluxe ROMs.&lt;br /&gt;
* Brian Weiseler has Robert Kilgus&#039; Deluxe with Advanced Color BASIC 00.00.07 ROMs intact&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The Deluxe Color Computer upgrades the [[Color Computer 2]] to include new hardware and software features&lt;br /&gt;
* Motorola 6847 T1 Video Display Generator (VDG) with true lowercase and lowercase descender characters&lt;br /&gt;
* General Instruments AY-3-8913 Programmable Sound Generator the same as [[Speech/Sound Cartridge (26-3144A)]], [[Symphony-12]], [[Philharmonic-12]], or [[CoCo PSG]]&lt;br /&gt;
* American Megatrends (AMI) S6551P Asynchronous Communication Interface Adapter (ACIA) the same as used in the [[Deluxe RS232 Pak]]&lt;br /&gt;
* Additional circuitry for 60Hz timer interrupts&lt;br /&gt;
* Additional color burst control&lt;br /&gt;
* Additional address decoding to make the PSG and S6551 into the CoCo memory map&lt;br /&gt;
==== Memory Map ====&lt;br /&gt;
* $FF00 - $FF1F - PIA 0&lt;br /&gt;
* $FF20 - $FF2F - PIA 1&lt;br /&gt;
* $FF30 - Option Control Register&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Option Control Register Description&lt;br /&gt;
|-&lt;br /&gt;
! Bit Position!! Function &lt;br /&gt;
|-&lt;br /&gt;
| 0|| A14&lt;br /&gt;
|-&lt;br /&gt;
| 1|| A15&lt;br /&gt;
|-&lt;br /&gt;
| 2|| Enable above for RAM range: $4000-$7FFF&lt;br /&gt;
|-&lt;br /&gt;
| 3|| Alternate color set (blue / green alpha display)&lt;br /&gt;
|-&lt;br /&gt;
| 4|| N/A&lt;br /&gt;
|-&lt;br /&gt;
| 5|| N/A&lt;br /&gt;
|-&lt;br /&gt;
| 6|| Enable 60Hz interrupt&lt;br /&gt;
|-&lt;br /&gt;
| 7|| Enable cartridge select: 1 internal / 0 external&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Deluxe_Option_Register_Description.jpg|Option Register&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
* $FF38 AY-3-8910 Data register&lt;br /&gt;
* $FF39 AY-3-8910 Control Register Latch&lt;br /&gt;
* $FF3C SY6551 Transmit / Receive Register&lt;br /&gt;
* $FF3D SY6551 Read status registers&lt;br /&gt;
* $FF3E SY6551 Command register&lt;br /&gt;
* $FF3F SY6551 Control Register&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
The Deluxe Color Computer contains an upgraded Color BASIC which merges Color BASIC, Extended Color BASIC, and Disk Extended Color BASIC into a single 32K Advanced Color BASIC ROM image.&lt;br /&gt;
&lt;br /&gt;
Advanced Color BASIC includes a number of new features as well:&lt;br /&gt;
* [[Advanced Color BASIC Documentation]]&lt;br /&gt;
&lt;br /&gt;
[https://www.pagetable.com/?p=43 Bill Gates&#039; Easter Egg] exists in the Advanced Color BASIC as well from BF67 to BF70&lt;/div&gt;</description>
			<pubDate>Wed, 21 Feb 2024 06:29:57 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Deluxe_Color_Computer</comments>
		</item>
		<item>
			<title>File:Deluxe Option Register Description.jpg</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=File:Deluxe_Option_Register_Description.jpg&amp;diff=10803</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=File:Deluxe_Option_Register_Description.jpg&amp;diff=10803</guid>
			<description>&lt;p&gt;Tlindner: Handwritten note to Robert Kilgus about the Deluxe option register.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Handwritten note to Robert Kilgus about the Deluxe option register.&lt;/div&gt;</description>
			<pubDate>Wed, 21 Feb 2024 06:28:44 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/File_talk:Deluxe_Option_Register_Description.jpg</comments>
		</item>
		<item>
			<title>Advanced Color BASIC Documentation</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10799</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10799</guid>
			<description>&lt;p&gt;Tlindner: /* INPUT$(count, device) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Advanced Color BASIC - New and updated features explained ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
This document explains the version 0.0.7 of Advanced Color BASIC ROM found late in 2023.&amp;lt;br&amp;gt;&lt;br /&gt;
It is from Robert Killgus&#039; collection.&amp;lt;br&amp;gt;&lt;br /&gt;
This is a very early version of the software and eventually became Deluxe Color BASIC.&lt;br /&gt;
&lt;br /&gt;
=== Allows lowercase characters in keywords. ===&lt;br /&gt;
&lt;br /&gt;
=== Full screen editor is always available. ===&lt;br /&gt;
Hold alternate and arrow keys to move the cursor around.&lt;br /&gt;
Alternate and &#039;I&#039; will insert a space and move the characters after the cursor to the right one space.&lt;br /&gt;
Alternate and &#039;D&#039; will delete the character under the cursor and shift the remaining characters to the left.&lt;br /&gt;
Alternate and &#039;E&#039; will delete the characters after the cursor to the end of the line.&lt;br /&gt;
Alternate and ‘H” will move the cursor to the top left corner of the screen.&lt;br /&gt;
Right Arrow (without the alternate key) will move the cursor right 9 spaces.&lt;br /&gt;
The break key will abort editing and put the cursor at the bottom left of the screen.&lt;br /&gt;
Press the enter key to commit an edited line. You do not have to be at the end of a line.&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-3. ===&lt;br /&gt;
Sends and receives data to/from the new serial port.&lt;br /&gt;
Uses:&lt;br /&gt;
PRINT #-3, &amp;quot;HELLO WORLD&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-4 - tbd ===&lt;br /&gt;
&lt;br /&gt;
=== RAM Disk ===&lt;br /&gt;
Drive 4 is a RAM Disk. It has 12 granules available. It is available even if there is no disk cartridge inserted.&lt;br /&gt;
&lt;br /&gt;
If a disk cartridge is inserted on cold boot, you are presented with a menu option to go to BASIC or &amp;quot;Disk&amp;quot;. If you choose &amp;quot;Disk&amp;quot; the equivalent of a DOS command is executed.&lt;br /&gt;
&lt;br /&gt;
== New commands ==&lt;br /&gt;
&lt;br /&gt;
=== ERROR &amp;lt;value&amp;gt; ===&lt;br /&gt;
Will cause the computer to stop the program and issue the respective error.&lt;br /&gt;
&lt;br /&gt;
=== RESUME &amp;lt;line number&amp;gt; ===&lt;br /&gt;
Resumes a program at line number from the error handler.&lt;br /&gt;
&lt;br /&gt;
=== WHILE &amp;lt;boolean expression&amp;gt; / WEND ===&lt;br /&gt;
This is a loop construct that will execute the statements between WHILE and WEND repeatedly until the boolean expression is false.&lt;br /&gt;
&lt;br /&gt;
=== TONE channel, toneperiod, amplitude ===&lt;br /&gt;
channel: 1-3&lt;br /&gt;
toneperiod: 0-4095&lt;br /&gt;
amplitude: 0-15&lt;br /&gt;
&lt;br /&gt;
=== NOISE channel,noiseperiod,amplitude ===&lt;br /&gt;
channel: 1-3&lt;br /&gt;
noiseperiod: 0-31&lt;br /&gt;
amplitude 0-15&lt;br /&gt;
&lt;br /&gt;
=== ENV param1,param2,param3,param4,param5 ===&lt;br /&gt;
TBD 5 numeric parameters 0-65535 allowed &lt;br /&gt;
&lt;br /&gt;
TONE 1,2048,15 &#039; start tone 2048 on channel 1 at max volume&lt;br /&gt;
NOISE 2,31,15 &#039; start noise 31 on channel 2 at max volume&lt;br /&gt;
NOISE 2,0 &#039; stop noise on channel 2&lt;br /&gt;
TONE 1,0,0 &#039; stop tone on channel 1&lt;br /&gt;
SOUND command unaltered&lt;br /&gt;
TBD determine if PLAY command supports 3-voice like N60 BASIC (also by Microsoft) does&lt;br /&gt;
&lt;br /&gt;
=== CHAIN - tbd. ===&lt;br /&gt;
&lt;br /&gt;
=== COMMON ===&lt;br /&gt;
Restrictive comment. For Example:&lt;br /&gt;
10 COMMON This is a comment : PRINT “HELLO WORLD”&lt;br /&gt;
The text after the COMMON command will not be executed, but the command after the colon will. This is different from REM&lt;br /&gt;
10 REM This is a comment : PRINT “HELLO WORLD”&lt;br /&gt;
The REM command will cause everything to be ignored on the whole line.&lt;br /&gt;
&lt;br /&gt;
=== TERM ===&lt;br /&gt;
Executes the ROM based terminal program (the cursor changes from a blinking black one to a blinking blue one to let the user know that they are in terminal mode). Further details on commands within the terminal programming coming soon.&lt;br /&gt;
&lt;br /&gt;
=== CONFIG ===&lt;br /&gt;
Configures the UART Serial port:&amp;lt;br&amp;gt;&lt;br /&gt;
CONFIG #-3,[1-15],[1-5],[5-8],[1-2]&amp;lt;br&amp;gt;&lt;br /&gt;
==== First parameter: ====&lt;br /&gt;
BAUD&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 = 50&lt;br /&gt;
* 2 = 75&lt;br /&gt;
* 3 = 109.92&lt;br /&gt;
* 4 = 135.56&lt;br /&gt;
* 5 = 150&lt;br /&gt;
* 6 = 300&lt;br /&gt;
* 7 = 600&lt;br /&gt;
* 8 = 1,200&lt;br /&gt;
* 9 = 1,800&lt;br /&gt;
* 10 = 2,400&lt;br /&gt;
* 11 = 3,600&lt;br /&gt;
* 12 = 4,800&lt;br /&gt;
* 13 = 7,200&lt;br /&gt;
* 14 = 9,600&lt;br /&gt;
* 15 = 19,200&lt;br /&gt;
Default: 6&lt;br /&gt;
&lt;br /&gt;
==== Second Parameter: ====&lt;br /&gt;
Sent to 6551 command register&amp;lt;br&amp;gt;&lt;br /&gt;
* 1: $09 00001001 - No Parity&lt;br /&gt;
* 2: $29 00101001 - Odd Parity&lt;br /&gt;
* 3: $69 01101001 - Even Parity&lt;br /&gt;
* 4: $A9 10101001 - Mark Parity&lt;br /&gt;
* 5: $E9 11101001 - Space Parity&lt;br /&gt;
* Transmit interrupt disabled&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
==== Third parameter: ====&lt;br /&gt;
Data word length, 5 to 8.&lt;br /&gt;
* Default: 8&lt;br /&gt;
&lt;br /&gt;
==== Fourth parameter: ====&lt;br /&gt;
Stop Bits&lt;br /&gt;
* 1 = 1 stop bit&lt;br /&gt;
* 2 = 2 stop bits&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
=== MAPMODE &amp;lt;value&amp;gt; ===&lt;br /&gt;
If the value is 0, the Color Computer is set to 0.89 MHz for the entire address space.&lt;br /&gt;
If the value is 1, the Color Computer is set to 1.78 MHz speed when reading from ROM, and 0.89 MHz when reading or writing to RAM.&lt;br /&gt;
&lt;br /&gt;
=== XOR ===&lt;br /&gt;
The exclusive or operator is true if 1 (and only 1) input is true, otherwise it is false.&amp;lt;br&amp;gt;&lt;br /&gt;
This is used in the same sense as AND and OR in if/then statements:&lt;br /&gt;
  IF A XOR B THEN 40&lt;br /&gt;
It is also use like AND and OR in bit wise expressions:&lt;br /&gt;
  C = A XOR B&lt;br /&gt;
&lt;br /&gt;
=== ERR ===&lt;br /&gt;
Variable that contains the last error number.&lt;br /&gt;
&lt;br /&gt;
=== ERL ===&lt;br /&gt;
Variable that contains the line number where the last error occurred.&lt;br /&gt;
&lt;br /&gt;
=== TIME ===&lt;br /&gt;
Returns the current value for the 24 bit timer (the old Extended BASIC &amp;quot;TIMER&amp;quot; still works as a 16 bit timer).&amp;lt;br&amp;gt;&lt;br /&gt;
This counter increments 60 times per second and rolls over at 24 hours.&lt;br /&gt;
&lt;br /&gt;
=== TIME$ ===&lt;br /&gt;
Will either return the current 24 hour clock value, or set the 24 hour clock value, using a string format. The string format is &amp;quot;HH:MM:SS&amp;quot;, in 24 hour time format, so HH can be 0 to 23, MM can be 0 to 59, and SS can be 0 to 59.&lt;br /&gt;
Examples:&lt;br /&gt;
  A$=TIME$&lt;br /&gt;
  TIME$=&amp;quot;13:25:00&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== STRIG(button) ===&lt;br /&gt;
This function returns the state of one of the four joystick buttons. Negative 1 if pressed, zero if not pressed.&amp;lt;br&amp;gt;&lt;br /&gt;
Button numbers 1, 3, 5, 7 return the real time value of the button state. This allows rapid fire with the button held down.&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 - Left joystick button 1&lt;br /&gt;
* 3 - Left joystick button 2&lt;br /&gt;
* 5 - Right joystick button 1&lt;br /&gt;
* 7 - Right joystick button 2&lt;br /&gt;
Button numbers 0, 2, 4, 6 return -1 if the button was pressed since the last time this function was called.&amp;lt;br&amp;gt;&lt;br /&gt;
It will then return 0 as long as the button is held down. A new button press will be required to get another -1. This is for single shot fire - the user needs to let go and press the button again in order to fire again.&lt;br /&gt;
* 0 - Left joystick button 1&lt;br /&gt;
* 2 - Left joystick button 2&lt;br /&gt;
* 4 - Right joystick button 1&lt;br /&gt;
* 6 - Right joystick button 2&lt;br /&gt;
&lt;br /&gt;
=== INPUT$(count, device) ===&lt;br /&gt;
Used to scan an input device and accumulate a string:&lt;br /&gt;
  10 A$=INPUT$(3,#0)&lt;br /&gt;
  20 ? A$&lt;br /&gt;
Will pause the program and wait for three key presses. They are put into A$. This will support cassette, serial and disk file I/O.&lt;br /&gt;
&lt;br /&gt;
=== ON ERROR GOTO &amp;lt;line number&amp;gt; ===&lt;br /&gt;
BASIC will jump to line number when an error is encountered. ERL and ERR will contain the line number with the error and the numeric error code, respectively.&lt;br /&gt;
&lt;br /&gt;
== Changed Commands: ==&lt;br /&gt;
&lt;br /&gt;
The EDIT will now accept a single line number or a range. The command will clear the screen, list the program line/lines and put the cursor at the start of the screen.&lt;br /&gt;
&lt;br /&gt;
A CLS value of 9 to 255 will cold start the computer. We suspect that this is a bug that should eventually be fixed.&lt;br /&gt;
&lt;br /&gt;
A CLS value greater than 255 will cause an ?FC error.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Advanced Color BASIC - added ROM vector calls ===&lt;br /&gt;
&lt;br /&gt;
Like Color BASIC and Disk BASIC, which used Extended indirect addresses to call functions within the ROM’s (like JOYIN, DSKCON, etc.), Advanced Color BASIC seems to reserve from $8000-$8015 for additional calls as well. This allows the routines themselves to move around as the ROM was updated, but calling programs would have a set point to enter them.&lt;br /&gt;
&lt;br /&gt;
[$8000] - Calls $FB00, which is a 3 entry table of LBRA instructions:&lt;br /&gt;
    LBRA  $FD32&lt;br /&gt;
    LBRA  $FB1A&lt;br /&gt;
    LBRA  $FD92&lt;br /&gt;
&lt;br /&gt;
[$8002] - Calls $FB09, which is a 1 entry table of LBRA instructions (I assume more would have&lt;br /&gt;
been added later)&lt;br /&gt;
LBRA	$FE16&lt;br /&gt;
&lt;br /&gt;
[$8004] - ??? (points to $09D4, which is in BASIC’s data area)&lt;br /&gt;
&lt;br /&gt;
[$8006] - ??? (points to $E968)&lt;br /&gt;
&lt;br /&gt;
[$8008] - ??? (points to $0ABE, which is in BASIC’s data area)&lt;br /&gt;
&lt;br /&gt;
[$800A] - ??? (points to $AD15)&lt;br /&gt;
&lt;br /&gt;
[$800C] - Call $9254, which checks the 6551 initialized flag (&amp;gt;$0A04). If it is 0 (not initialized), it will initialize the 6551 &amp;amp; it’s related variables including 128 byte receive buffer. If not, it just returns.&lt;br /&gt;
&lt;br /&gt;
[$800E] - ??? (points to $929D)&lt;br /&gt;
&lt;br /&gt;
[$8010] - ??? (points to $DE28)&lt;br /&gt;
&lt;br /&gt;
[$8012] - Calls $92E7, which will return a character from the 128 byte RS232 receive buffer, OR wait for an RS232 character to be received if the buffer is empty.&lt;br /&gt;
&lt;br /&gt;
[$8014] - Calls $92BD, which will transmit a character through the RS232.&lt;/div&gt;</description>
			<pubDate>Mon, 19 Feb 2024 02:24:08 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Advanced_Color_BASIC_Documentation</comments>
		</item>
		<item>
			<title>Advanced Color BASIC Documentation</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10798</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10798</guid>
			<description>&lt;p&gt;Tlindner: /* XOR */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Advanced Color BASIC - New and updated features explained ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
This document explains the version 0.0.7 of Advanced Color BASIC ROM found late in 2023.&amp;lt;br&amp;gt;&lt;br /&gt;
It is from Robert Killgus&#039; collection.&amp;lt;br&amp;gt;&lt;br /&gt;
This is a very early version of the software and eventually became Deluxe Color BASIC.&lt;br /&gt;
&lt;br /&gt;
=== Allows lowercase characters in keywords. ===&lt;br /&gt;
&lt;br /&gt;
=== Full screen editor is always available. ===&lt;br /&gt;
Hold alternate and arrow keys to move the cursor around.&lt;br /&gt;
Alternate and &#039;I&#039; will insert a space and move the characters after the cursor to the right one space.&lt;br /&gt;
Alternate and &#039;D&#039; will delete the character under the cursor and shift the remaining characters to the left.&lt;br /&gt;
Alternate and &#039;E&#039; will delete the characters after the cursor to the end of the line.&lt;br /&gt;
Alternate and ‘H” will move the cursor to the top left corner of the screen.&lt;br /&gt;
Right Arrow (without the alternate key) will move the cursor right 9 spaces.&lt;br /&gt;
The break key will abort editing and put the cursor at the bottom left of the screen.&lt;br /&gt;
Press the enter key to commit an edited line. You do not have to be at the end of a line.&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-3. ===&lt;br /&gt;
Sends and receives data to/from the new serial port.&lt;br /&gt;
Uses:&lt;br /&gt;
PRINT #-3, &amp;quot;HELLO WORLD&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-4 - tbd ===&lt;br /&gt;
&lt;br /&gt;
=== RAM Disk ===&lt;br /&gt;
Drive 4 is a RAM Disk. It has 12 granules available. It is available even if there is no disk cartridge inserted.&lt;br /&gt;
&lt;br /&gt;
If a disk cartridge is inserted on cold boot, you are presented with a menu option to go to BASIC or &amp;quot;Disk&amp;quot;. If you choose &amp;quot;Disk&amp;quot; the equivalent of a DOS command is executed.&lt;br /&gt;
&lt;br /&gt;
== New commands ==&lt;br /&gt;
&lt;br /&gt;
=== ERROR &amp;lt;value&amp;gt; ===&lt;br /&gt;
Will cause the computer to stop the program and issue the respective error.&lt;br /&gt;
&lt;br /&gt;
=== RESUME &amp;lt;line number&amp;gt; ===&lt;br /&gt;
Resumes a program at line number from the error handler.&lt;br /&gt;
&lt;br /&gt;
=== WHILE &amp;lt;boolean expression&amp;gt; / WEND ===&lt;br /&gt;
This is a loop construct that will execute the statements between WHILE and WEND repeatedly until the boolean expression is false.&lt;br /&gt;
&lt;br /&gt;
=== TONE channel, toneperiod, amplitude ===&lt;br /&gt;
channel: 1-3&lt;br /&gt;
toneperiod: 0-4095&lt;br /&gt;
amplitude: 0-15&lt;br /&gt;
&lt;br /&gt;
=== NOISE channel,noiseperiod,amplitude ===&lt;br /&gt;
channel: 1-3&lt;br /&gt;
noiseperiod: 0-31&lt;br /&gt;
amplitude 0-15&lt;br /&gt;
&lt;br /&gt;
=== ENV param1,param2,param3,param4,param5 ===&lt;br /&gt;
TBD 5 numeric parameters 0-65535 allowed &lt;br /&gt;
&lt;br /&gt;
TONE 1,2048,15 &#039; start tone 2048 on channel 1 at max volume&lt;br /&gt;
NOISE 2,31,15 &#039; start noise 31 on channel 2 at max volume&lt;br /&gt;
NOISE 2,0 &#039; stop noise on channel 2&lt;br /&gt;
TONE 1,0,0 &#039; stop tone on channel 1&lt;br /&gt;
SOUND command unaltered&lt;br /&gt;
TBD determine if PLAY command supports 3-voice like N60 BASIC (also by Microsoft) does&lt;br /&gt;
&lt;br /&gt;
=== CHAIN - tbd. ===&lt;br /&gt;
&lt;br /&gt;
=== COMMON ===&lt;br /&gt;
Restrictive comment. For Example:&lt;br /&gt;
10 COMMON This is a comment : PRINT “HELLO WORLD”&lt;br /&gt;
The text after the COMMON command will not be executed, but the command after the colon will. This is different from REM&lt;br /&gt;
10 REM This is a comment : PRINT “HELLO WORLD”&lt;br /&gt;
The REM command will cause everything to be ignored on the whole line.&lt;br /&gt;
&lt;br /&gt;
=== TERM ===&lt;br /&gt;
Executes the ROM based terminal program (the cursor changes from a blinking black one to a blinking blue one to let the user know that they are in terminal mode). Further details on commands within the terminal programming coming soon.&lt;br /&gt;
&lt;br /&gt;
=== CONFIG ===&lt;br /&gt;
Configures the UART Serial port:&amp;lt;br&amp;gt;&lt;br /&gt;
CONFIG #-3,[1-15],[1-5],[5-8],[1-2]&amp;lt;br&amp;gt;&lt;br /&gt;
==== First parameter: ====&lt;br /&gt;
BAUD&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 = 50&lt;br /&gt;
* 2 = 75&lt;br /&gt;
* 3 = 109.92&lt;br /&gt;
* 4 = 135.56&lt;br /&gt;
* 5 = 150&lt;br /&gt;
* 6 = 300&lt;br /&gt;
* 7 = 600&lt;br /&gt;
* 8 = 1,200&lt;br /&gt;
* 9 = 1,800&lt;br /&gt;
* 10 = 2,400&lt;br /&gt;
* 11 = 3,600&lt;br /&gt;
* 12 = 4,800&lt;br /&gt;
* 13 = 7,200&lt;br /&gt;
* 14 = 9,600&lt;br /&gt;
* 15 = 19,200&lt;br /&gt;
Default: 6&lt;br /&gt;
&lt;br /&gt;
==== Second Parameter: ====&lt;br /&gt;
Sent to 6551 command register&amp;lt;br&amp;gt;&lt;br /&gt;
* 1: $09 00001001 - No Parity&lt;br /&gt;
* 2: $29 00101001 - Odd Parity&lt;br /&gt;
* 3: $69 01101001 - Even Parity&lt;br /&gt;
* 4: $A9 10101001 - Mark Parity&lt;br /&gt;
* 5: $E9 11101001 - Space Parity&lt;br /&gt;
* Transmit interrupt disabled&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
==== Third parameter: ====&lt;br /&gt;
Data word length, 5 to 8.&lt;br /&gt;
* Default: 8&lt;br /&gt;
&lt;br /&gt;
==== Fourth parameter: ====&lt;br /&gt;
Stop Bits&lt;br /&gt;
* 1 = 1 stop bit&lt;br /&gt;
* 2 = 2 stop bits&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
=== MAPMODE &amp;lt;value&amp;gt; ===&lt;br /&gt;
If the value is 0, the Color Computer is set to 0.89 MHz for the entire address space.&lt;br /&gt;
If the value is 1, the Color Computer is set to 1.78 MHz speed when reading from ROM, and 0.89 MHz when reading or writing to RAM.&lt;br /&gt;
&lt;br /&gt;
=== XOR ===&lt;br /&gt;
The exclusive or operator is true if 1 (and only 1) input is true, otherwise it is false.&amp;lt;br&amp;gt;&lt;br /&gt;
This is used in the same sense as AND and OR in if/then statements:&lt;br /&gt;
  IF A XOR B THEN 40&lt;br /&gt;
It is also use like AND and OR in bit wise expressions:&lt;br /&gt;
  C = A XOR B&lt;br /&gt;
&lt;br /&gt;
=== ERR ===&lt;br /&gt;
Variable that contains the last error number.&lt;br /&gt;
&lt;br /&gt;
=== ERL ===&lt;br /&gt;
Variable that contains the line number where the last error occurred.&lt;br /&gt;
&lt;br /&gt;
=== TIME ===&lt;br /&gt;
Returns the current value for the 24 bit timer (the old Extended BASIC &amp;quot;TIMER&amp;quot; still works as a 16 bit timer).&amp;lt;br&amp;gt;&lt;br /&gt;
This counter increments 60 times per second and rolls over at 24 hours.&lt;br /&gt;
&lt;br /&gt;
=== TIME$ ===&lt;br /&gt;
Will either return the current 24 hour clock value, or set the 24 hour clock value, using a string format. The string format is &amp;quot;HH:MM:SS&amp;quot;, in 24 hour time format, so HH can be 0 to 23, MM can be 0 to 59, and SS can be 0 to 59.&lt;br /&gt;
Examples:&lt;br /&gt;
  A$=TIME$&lt;br /&gt;
  TIME$=&amp;quot;13:25:00&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== STRIG(button) ===&lt;br /&gt;
This function returns the state of one of the four joystick buttons. Negative 1 if pressed, zero if not pressed.&amp;lt;br&amp;gt;&lt;br /&gt;
Button numbers 1, 3, 5, 7 return the real time value of the button state. This allows rapid fire with the button held down.&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 - Left joystick button 1&lt;br /&gt;
* 3 - Left joystick button 2&lt;br /&gt;
* 5 - Right joystick button 1&lt;br /&gt;
* 7 - Right joystick button 2&lt;br /&gt;
Button numbers 0, 2, 4, 6 return -1 if the button was pressed since the last time this function was called.&amp;lt;br&amp;gt;&lt;br /&gt;
It will then return 0 as long as the button is held down. A new button press will be required to get another -1. This is for single shot fire - the user needs to let go and press the button again in order to fire again.&lt;br /&gt;
* 0 - Left joystick button 1&lt;br /&gt;
* 2 - Left joystick button 2&lt;br /&gt;
* 4 - Right joystick button 1&lt;br /&gt;
* 6 - Right joystick button 2&lt;br /&gt;
&lt;br /&gt;
=== INPUT$(count, device) ===&lt;br /&gt;
Used to scan an input device and accumulate a string:&lt;br /&gt;
10 A$=INPUT$(3,#0)&lt;br /&gt;
20 ? A$&lt;br /&gt;
Will pause the program and wait for three keypresses. They are put into A$.&lt;br /&gt;
&lt;br /&gt;
=== ON ERROR GOTO &amp;lt;line number&amp;gt; ===&lt;br /&gt;
BASIC will jump to line number when an error is encountered. ERL and ERR will contain the line number with the error and the numeric error code, respectively.&lt;br /&gt;
&lt;br /&gt;
== Changed Commands: ==&lt;br /&gt;
&lt;br /&gt;
The EDIT will now accept a single line number or a range. The command will clear the screen, list the program line/lines and put the cursor at the start of the screen.&lt;br /&gt;
&lt;br /&gt;
A CLS value of 9 to 255 will cold start the computer. We suspect that this is a bug that should eventually be fixed.&lt;br /&gt;
&lt;br /&gt;
A CLS value greater than 255 will cause an ?FC error.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Advanced Color BASIC - added ROM vector calls ===&lt;br /&gt;
&lt;br /&gt;
Like Color BASIC and Disk BASIC, which used Extended indirect addresses to call functions within the ROM’s (like JOYIN, DSKCON, etc.), Advanced Color BASIC seems to reserve from $8000-$8015 for additional calls as well. This allows the routines themselves to move around as the ROM was updated, but calling programs would have a set point to enter them.&lt;br /&gt;
&lt;br /&gt;
[$8000] - Calls $FB00, which is a 3 entry table of LBRA instructions:&lt;br /&gt;
    LBRA  $FD32&lt;br /&gt;
    LBRA  $FB1A&lt;br /&gt;
    LBRA  $FD92&lt;br /&gt;
&lt;br /&gt;
[$8002] - Calls $FB09, which is a 1 entry table of LBRA instructions (I assume more would have&lt;br /&gt;
been added later)&lt;br /&gt;
LBRA	$FE16&lt;br /&gt;
&lt;br /&gt;
[$8004] - ??? (points to $09D4, which is in BASIC’s data area)&lt;br /&gt;
&lt;br /&gt;
[$8006] - ??? (points to $E968)&lt;br /&gt;
&lt;br /&gt;
[$8008] - ??? (points to $0ABE, which is in BASIC’s data area)&lt;br /&gt;
&lt;br /&gt;
[$800A] - ??? (points to $AD15)&lt;br /&gt;
&lt;br /&gt;
[$800C] - Call $9254, which checks the 6551 initialized flag (&amp;gt;$0A04). If it is 0 (not initialized), it will initialize the 6551 &amp;amp; it’s related variables including 128 byte receive buffer. If not, it just returns.&lt;br /&gt;
&lt;br /&gt;
[$800E] - ??? (points to $929D)&lt;br /&gt;
&lt;br /&gt;
[$8010] - ??? (points to $DE28)&lt;br /&gt;
&lt;br /&gt;
[$8012] - Calls $92E7, which will return a character from the 128 byte RS232 receive buffer, OR wait for an RS232 character to be received if the buffer is empty.&lt;br /&gt;
&lt;br /&gt;
[$8014] - Calls $92BD, which will transmit a character through the RS232.&lt;/div&gt;</description>
			<pubDate>Mon, 19 Feb 2024 02:20:42 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Advanced_Color_BASIC_Documentation</comments>
		</item>
		<item>
			<title>Advanced Color BASIC Documentation</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10797</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10797</guid>
			<description>&lt;p&gt;Tlindner: /* First parameter: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Advanced Color BASIC - New and updated features explained ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
This document explains the version 0.0.7 of Advanced Color BASIC ROM found late in 2023.&amp;lt;br&amp;gt;&lt;br /&gt;
It is from Robert Killgus&#039; collection.&amp;lt;br&amp;gt;&lt;br /&gt;
This is a very early version of the software and eventually became Deluxe Color BASIC.&lt;br /&gt;
&lt;br /&gt;
=== Allows lowercase characters in keywords. ===&lt;br /&gt;
&lt;br /&gt;
=== Full screen editor is always available. ===&lt;br /&gt;
Hold alternate and arrow keys to move the cursor around.&lt;br /&gt;
Alternate and &#039;I&#039; will insert a space and move the characters after the cursor to the right one space.&lt;br /&gt;
Alternate and &#039;D&#039; will delete the character under the cursor and shift the remaining characters to the left.&lt;br /&gt;
Alternate and &#039;E&#039; will delete the characters after the cursor to the end of the line.&lt;br /&gt;
Alternate and ‘H” will move the cursor to the top left corner of the screen.&lt;br /&gt;
Right Arrow (without the alternate key) will move the cursor right 9 spaces.&lt;br /&gt;
The break key will abort editing and put the cursor at the bottom left of the screen.&lt;br /&gt;
Press the enter key to commit an edited line. You do not have to be at the end of a line.&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-3. ===&lt;br /&gt;
Sends and receives data to/from the new serial port.&lt;br /&gt;
Uses:&lt;br /&gt;
PRINT #-3, &amp;quot;HELLO WORLD&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-4 - tbd ===&lt;br /&gt;
&lt;br /&gt;
=== RAM Disk ===&lt;br /&gt;
Drive 4 is a RAM Disk. It has 12 granules available. It is available even if there is no disk cartridge inserted.&lt;br /&gt;
&lt;br /&gt;
If a disk cartridge is inserted on cold boot, you are presented with a menu option to go to BASIC or &amp;quot;Disk&amp;quot;. If you choose &amp;quot;Disk&amp;quot; the equivalent of a DOS command is executed.&lt;br /&gt;
&lt;br /&gt;
== New commands ==&lt;br /&gt;
&lt;br /&gt;
=== ERROR &amp;lt;value&amp;gt; ===&lt;br /&gt;
Will cause the computer to stop the program and issue the respective error.&lt;br /&gt;
&lt;br /&gt;
=== RESUME &amp;lt;line number&amp;gt; ===&lt;br /&gt;
Resumes a program at line number from the error handler.&lt;br /&gt;
&lt;br /&gt;
=== WHILE &amp;lt;boolean expression&amp;gt; / WEND ===&lt;br /&gt;
This is a loop construct that will execute the statements between WHILE and WEND repeatedly until the boolean expression is false.&lt;br /&gt;
&lt;br /&gt;
=== TONE channel, toneperiod, amplitude ===&lt;br /&gt;
channel: 1-3&lt;br /&gt;
toneperiod: 0-4095&lt;br /&gt;
amplitude: 0-15&lt;br /&gt;
&lt;br /&gt;
=== NOISE channel,noiseperiod,amplitude ===&lt;br /&gt;
channel: 1-3&lt;br /&gt;
noiseperiod: 0-31&lt;br /&gt;
amplitude 0-15&lt;br /&gt;
&lt;br /&gt;
=== ENV param1,param2,param3,param4,param5 ===&lt;br /&gt;
TBD 5 numeric parameters 0-65535 allowed &lt;br /&gt;
&lt;br /&gt;
TONE 1,2048,15 &#039; start tone 2048 on channel 1 at max volume&lt;br /&gt;
NOISE 2,31,15 &#039; start noise 31 on channel 2 at max volume&lt;br /&gt;
NOISE 2,0 &#039; stop noise on channel 2&lt;br /&gt;
TONE 1,0,0 &#039; stop tone on channel 1&lt;br /&gt;
SOUND command unaltered&lt;br /&gt;
TBD determine if PLAY command supports 3-voice like N60 BASIC (also by Microsoft) does&lt;br /&gt;
&lt;br /&gt;
=== CHAIN - tbd. ===&lt;br /&gt;
&lt;br /&gt;
=== COMMON ===&lt;br /&gt;
Restrictive comment. For Example:&lt;br /&gt;
10 COMMON This is a comment : PRINT “HELLO WORLD”&lt;br /&gt;
The text after the COMMON command will not be executed, but the command after the colon will. This is different from REM&lt;br /&gt;
10 REM This is a comment : PRINT “HELLO WORLD”&lt;br /&gt;
The REM command will cause everything to be ignored on the whole line.&lt;br /&gt;
&lt;br /&gt;
=== TERM ===&lt;br /&gt;
Executes the ROM based terminal program (the cursor changes from a blinking black one to a blinking blue one to let the user know that they are in terminal mode). Further details on commands within the terminal programming coming soon.&lt;br /&gt;
&lt;br /&gt;
=== CONFIG ===&lt;br /&gt;
Configures the UART Serial port:&amp;lt;br&amp;gt;&lt;br /&gt;
CONFIG #-3,[1-15],[1-5],[5-8],[1-2]&amp;lt;br&amp;gt;&lt;br /&gt;
==== First parameter: ====&lt;br /&gt;
BAUD&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 = 50&lt;br /&gt;
* 2 = 75&lt;br /&gt;
* 3 = 109.92&lt;br /&gt;
* 4 = 135.56&lt;br /&gt;
* 5 = 150&lt;br /&gt;
* 6 = 300&lt;br /&gt;
* 7 = 600&lt;br /&gt;
* 8 = 1,200&lt;br /&gt;
* 9 = 1,800&lt;br /&gt;
* 10 = 2,400&lt;br /&gt;
* 11 = 3,600&lt;br /&gt;
* 12 = 4,800&lt;br /&gt;
* 13 = 7,200&lt;br /&gt;
* 14 = 9,600&lt;br /&gt;
* 15 = 19,200&lt;br /&gt;
Default: 6&lt;br /&gt;
&lt;br /&gt;
==== Second Parameter: ====&lt;br /&gt;
Sent to 6551 command register&amp;lt;br&amp;gt;&lt;br /&gt;
* 1: $09 00001001 - No Parity&lt;br /&gt;
* 2: $29 00101001 - Odd Parity&lt;br /&gt;
* 3: $69 01101001 - Even Parity&lt;br /&gt;
* 4: $A9 10101001 - Mark Parity&lt;br /&gt;
* 5: $E9 11101001 - Space Parity&lt;br /&gt;
* Transmit interrupt disabled&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
==== Third parameter: ====&lt;br /&gt;
Data word length, 5 to 8.&lt;br /&gt;
* Default: 8&lt;br /&gt;
&lt;br /&gt;
==== Fourth parameter: ====&lt;br /&gt;
Stop Bits&lt;br /&gt;
* 1 = 1 stop bit&lt;br /&gt;
* 2 = 2 stop bits&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
=== MAPMODE &amp;lt;value&amp;gt; ===&lt;br /&gt;
If the value is 0, the Color Computer is set to 0.89 MHz for the entire address space.&lt;br /&gt;
If the value is 1, the Color Computer is set to 1.78 MHz speed when reading from ROM, and 0.89 MHz when reading or writing to RAM.&lt;br /&gt;
&lt;br /&gt;
=== XOR ===&lt;br /&gt;
The exclusive or operator is true if 1 (and only 1) input is true, otherwise it is false.&lt;br /&gt;
This is used in the same sense as AND and OR in if/then statements:&lt;br /&gt;
IF A XOR B THEN 40&lt;br /&gt;
It is also use like AND and OR in bitwise expressions:&lt;br /&gt;
C = A XOR B&lt;br /&gt;
&lt;br /&gt;
=== ERR ===&lt;br /&gt;
Variable that contains the last error number.&lt;br /&gt;
&lt;br /&gt;
=== ERL ===&lt;br /&gt;
Variable that contains the line number where the last error occurred.&lt;br /&gt;
&lt;br /&gt;
=== TIME ===&lt;br /&gt;
Returns the current value for the 24 bit timer (the old Extended BASIC &amp;quot;TIMER&amp;quot; still works as a 16 bit timer).&amp;lt;br&amp;gt;&lt;br /&gt;
This counter increments 60 times per second and rolls over at 24 hours.&lt;br /&gt;
&lt;br /&gt;
=== TIME$ ===&lt;br /&gt;
Will either return the current 24 hour clock value, or set the 24 hour clock value, using a string format. The string format is &amp;quot;HH:MM:SS&amp;quot;, in 24 hour time format, so HH can be 0 to 23, MM can be 0 to 59, and SS can be 0 to 59.&lt;br /&gt;
Examples:&lt;br /&gt;
  A$=TIME$&lt;br /&gt;
  TIME$=&amp;quot;13:25:00&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== STRIG(button) ===&lt;br /&gt;
This function returns the state of one of the four joystick buttons. Negative 1 if pressed, zero if not pressed.&amp;lt;br&amp;gt;&lt;br /&gt;
Button numbers 1, 3, 5, 7 return the real time value of the button state. This allows rapid fire with the button held down.&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 - Left joystick button 1&lt;br /&gt;
* 3 - Left joystick button 2&lt;br /&gt;
* 5 - Right joystick button 1&lt;br /&gt;
* 7 - Right joystick button 2&lt;br /&gt;
Button numbers 0, 2, 4, 6 return -1 if the button was pressed since the last time this function was called.&amp;lt;br&amp;gt;&lt;br /&gt;
It will then return 0 as long as the button is held down. A new button press will be required to get another -1. This is for single shot fire - the user needs to let go and press the button again in order to fire again.&lt;br /&gt;
* 0 - Left joystick button 1&lt;br /&gt;
* 2 - Left joystick button 2&lt;br /&gt;
* 4 - Right joystick button 1&lt;br /&gt;
* 6 - Right joystick button 2&lt;br /&gt;
&lt;br /&gt;
=== INPUT$(count, device) ===&lt;br /&gt;
Used to scan an input device and accumulate a string:&lt;br /&gt;
10 A$=INPUT$(3,#0)&lt;br /&gt;
20 ? A$&lt;br /&gt;
Will pause the program and wait for three keypresses. They are put into A$.&lt;br /&gt;
&lt;br /&gt;
=== ON ERROR GOTO &amp;lt;line number&amp;gt; ===&lt;br /&gt;
BASIC will jump to line number when an error is encountered. ERL and ERR will contain the line number with the error and the numeric error code, respectively.&lt;br /&gt;
&lt;br /&gt;
== Changed Commands: ==&lt;br /&gt;
&lt;br /&gt;
The EDIT will now accept a single line number or a range. The command will clear the screen, list the program line/lines and put the cursor at the start of the screen.&lt;br /&gt;
&lt;br /&gt;
A CLS value of 9 to 255 will cold start the computer. We suspect that this is a bug that should eventually be fixed.&lt;br /&gt;
&lt;br /&gt;
A CLS value greater than 255 will cause an ?FC error.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Advanced Color BASIC - added ROM vector calls ===&lt;br /&gt;
&lt;br /&gt;
Like Color BASIC and Disk BASIC, which used Extended indirect addresses to call functions within the ROM’s (like JOYIN, DSKCON, etc.), Advanced Color BASIC seems to reserve from $8000-$8015 for additional calls as well. This allows the routines themselves to move around as the ROM was updated, but calling programs would have a set point to enter them.&lt;br /&gt;
&lt;br /&gt;
[$8000] - Calls $FB00, which is a 3 entry table of LBRA instructions:&lt;br /&gt;
    LBRA  $FD32&lt;br /&gt;
    LBRA  $FB1A&lt;br /&gt;
    LBRA  $FD92&lt;br /&gt;
&lt;br /&gt;
[$8002] - Calls $FB09, which is a 1 entry table of LBRA instructions (I assume more would have&lt;br /&gt;
been added later)&lt;br /&gt;
LBRA	$FE16&lt;br /&gt;
&lt;br /&gt;
[$8004] - ??? (points to $09D4, which is in BASIC’s data area)&lt;br /&gt;
&lt;br /&gt;
[$8006] - ??? (points to $E968)&lt;br /&gt;
&lt;br /&gt;
[$8008] - ??? (points to $0ABE, which is in BASIC’s data area)&lt;br /&gt;
&lt;br /&gt;
[$800A] - ??? (points to $AD15)&lt;br /&gt;
&lt;br /&gt;
[$800C] - Call $9254, which checks the 6551 initialized flag (&amp;gt;$0A04). If it is 0 (not initialized), it will initialize the 6551 &amp;amp; it’s related variables including 128 byte receive buffer. If not, it just returns.&lt;br /&gt;
&lt;br /&gt;
[$800E] - ??? (points to $929D)&lt;br /&gt;
&lt;br /&gt;
[$8010] - ??? (points to $DE28)&lt;br /&gt;
&lt;br /&gt;
[$8012] - Calls $92E7, which will return a character from the 128 byte RS232 receive buffer, OR wait for an RS232 character to be received if the buffer is empty.&lt;br /&gt;
&lt;br /&gt;
[$8014] - Calls $92BD, which will transmit a character through the RS232.&lt;/div&gt;</description>
			<pubDate>Mon, 19 Feb 2024 02:19:01 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Advanced_Color_BASIC_Documentation</comments>
		</item>
		<item>
			<title>Advanced Color BASIC Documentation</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10796</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10796</guid>
			<description>&lt;p&gt;Tlindner: /* TIME */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Advanced Color BASIC - New and updated features explained ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
This document explains the version 0.0.7 of Advanced Color BASIC ROM found late in 2023.&amp;lt;br&amp;gt;&lt;br /&gt;
It is from Robert Killgus&#039; collection.&amp;lt;br&amp;gt;&lt;br /&gt;
This is a very early version of the software and eventually became Deluxe Color BASIC.&lt;br /&gt;
&lt;br /&gt;
=== Allows lowercase characters in keywords. ===&lt;br /&gt;
&lt;br /&gt;
=== Full screen editor is always available. ===&lt;br /&gt;
Hold alternate and arrow keys to move the cursor around.&lt;br /&gt;
Alternate and &#039;I&#039; will insert a space and move the characters after the cursor to the right one space.&lt;br /&gt;
Alternate and &#039;D&#039; will delete the character under the cursor and shift the remaining characters to the left.&lt;br /&gt;
Alternate and &#039;E&#039; will delete the characters after the cursor to the end of the line.&lt;br /&gt;
Alternate and ‘H” will move the cursor to the top left corner of the screen.&lt;br /&gt;
Right Arrow (without the alternate key) will move the cursor right 9 spaces.&lt;br /&gt;
The break key will abort editing and put the cursor at the bottom left of the screen.&lt;br /&gt;
Press the enter key to commit an edited line. You do not have to be at the end of a line.&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-3. ===&lt;br /&gt;
Sends and receives data to/from the new serial port.&lt;br /&gt;
Uses:&lt;br /&gt;
PRINT #-3, &amp;quot;HELLO WORLD&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-4 - tbd ===&lt;br /&gt;
&lt;br /&gt;
=== RAM Disk ===&lt;br /&gt;
Drive 4 is a RAM Disk. It has 12 granules available. It is available even if there is no disk cartridge inserted.&lt;br /&gt;
&lt;br /&gt;
If a disk cartridge is inserted on cold boot, you are presented with a menu option to go to BASIC or &amp;quot;Disk&amp;quot;. If you choose &amp;quot;Disk&amp;quot; the equivalent of a DOS command is executed.&lt;br /&gt;
&lt;br /&gt;
== New commands ==&lt;br /&gt;
&lt;br /&gt;
=== ERROR &amp;lt;value&amp;gt; ===&lt;br /&gt;
Will cause the computer to stop the program and issue the respective error.&lt;br /&gt;
&lt;br /&gt;
=== RESUME &amp;lt;line number&amp;gt; ===&lt;br /&gt;
Resumes a program at line number from the error handler.&lt;br /&gt;
&lt;br /&gt;
=== WHILE &amp;lt;boolean expression&amp;gt; / WEND ===&lt;br /&gt;
This is a loop construct that will execute the statements between WHILE and WEND repeatedly until the boolean expression is false.&lt;br /&gt;
&lt;br /&gt;
=== TONE channel, toneperiod, amplitude ===&lt;br /&gt;
channel: 1-3&lt;br /&gt;
toneperiod: 0-4095&lt;br /&gt;
amplitude: 0-15&lt;br /&gt;
&lt;br /&gt;
=== NOISE channel,noiseperiod,amplitude ===&lt;br /&gt;
channel: 1-3&lt;br /&gt;
noiseperiod: 0-31&lt;br /&gt;
amplitude 0-15&lt;br /&gt;
&lt;br /&gt;
=== ENV param1,param2,param3,param4,param5 ===&lt;br /&gt;
TBD 5 numeric parameters 0-65535 allowed &lt;br /&gt;
&lt;br /&gt;
TONE 1,2048,15 &#039; start tone 2048 on channel 1 at max volume&lt;br /&gt;
NOISE 2,31,15 &#039; start noise 31 on channel 2 at max volume&lt;br /&gt;
NOISE 2,0 &#039; stop noise on channel 2&lt;br /&gt;
TONE 1,0,0 &#039; stop tone on channel 1&lt;br /&gt;
SOUND command unaltered&lt;br /&gt;
TBD determine if PLAY command supports 3-voice like N60 BASIC (also by Microsoft) does&lt;br /&gt;
&lt;br /&gt;
=== CHAIN - tbd. ===&lt;br /&gt;
&lt;br /&gt;
=== COMMON ===&lt;br /&gt;
Restrictive comment. For Example:&lt;br /&gt;
10 COMMON This is a comment : PRINT “HELLO WORLD”&lt;br /&gt;
The text after the COMMON command will not be executed, but the command after the colon will. This is different from REM&lt;br /&gt;
10 REM This is a comment : PRINT “HELLO WORLD”&lt;br /&gt;
The REM command will cause everything to be ignored on the whole line.&lt;br /&gt;
&lt;br /&gt;
=== TERM ===&lt;br /&gt;
Executes the ROM based terminal program (the cursor changes from a blinking black one to a blinking blue one to let the user know that they are in terminal mode). Further details on commands within the terminal programming coming soon.&lt;br /&gt;
&lt;br /&gt;
=== CONFIG ===&lt;br /&gt;
Configures the UART Serial port:&amp;lt;br&amp;gt;&lt;br /&gt;
CONFIG #-3,[1-15],[1-5],[5-8],[1-2]&amp;lt;br&amp;gt;&lt;br /&gt;
==== First parameter: ====&lt;br /&gt;
BAUD&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 = 50&lt;br /&gt;
* 2 = 75&lt;br /&gt;
* 3 = 109.92&lt;br /&gt;
* 4 = 135.56&lt;br /&gt;
* 5 = 150&lt;br /&gt;
* 6 = 300&lt;br /&gt;
* 7 = 600&lt;br /&gt;
* 8 = 1200&lt;br /&gt;
* 9 = 1800&lt;br /&gt;
* 10 = 2400&lt;br /&gt;
* 11 = 3600&lt;br /&gt;
* 12 = 4800&lt;br /&gt;
* 13 = 7200&lt;br /&gt;
* 14 = 9600&lt;br /&gt;
* 15 = 19,200&lt;br /&gt;
Default: 6&lt;br /&gt;
&lt;br /&gt;
==== Second Parameter: ====&lt;br /&gt;
Sent to 6551 command register&amp;lt;br&amp;gt;&lt;br /&gt;
* 1: $09 00001001 - No Parity&lt;br /&gt;
* 2: $29 00101001 - Odd Parity&lt;br /&gt;
* 3: $69 01101001 - Even Parity&lt;br /&gt;
* 4: $A9 10101001 - Mark Parity&lt;br /&gt;
* 5: $E9 11101001 - Space Parity&lt;br /&gt;
* Transmit interrupt disabled&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
==== Third parameter: ====&lt;br /&gt;
Data word length, 5 to 8.&lt;br /&gt;
* Default: 8&lt;br /&gt;
&lt;br /&gt;
==== Fourth parameter: ====&lt;br /&gt;
Stop Bits&lt;br /&gt;
* 1 = 1 stop bit&lt;br /&gt;
* 2 = 2 stop bits&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
=== MAPMODE &amp;lt;value&amp;gt; ===&lt;br /&gt;
If the value is 0, the Color Computer is set to 0.89 MHz for the entire address space.&lt;br /&gt;
If the value is 1, the Color Computer is set to 1.78 MHz speed when reading from ROM, and 0.89 MHz when reading or writing to RAM.&lt;br /&gt;
&lt;br /&gt;
=== XOR ===&lt;br /&gt;
The exclusive or operator is true if 1 (and only 1) input is true, otherwise it is false.&lt;br /&gt;
This is used in the same sense as AND and OR in if/then statements:&lt;br /&gt;
IF A XOR B THEN 40&lt;br /&gt;
It is also use like AND and OR in bitwise expressions:&lt;br /&gt;
C = A XOR B&lt;br /&gt;
&lt;br /&gt;
=== ERR ===&lt;br /&gt;
Variable that contains the last error number.&lt;br /&gt;
&lt;br /&gt;
=== ERL ===&lt;br /&gt;
Variable that contains the line number where the last error occurred.&lt;br /&gt;
&lt;br /&gt;
=== TIME ===&lt;br /&gt;
Returns the current value for the 24 bit timer (the old Extended BASIC &amp;quot;TIMER&amp;quot; still works as a 16 bit timer).&amp;lt;br&amp;gt;&lt;br /&gt;
This counter increments 60 times per second and rolls over at 24 hours.&lt;br /&gt;
&lt;br /&gt;
=== TIME$ ===&lt;br /&gt;
Will either return the current 24 hour clock value, or set the 24 hour clock value, using a string format. The string format is &amp;quot;HH:MM:SS&amp;quot;, in 24 hour time format, so HH can be 0 to 23, MM can be 0 to 59, and SS can be 0 to 59.&lt;br /&gt;
Examples:&lt;br /&gt;
  A$=TIME$&lt;br /&gt;
  TIME$=&amp;quot;13:25:00&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== STRIG(button) ===&lt;br /&gt;
This function returns the state of one of the four joystick buttons. Negative 1 if pressed, zero if not pressed.&amp;lt;br&amp;gt;&lt;br /&gt;
Button numbers 1, 3, 5, 7 return the real time value of the button state. This allows rapid fire with the button held down.&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 - Left joystick button 1&lt;br /&gt;
* 3 - Left joystick button 2&lt;br /&gt;
* 5 - Right joystick button 1&lt;br /&gt;
* 7 - Right joystick button 2&lt;br /&gt;
Button numbers 0, 2, 4, 6 return -1 if the button was pressed since the last time this function was called.&amp;lt;br&amp;gt;&lt;br /&gt;
It will then return 0 as long as the button is held down. A new button press will be required to get another -1. This is for single shot fire - the user needs to let go and press the button again in order to fire again.&lt;br /&gt;
* 0 - Left joystick button 1&lt;br /&gt;
* 2 - Left joystick button 2&lt;br /&gt;
* 4 - Right joystick button 1&lt;br /&gt;
* 6 - Right joystick button 2&lt;br /&gt;
&lt;br /&gt;
=== INPUT$(count, device) ===&lt;br /&gt;
Used to scan an input device and accumulate a string:&lt;br /&gt;
10 A$=INPUT$(3,#0)&lt;br /&gt;
20 ? A$&lt;br /&gt;
Will pause the program and wait for three keypresses. They are put into A$.&lt;br /&gt;
&lt;br /&gt;
=== ON ERROR GOTO &amp;lt;line number&amp;gt; ===&lt;br /&gt;
BASIC will jump to line number when an error is encountered. ERL and ERR will contain the line number with the error and the numeric error code, respectively.&lt;br /&gt;
&lt;br /&gt;
== Changed Commands: ==&lt;br /&gt;
&lt;br /&gt;
The EDIT will now accept a single line number or a range. The command will clear the screen, list the program line/lines and put the cursor at the start of the screen.&lt;br /&gt;
&lt;br /&gt;
A CLS value of 9 to 255 will cold start the computer. We suspect that this is a bug that should eventually be fixed.&lt;br /&gt;
&lt;br /&gt;
A CLS value greater than 255 will cause an ?FC error.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Advanced Color BASIC - added ROM vector calls ===&lt;br /&gt;
&lt;br /&gt;
Like Color BASIC and Disk BASIC, which used Extended indirect addresses to call functions within the ROM’s (like JOYIN, DSKCON, etc.), Advanced Color BASIC seems to reserve from $8000-$8015 for additional calls as well. This allows the routines themselves to move around as the ROM was updated, but calling programs would have a set point to enter them.&lt;br /&gt;
&lt;br /&gt;
[$8000] - Calls $FB00, which is a 3 entry table of LBRA instructions:&lt;br /&gt;
    LBRA  $FD32&lt;br /&gt;
    LBRA  $FB1A&lt;br /&gt;
    LBRA  $FD92&lt;br /&gt;
&lt;br /&gt;
[$8002] - Calls $FB09, which is a 1 entry table of LBRA instructions (I assume more would have&lt;br /&gt;
been added later)&lt;br /&gt;
LBRA	$FE16&lt;br /&gt;
&lt;br /&gt;
[$8004] - ??? (points to $09D4, which is in BASIC’s data area)&lt;br /&gt;
&lt;br /&gt;
[$8006] - ??? (points to $E968)&lt;br /&gt;
&lt;br /&gt;
[$8008] - ??? (points to $0ABE, which is in BASIC’s data area)&lt;br /&gt;
&lt;br /&gt;
[$800A] - ??? (points to $AD15)&lt;br /&gt;
&lt;br /&gt;
[$800C] - Call $9254, which checks the 6551 initialized flag (&amp;gt;$0A04). If it is 0 (not initialized), it will initialize the 6551 &amp;amp; it’s related variables including 128 byte receive buffer. If not, it just returns.&lt;br /&gt;
&lt;br /&gt;
[$800E] - ??? (points to $929D)&lt;br /&gt;
&lt;br /&gt;
[$8010] - ??? (points to $DE28)&lt;br /&gt;
&lt;br /&gt;
[$8012] - Calls $92E7, which will return a character from the 128 byte RS232 receive buffer, OR wait for an RS232 character to be received if the buffer is empty.&lt;br /&gt;
&lt;br /&gt;
[$8014] - Calls $92BD, which will transmit a character through the RS232.&lt;/div&gt;</description>
			<pubDate>Mon, 19 Feb 2024 02:17:12 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Advanced_Color_BASIC_Documentation</comments>
		</item>
		<item>
			<title>Deluxe Color Computer</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Deluxe_Color_Computer&amp;diff=10795</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Deluxe_Color_Computer&amp;diff=10795</guid>
			<description>&lt;p&gt;Tlindner: /* Hardware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Deluxe Color Computer =&lt;br /&gt;
&lt;br /&gt;
== Pre-Production Boards ==&lt;br /&gt;
&lt;br /&gt;
Three pre-production (PP) boards for the canceled Deluxe Color Computer exist:&lt;br /&gt;
* Boisy Pitre has gathered two of the Deluxe pre-production boards, one from John Prickett and one from Greg Zumwalt which did not have Advanced or Deluxe ROMs.&lt;br /&gt;
* Brian Weiseler has Robert Kilgus&#039; Deluxe with Advanced Color BASIC 00.00.07 ROMs intact&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The Deluxe Color Computer upgrades the [[Color Computer 2]] to include new hardware and software features&lt;br /&gt;
* Motorola 6847 T1 Video Display Generator (VDG) with true lowercase and lowercase descender characters&lt;br /&gt;
* General Instruments AY-3-8913 Programmable Sound Generator the same as [[Speech/Sound Cartridge (26-3144A)]], [[Symphony-12]], [[Philharmonic-12]], or [[CoCo PSG]]&lt;br /&gt;
* American Megatrends (AMI) S6551P Asynchronous Communication Interface Adapter (ACIA) the same as used in the [[Deluxe RS232 Pak]]&lt;br /&gt;
* Additional circuitry for 60Hz timer interrupts&lt;br /&gt;
* Additional color burst control&lt;br /&gt;
* Additional address decoding to make the PSG and S6551 into the CoCo memory map&lt;br /&gt;
==== Memory Map ====&lt;br /&gt;
* $FF00 - $FF1F - PIA 0&lt;br /&gt;
* $FF20 - $FF2F - PIA 1&lt;br /&gt;
* $FF30 - Option Control Register&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Option Control Register Description&lt;br /&gt;
|-&lt;br /&gt;
! Bit Position!! Function &lt;br /&gt;
|-&lt;br /&gt;
| 0|| A14&lt;br /&gt;
|-&lt;br /&gt;
| 1|| A15&lt;br /&gt;
|-&lt;br /&gt;
| 2|| Enable above for RAM range: $4000-$7FFF&lt;br /&gt;
|-&lt;br /&gt;
| 3|| Alternate color set (blue / green alpha display)&lt;br /&gt;
|-&lt;br /&gt;
| 4|| N/A&lt;br /&gt;
|-&lt;br /&gt;
| 5|| N/A&lt;br /&gt;
|-&lt;br /&gt;
| 6|| Enable 60Hz interrupt&lt;br /&gt;
|-&lt;br /&gt;
| 7|| Enable cartridge select: 1 internal / 0 external&lt;br /&gt;
|}&lt;br /&gt;
* $FF38 AY-3-8910 Data register&lt;br /&gt;
* $FF39 AY-3-8910 Control Register Latch&lt;br /&gt;
* $FF3C SY6551 Transmit / Receive Register&lt;br /&gt;
* $FF3D SY6551 Read status registers&lt;br /&gt;
* $FF3E SY6551 Command register&lt;br /&gt;
* $FF3F SY6551 Control Register&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
The Deluxe Color Computer contains an upgraded Color BASIC which merges Color BASIC, Extended Color BASIC, and Disk Extended Color BASIC into a single 32K Advanced Color BASIC ROM image.&lt;br /&gt;
&lt;br /&gt;
Advanced Color BASIC includes a number of new features as well:&lt;br /&gt;
* [[Advanced Color BASIC Documentation]]&lt;/div&gt;</description>
			<pubDate>Mon, 19 Feb 2024 01:00:26 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Deluxe_Color_Computer</comments>
		</item>
		<item>
			<title>Deluxe Color Computer</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Deluxe_Color_Computer&amp;diff=10794</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Deluxe_Color_Computer&amp;diff=10794</guid>
			<description>&lt;p&gt;Tlindner: /* Hardware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Deluxe Color Computer =&lt;br /&gt;
&lt;br /&gt;
== Pre-Production Boards ==&lt;br /&gt;
&lt;br /&gt;
Three pre-production (PP) boards for the canceled Deluxe Color Computer exist:&lt;br /&gt;
* Boisy Pitre has gathered two of the Deluxe pre-production boards, one from John Prickett and one from Greg Zumwalt which did not have Advanced or Deluxe ROMs.&lt;br /&gt;
* Brian Weiseler has Robert Kilgus&#039; Deluxe with Advanced Color BASIC 00.00.07 ROMs intact&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The Deluxe Color Computer upgrades the [[Color Computer 2]] to include new hardware and software features&lt;br /&gt;
* Motorola 6847 T1 Video Display Generator (VDG) with true lowercase and lowercase descender characters&lt;br /&gt;
* General Instruments AY-3-8913 Programmable Sound Generator the same as [[Speech/Sound Cartridge (26-3144A)]], [[Symphony-12]], [[Philharmonic-12]], or [[CoCo PSG]]&lt;br /&gt;
* American Megatrends (AMI) S6551P Asynchronous Communication Interface Adapter (ACIA) the same as used in the [[Deluxe RS232 Pak]]&lt;br /&gt;
* Additional circuitry for 60Hz timer interrupts&lt;br /&gt;
* Additional color burst control&lt;br /&gt;
* Additional address decoding to make the PSG and S6551 into the CoCo memory map&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* $FF00 - $FF1F - PIA 0&lt;br /&gt;
* $FF20 - $FF2F - PIA 1&lt;br /&gt;
* $FF30 - Option Control Register&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Option Control Register Description&lt;br /&gt;
|-&lt;br /&gt;
! Bit Position!! Function &lt;br /&gt;
|-&lt;br /&gt;
| 0|| A14&lt;br /&gt;
|-&lt;br /&gt;
| 1|| A15&lt;br /&gt;
|-&lt;br /&gt;
| 2|| Enable above for RAM range: $4000-$7FFF&lt;br /&gt;
|-&lt;br /&gt;
| 3|| Alternate color set (blue / green alpha display)&lt;br /&gt;
|-&lt;br /&gt;
| 4|| N/A&lt;br /&gt;
|-&lt;br /&gt;
| 5|| N/A&lt;br /&gt;
|-&lt;br /&gt;
| 6|| Enable 60Hz interrupt&lt;br /&gt;
|-&lt;br /&gt;
| 7|| Enable cartridge select: 1 internal / 0 external&lt;br /&gt;
|}&lt;br /&gt;
* $FF38 AY-3-8910 Data register&lt;br /&gt;
* $FF39 AY-3-8910 Control Register Latch&lt;br /&gt;
* $FF3C SY6551 Transmit / Receive Register&lt;br /&gt;
* $FF3D SY6551 Read status registers&lt;br /&gt;
* $FF3E SY6551 Command register&lt;br /&gt;
* $FF3F SY6551 Control Register&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
The Deluxe Color Computer contains an upgraded Color BASIC which merges Color BASIC, Extended Color BASIC, and Disk Extended Color BASIC into a single 32K Advanced Color BASIC ROM image.&lt;br /&gt;
&lt;br /&gt;
Advanced Color BASIC includes a number of new features as well:&lt;br /&gt;
* [[Advanced Color BASIC Documentation]]&lt;/div&gt;</description>
			<pubDate>Mon, 19 Feb 2024 00:59:49 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Deluxe_Color_Computer</comments>
		</item>
		<item>
			<title>Deluxe Color Computer</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Deluxe_Color_Computer&amp;diff=10793</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Deluxe_Color_Computer&amp;diff=10793</guid>
			<description>&lt;p&gt;Tlindner: /* Hardware */ Add memory map&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Deluxe Color Computer =&lt;br /&gt;
&lt;br /&gt;
== Pre-Production Boards ==&lt;br /&gt;
&lt;br /&gt;
Three pre-production (PP) boards for the canceled Deluxe Color Computer exist:&lt;br /&gt;
* Boisy Pitre has gathered two of the Deluxe pre-production boards, one from John Prickett and one from Greg Zumwalt which did not have Advanced or Deluxe ROMs.&lt;br /&gt;
* Brian Weiseler has Robert Kilgus&#039; Deluxe with Advanced Color BASIC 00.00.07 ROMs intact&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The Deluxe Color Computer upgrades the [[Color Computer 2]] to include new hardware and software features&lt;br /&gt;
* Motorola 6847 T1 Video Display Generator (VDG) with true lowercase and lowercase descender characters&lt;br /&gt;
* General Instruments AY-3-8913 Programmable Sound Generator the same as [[Speech/Sound Cartridge (26-3144A)]], [[Symphony-12]], [[Philharmonic-12]], or [[CoCo PSG]]&lt;br /&gt;
* American Megatrends (AMI) S6551P Asynchronous Communication Interface Adapter (ACIA) the same as used in the [[Deluxe RS232 Pak]]&lt;br /&gt;
* Additional circuitry for 60Hz timer interrupts&lt;br /&gt;
* Additional color burst control&lt;br /&gt;
* Additional address decoding to make the PSG and S6551 into the CoCo memory map&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* $FF00 - $FF1F - PIA 0&lt;br /&gt;
* $FF20 - $FF2F - PIA 1&lt;br /&gt;
* $FF30 - Option Control Register&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Option Control Register Description&lt;br /&gt;
|-&lt;br /&gt;
! Bit Position!! Function &lt;br /&gt;
|-&lt;br /&gt;
| 0|| A15&lt;br /&gt;
|-&lt;br /&gt;
| 1|| A14&lt;br /&gt;
|-&lt;br /&gt;
| 2|| Enable above for RAM range: $4000-$7FFF&lt;br /&gt;
|-&lt;br /&gt;
| 3|| Alternate color set (blue / green alpha display)&lt;br /&gt;
|-&lt;br /&gt;
| 4|| N/A&lt;br /&gt;
|-&lt;br /&gt;
| 5|| N/A&lt;br /&gt;
|-&lt;br /&gt;
| 6|| Enable 60Hz interrupt&lt;br /&gt;
|-&lt;br /&gt;
| 7|| Enable cartridge select: 1 internal / 0 external&lt;br /&gt;
|}&lt;br /&gt;
* $FF38 AY-3-8910 Data register&lt;br /&gt;
* $FF39 AY-3-8910 Control Register Latch&lt;br /&gt;
* $FF3C SY6551 Transmit / Receive Register&lt;br /&gt;
* $FF3D SY6551 Read status registers&lt;br /&gt;
* $FF3E SY6551 Command register&lt;br /&gt;
* $FF3F SY6551 Control Register&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
The Deluxe Color Computer contains an upgraded Color BASIC which merges Color BASIC, Extended Color BASIC, and Disk Extended Color BASIC into a single 32K Advanced Color BASIC ROM image.&lt;br /&gt;
&lt;br /&gt;
Advanced Color BASIC includes a number of new features as well:&lt;br /&gt;
* [[Advanced Color BASIC Documentation]]&lt;/div&gt;</description>
			<pubDate>Mon, 19 Feb 2024 00:58:45 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Deluxe_Color_Computer</comments>
		</item>
		<item>
			<title>Advanced Color BASIC Documentation</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10788</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10788</guid>
			<description>&lt;p&gt;Tlindner: /* First parameter: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Advanced Color BASIC - New and updated features explained ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
This document explains the version 0.0.7 of Advanced Color BASIC ROM found late in 2023.&amp;lt;br&amp;gt;&lt;br /&gt;
It is from Robert Killgus&#039; collection.&amp;lt;br&amp;gt;&lt;br /&gt;
This is a very early version of the software and eventually became Deluxe Color BASIC.&lt;br /&gt;
&lt;br /&gt;
=== Allows lowercase characters in keywords. ===&lt;br /&gt;
&lt;br /&gt;
=== Full screen editor is always available. ===&lt;br /&gt;
Hold alternate and arrow keys to move the cursor around.&lt;br /&gt;
Alternate and &#039;I&#039; will insert a space and move the characters after the cursor to the right one space.&lt;br /&gt;
Alternate and &#039;D&#039; will delete the character under the cursor and shift the remaining characters to the left.&lt;br /&gt;
Alternate and &#039;E&#039; will delete the characters after the cursor to the end of the line.&lt;br /&gt;
Alternate and ‘H” will move the cursor to the top left corner of the screen.&lt;br /&gt;
Right Arrow (without the alternate key) will move the cursor right 9 spaces.&lt;br /&gt;
The break key will abort editing and put the cursor at the bottom left of the screen.&lt;br /&gt;
Press the enter key to commit an edited line. You do not have to be at the end of a line.&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-3. ===&lt;br /&gt;
Sends and receives data to/from the new serial port.&lt;br /&gt;
Uses:&lt;br /&gt;
PRINT #-3, &amp;quot;HELLO WORLD&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-4 - tbd ===&lt;br /&gt;
&lt;br /&gt;
=== RAM Disk ===&lt;br /&gt;
Drive 4 is a RAM Disk. It has 12 granules available. It is available even if there is no disk cartridge inserted.&lt;br /&gt;
&lt;br /&gt;
If a disk cartridge is inserted on cold boot, you are presented with a menu option to go to BASIC or &amp;quot;Disk&amp;quot;. If you choose &amp;quot;Disk&amp;quot; the equivalent of a DOS command is executed.&lt;br /&gt;
&lt;br /&gt;
== New commands ==&lt;br /&gt;
&lt;br /&gt;
=== ERROR &amp;lt;value&amp;gt; ===&lt;br /&gt;
Will cause the computer to stop the program and issue the respective error.&lt;br /&gt;
&lt;br /&gt;
=== RESUME &amp;lt;line number&amp;gt; ===&lt;br /&gt;
Resumes a program at line number from the error handler.&lt;br /&gt;
&lt;br /&gt;
=== WHILE &amp;lt;boolean expression&amp;gt; / WEND ===&lt;br /&gt;
This is a loop construct that will execute the statements between WHILE and WEND repeatedly until the boolean expression is false.&lt;br /&gt;
&lt;br /&gt;
=== TONE channel, toneperiod, amplitude ===&lt;br /&gt;
channel: 1-3&lt;br /&gt;
toneperiod: 0-4095&lt;br /&gt;
amplitude: 0-15&lt;br /&gt;
&lt;br /&gt;
=== NOISE channel,noiseperiod,amplitude ===&lt;br /&gt;
channel: 1-3&lt;br /&gt;
noiseperiod: 0-31&lt;br /&gt;
amplitude 0-15&lt;br /&gt;
&lt;br /&gt;
=== ENV param1,param2,param3,param4,param5 ===&lt;br /&gt;
TBD 5 numeric parameters 0-65535 allowed &lt;br /&gt;
&lt;br /&gt;
TONE 1,2048,15 &#039; start tone 2048 on channel 1 at max volume&lt;br /&gt;
NOISE 2,31,15 &#039; start noise 31 on channel 2 at max volume&lt;br /&gt;
NOISE 2,0 &#039; stop noise on channel 2&lt;br /&gt;
TONE 1,0,0 &#039; stop tone on channel 1&lt;br /&gt;
SOUND command unaltered&lt;br /&gt;
TBD determine if PLAY command supports 3-voice like N60 BASIC (also by Microsoft) does&lt;br /&gt;
&lt;br /&gt;
=== CHAIN - tbd. ===&lt;br /&gt;
&lt;br /&gt;
=== COMMON ===&lt;br /&gt;
Restrictive comment. For Example:&lt;br /&gt;
10 COMMON This is a comment : PRINT “HELLO WORLD”&lt;br /&gt;
The text after the COMMON command will not be executed, but the command after the colon will. This is different from REM&lt;br /&gt;
10 REM This is a comment : PRINT “HELLO WORLD”&lt;br /&gt;
The REM command will cause everything to be ignored on the whole line.&lt;br /&gt;
&lt;br /&gt;
=== TERM ===&lt;br /&gt;
Executes the ROM based terminal program (the cursor changes from a blinking black one to a blinking blue one to let the user know that they are in terminal mode). Further details on commands within the terminal programming coming soon.&lt;br /&gt;
&lt;br /&gt;
=== CONFIG ===&lt;br /&gt;
Configures the UART Serial port:&amp;lt;br&amp;gt;&lt;br /&gt;
CONFIG #-3,[1-15],[1-5],[5-8],[1-2]&amp;lt;br&amp;gt;&lt;br /&gt;
==== First parameter: ====&lt;br /&gt;
BAUD&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 = 50&lt;br /&gt;
* 2 = 75&lt;br /&gt;
* 3 = 109.92&lt;br /&gt;
* 4 = 135.56&lt;br /&gt;
* 5 = 150&lt;br /&gt;
* 6 = 300&lt;br /&gt;
* 7 = 600&lt;br /&gt;
* 8 = 1200&lt;br /&gt;
* 9 = 1800&lt;br /&gt;
* 10 = 2400&lt;br /&gt;
* 11 = 3600&lt;br /&gt;
* 12 = 4800&lt;br /&gt;
* 13 = 7200&lt;br /&gt;
* 14 = 9600&lt;br /&gt;
* 15 = 19,200&lt;br /&gt;
Default: 6&lt;br /&gt;
&lt;br /&gt;
==== Second Parameter: ====&lt;br /&gt;
Sent to 6551 command register&amp;lt;br&amp;gt;&lt;br /&gt;
* 1: $09 00001001 - No Parity&lt;br /&gt;
* 2: $29 00101001 - Odd Parity&lt;br /&gt;
* 3: $69 01101001 - Even Parity&lt;br /&gt;
* 4: $A9 10101001 - Mark Parity&lt;br /&gt;
* 5: $E9 11101001 - Space Parity&lt;br /&gt;
* Transmit interrupt disabled&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
==== Third parameter: ====&lt;br /&gt;
Data word length, 5 to 8.&lt;br /&gt;
* Default: 8&lt;br /&gt;
&lt;br /&gt;
==== Fourth parameter: ====&lt;br /&gt;
Stop Bits&lt;br /&gt;
* 1 = 1 stop bit&lt;br /&gt;
* 2 = 2 stop bits&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
=== MAPMODE &amp;lt;value&amp;gt; ===&lt;br /&gt;
If the value is 0, the Color Computer is set to 0.89 MHz for the entire address space.&lt;br /&gt;
If the value is 1, the Color Computer is set to 1.76 MHz speed when reading from ROM, and 0.89 MHz when reading or writing to RAM.&lt;br /&gt;
&lt;br /&gt;
=== XOR ===&lt;br /&gt;
The exclusive or operator is true if 1 (and only 1) input is true, otherwise it is false.&lt;br /&gt;
This is used in the same sense as AND and OR in if/then statements:&lt;br /&gt;
IF A XOR B THEN 40&lt;br /&gt;
It is also use like AND and OR in bitwise expressions:&lt;br /&gt;
C = A XOR B&lt;br /&gt;
&lt;br /&gt;
=== ERR ===&lt;br /&gt;
Variable that contains the last error number.&lt;br /&gt;
&lt;br /&gt;
=== ERL ===&lt;br /&gt;
Variable that contains the line number where the last error occurred.&lt;br /&gt;
&lt;br /&gt;
=== TIME ===&lt;br /&gt;
Returns the current value for the 24 bit timer (the old Extended BASIC &amp;quot;TIMER&amp;quot; still works as a 16 bit timer).&lt;br /&gt;
&lt;br /&gt;
=== TIME$ ===&lt;br /&gt;
Will either return the current 24 hour clock value, or set the 24 hour clock value, using a string format. The string format is &amp;quot;HH:MM:SS&amp;quot;, in 24 hour time format, so HH can be 0 to 23, MM can be 0 to 59, and SS can be 0 to 59.&lt;br /&gt;
Examples:&lt;br /&gt;
  A$=TIME$&lt;br /&gt;
  TIME$=&amp;quot;13:25:00&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== STRIG(button) ===&lt;br /&gt;
This function returns the state of one of the four joystick buttons. Negative 1 if pressed, zero if not pressed.&amp;lt;br&amp;gt;&lt;br /&gt;
Button numbers 1, 3, 5, 7 return the real time value of the button state. This allows rapid fire with the button held down.&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 - Left joystick button 1&lt;br /&gt;
* 3 - Left joystick button 2&lt;br /&gt;
* 5 - Right joystick button 1&lt;br /&gt;
* 7 - Right joystick button 2&lt;br /&gt;
Button numbers 0, 2, 4, 6 return -1 if the button was pressed since the last time this function was called.&amp;lt;br&amp;gt;&lt;br /&gt;
It will then return 0 as long as the button is held down. A new button press will be required to get another -1. This is for single shot fire - the user needs to let go and press the button again in order to fire again.&lt;br /&gt;
* 0 - Left joystick button 1&lt;br /&gt;
* 2 - Left joystick button 2&lt;br /&gt;
* 4 - Right joystick button 1&lt;br /&gt;
* 6 - Right joystick button 2&lt;br /&gt;
&lt;br /&gt;
=== INPUT$(count, device) ===&lt;br /&gt;
Used to scan an input device and accumulate a string:&lt;br /&gt;
10 A$=INPUT$(3,#0)&lt;br /&gt;
20 ? A$&lt;br /&gt;
Will pause the program and wait for three keypresses. They are put into A$.&lt;br /&gt;
&lt;br /&gt;
=== ON ERROR GOTO &amp;lt;line number&amp;gt; ===&lt;br /&gt;
BASIC will jump to line number when an error is encountered. ERL and ERR will contain the line number with the error and the numeric error code, respectively.&lt;br /&gt;
&lt;br /&gt;
== Changed Commands: ==&lt;br /&gt;
&lt;br /&gt;
The EDIT will now accept a single line number or a range. The command will clear the screen, list the program line/lines and put the cursor at the start of the screen.&lt;br /&gt;
&lt;br /&gt;
A CLS value of 9 to 255 will cold start the computer. We suspect that this is a bug that should eventually be fixed.&lt;br /&gt;
&lt;br /&gt;
A CLS value greater than 255 will cause an ?FC error.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Advanced Color BASIC - added ROM vector calls ===&lt;br /&gt;
&lt;br /&gt;
Like Color BASIC and Disk BASIC, which used Extended indirect addresses to call functions within the ROM’s (like JOYIN, DSKCON, etc.), Advanced Color BASIC seems to reserve from $8000-$8015 for additional calls as well. This allows the routines themselves to move around as the ROM was updated, but calling programs would have a set point to enter them.&lt;br /&gt;
&lt;br /&gt;
[$8000] - Calls $FB00, which is a 3 entry table of LBRA instructions:&lt;br /&gt;
	LBRA	$FD32&lt;br /&gt;
	LBRA	$FB1A&lt;br /&gt;
	LBRA	$FD92&lt;br /&gt;
&lt;br /&gt;
[$8002] - Calls $FB09, which is a 1 entry table of LBRA instructions (I assume more would have&lt;br /&gt;
been added later)&lt;br /&gt;
LBRA	$FE16&lt;br /&gt;
&lt;br /&gt;
[$8004] - ??? (points to $09D4, which is in BASIC’s data area)&lt;br /&gt;
[$8006] - ??? (points to $E968)&lt;br /&gt;
[$8008] - ??? (points to $0ABE, which is in BASIC’s data area)&lt;br /&gt;
[$800A] - ??? (points to $AD15)&lt;br /&gt;
[$800C] - If $0A04=0, initialize the 6551 &amp;amp; it’s related variables including 128 byte receive&lt;br /&gt;
buffer (calls $9254)&lt;br /&gt;
[$800E] - ??? (points to $929D)&lt;br /&gt;
[$8010] - ??? (points to $DE28)&lt;br /&gt;
[$8012] - Calls $92E7, which will return a character from the 128 byte RS232 receive buffer,&lt;br /&gt;
OR&lt;br /&gt;
	wait for an RS232 character to be received if the buffer is empty.&lt;br /&gt;
[$8014] - Calls $92BD, which will transmit a character through the RS232.&lt;/div&gt;</description>
			<pubDate>Mon, 19 Feb 2024 00:28:57 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Advanced_Color_BASIC_Documentation</comments>
		</item>
		<item>
			<title>Advanced Color BASIC Documentation</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10787</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10787</guid>
			<description>&lt;p&gt;Tlindner: /* CONFIG */ format for wiki&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Advanced Color BASIC - New and updated features explained ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
This document explains the version 0.0.7 of Advanced Color BASIC ROM found late in 2023.&amp;lt;br&amp;gt;&lt;br /&gt;
It is from Robert Killgus&#039; collection.&amp;lt;br&amp;gt;&lt;br /&gt;
This is a very early version of the software and eventually became Deluxe Color BASIC.&lt;br /&gt;
&lt;br /&gt;
=== Allows lowercase characters in keywords. ===&lt;br /&gt;
&lt;br /&gt;
=== Full screen editor is always available. ===&lt;br /&gt;
Hold alternate and arrow keys to move the cursor around.&lt;br /&gt;
Alternate and &#039;I&#039; will insert a space and move the characters after the cursor to the right one space.&lt;br /&gt;
Alternate and &#039;D&#039; will delete the character under the cursor and shift the remaining characters to the left.&lt;br /&gt;
Alternate and &#039;E&#039; will delete the characters after the cursor to the end of the line.&lt;br /&gt;
Alternate and ‘H” will move the cursor to the top left corner of the screen.&lt;br /&gt;
Right Arrow (without the alternate key) will move the cursor right 9 spaces.&lt;br /&gt;
The break key will abort editing and put the cursor at the bottom left of the screen.&lt;br /&gt;
Press the enter key to commit an edited line. You do not have to be at the end of a line.&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-3. ===&lt;br /&gt;
Sends and receives data to/from the new serial port.&lt;br /&gt;
Uses:&lt;br /&gt;
PRINT #-3, &amp;quot;HELLO WORLD&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-4 - tbd ===&lt;br /&gt;
&lt;br /&gt;
=== RAM Disk ===&lt;br /&gt;
Drive 4 is a RAM Disk. It has 12 granules available. It is available even if there is no disk cartridge inserted.&lt;br /&gt;
&lt;br /&gt;
If a disk cartridge is inserted on cold boot, you are presented with a menu option to go to BASIC or &amp;quot;Disk&amp;quot;. If you choose &amp;quot;Disk&amp;quot; the equivalent of a DOS command is executed.&lt;br /&gt;
&lt;br /&gt;
== New commands ==&lt;br /&gt;
&lt;br /&gt;
=== ERROR &amp;lt;value&amp;gt; ===&lt;br /&gt;
Will cause the computer to stop the program and issue the respective error.&lt;br /&gt;
&lt;br /&gt;
=== RESUME &amp;lt;line number&amp;gt; ===&lt;br /&gt;
Resumes a program at line number from the error handler.&lt;br /&gt;
&lt;br /&gt;
=== WHILE &amp;lt;boolean expression&amp;gt; / WEND ===&lt;br /&gt;
This is a loop construct that will execute the statements between WHILE and WEND repeatedly until the boolean expression is false.&lt;br /&gt;
&lt;br /&gt;
=== TONE channel, toneperiod, amplitude ===&lt;br /&gt;
channel: 1-3&lt;br /&gt;
toneperiod: 0-4095&lt;br /&gt;
amplitude: 0-15&lt;br /&gt;
&lt;br /&gt;
=== NOISE channel,noiseperiod,amplitude ===&lt;br /&gt;
channel: 1-3&lt;br /&gt;
noiseperiod: 0-31&lt;br /&gt;
amplitude 0-15&lt;br /&gt;
&lt;br /&gt;
=== ENV param1,param2,param3,param4,param5 ===&lt;br /&gt;
TBD 5 numeric parameters 0-65535 allowed &lt;br /&gt;
&lt;br /&gt;
TONE 1,2048,15 &#039; start tone 2048 on channel 1 at max volume&lt;br /&gt;
NOISE 2,31,15 &#039; start noise 31 on channel 2 at max volume&lt;br /&gt;
NOISE 2,0 &#039; stop noise on channel 2&lt;br /&gt;
TONE 1,0,0 &#039; stop tone on channel 1&lt;br /&gt;
SOUND command unaltered&lt;br /&gt;
TBD determine if PLAY command supports 3-voice like N60 BASIC (also by Microsoft) does&lt;br /&gt;
&lt;br /&gt;
=== CHAIN - tbd. ===&lt;br /&gt;
&lt;br /&gt;
=== COMMON ===&lt;br /&gt;
Restrictive comment. For Example:&lt;br /&gt;
10 COMMON This is a comment : PRINT “HELLO WORLD”&lt;br /&gt;
The text after the COMMON command will not be executed, but the command after the colon will. This is different from REM&lt;br /&gt;
10 REM This is a comment : PRINT “HELLO WORLD”&lt;br /&gt;
The REM command will cause everything to be ignored on the whole line.&lt;br /&gt;
&lt;br /&gt;
=== TERM ===&lt;br /&gt;
Executes the ROM based terminal program (the cursor changes from a blinking black one to a blinking blue one to let the user know that they are in terminal mode). Further details on commands within the terminal programming coming soon.&lt;br /&gt;
&lt;br /&gt;
=== CONFIG ===&lt;br /&gt;
Configures the UART Serial port:&amp;lt;br&amp;gt;&lt;br /&gt;
CONFIG #-3,[1-15],[1-5],[5-8],[1-2]&amp;lt;br&amp;gt;&lt;br /&gt;
==== First parameter: ====&lt;br /&gt;
BAUD&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 = 50&lt;br /&gt;
* 2 = 75&lt;br /&gt;
* 3 = 109.92&lt;br /&gt;
* 4 = 135.56&lt;br /&gt;
* 5 = 150&lt;br /&gt;
* 6 = 300&lt;br /&gt;
* 7 = 600&lt;br /&gt;
* 8 = 1200&lt;br /&gt;
* 9 = 1800&lt;br /&gt;
* 10 = 2400&lt;br /&gt;
* 11 = 3600&lt;br /&gt;
* 12 = 4800&lt;br /&gt;
* 13 = 7200&lt;br /&gt;
* 14 = 9600&lt;br /&gt;
* 15 = 19,200&lt;br /&gt;
* Default: 6&lt;br /&gt;
&lt;br /&gt;
==== Second Parameter: ====&lt;br /&gt;
Sent to 6551 command register&amp;lt;br&amp;gt;&lt;br /&gt;
* 1: $09 00001001 - No Parity&lt;br /&gt;
* 2: $29 00101001 - Odd Parity&lt;br /&gt;
* 3: $69 01101001 - Even Parity&lt;br /&gt;
* 4: $A9 10101001 - Mark Parity&lt;br /&gt;
* 5: $E9 11101001 - Space Parity&lt;br /&gt;
* Transmit interrupt disabled&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
==== Third parameter: ====&lt;br /&gt;
Data word length, 5 to 8.&lt;br /&gt;
* Default: 8&lt;br /&gt;
&lt;br /&gt;
==== Fourth parameter: ====&lt;br /&gt;
Stop Bits&lt;br /&gt;
* 1 = 1 stop bit&lt;br /&gt;
* 2 = 2 stop bits&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
=== MAPMODE &amp;lt;value&amp;gt; ===&lt;br /&gt;
If the value is 0, the Color Computer is set to 0.89 MHz for the entire address space.&lt;br /&gt;
If the value is 1, the Color Computer is set to 1.76 MHz speed when reading from ROM, and 0.89 MHz when reading or writing to RAM.&lt;br /&gt;
&lt;br /&gt;
=== XOR ===&lt;br /&gt;
The exclusive or operator is true if 1 (and only 1) input is true, otherwise it is false.&lt;br /&gt;
This is used in the same sense as AND and OR in if/then statements:&lt;br /&gt;
IF A XOR B THEN 40&lt;br /&gt;
It is also use like AND and OR in bitwise expressions:&lt;br /&gt;
C = A XOR B&lt;br /&gt;
&lt;br /&gt;
=== ERR ===&lt;br /&gt;
Variable that contains the last error number.&lt;br /&gt;
&lt;br /&gt;
=== ERL ===&lt;br /&gt;
Variable that contains the line number where the last error occurred.&lt;br /&gt;
&lt;br /&gt;
=== TIME ===&lt;br /&gt;
Returns the current value for the 24 bit timer (the old Extended BASIC &amp;quot;TIMER&amp;quot; still works as a 16 bit timer).&lt;br /&gt;
&lt;br /&gt;
=== TIME$ ===&lt;br /&gt;
Will either return the current 24 hour clock value, or set the 24 hour clock value, using a string format. The string format is &amp;quot;HH:MM:SS&amp;quot;, in 24 hour time format, so HH can be 0 to 23, MM can be 0 to 59, and SS can be 0 to 59.&lt;br /&gt;
Examples:&lt;br /&gt;
  A$=TIME$&lt;br /&gt;
  TIME$=&amp;quot;13:25:00&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== STRIG(button) ===&lt;br /&gt;
This function returns the state of one of the four joystick buttons. Negative 1 if pressed, zero if not pressed.&amp;lt;br&amp;gt;&lt;br /&gt;
Button numbers 1, 3, 5, 7 return the real time value of the button state. This allows rapid fire with the button held down.&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 - Left joystick button 1&lt;br /&gt;
* 3 - Left joystick button 2&lt;br /&gt;
* 5 - Right joystick button 1&lt;br /&gt;
* 7 - Right joystick button 2&lt;br /&gt;
Button numbers 0, 2, 4, 6 return -1 if the button was pressed since the last time this function was called.&amp;lt;br&amp;gt;&lt;br /&gt;
It will then return 0 as long as the button is held down. A new button press will be required to get another -1. This is for single shot fire - the user needs to let go and press the button again in order to fire again.&lt;br /&gt;
* 0 - Left joystick button 1&lt;br /&gt;
* 2 - Left joystick button 2&lt;br /&gt;
* 4 - Right joystick button 1&lt;br /&gt;
* 6 - Right joystick button 2&lt;br /&gt;
&lt;br /&gt;
=== INPUT$(count, device) ===&lt;br /&gt;
Used to scan an input device and accumulate a string:&lt;br /&gt;
10 A$=INPUT$(3,#0)&lt;br /&gt;
20 ? A$&lt;br /&gt;
Will pause the program and wait for three keypresses. They are put into A$.&lt;br /&gt;
&lt;br /&gt;
=== ON ERROR GOTO &amp;lt;line number&amp;gt; ===&lt;br /&gt;
BASIC will jump to line number when an error is encountered. ERL and ERR will contain the line number with the error and the numeric error code, respectively.&lt;br /&gt;
&lt;br /&gt;
== Changed Commands: ==&lt;br /&gt;
&lt;br /&gt;
The EDIT will now accept a single line number or a range. The command will clear the screen, list the program line/lines and put the cursor at the start of the screen.&lt;br /&gt;
&lt;br /&gt;
A CLS value of 9 to 255 will cold start the computer. We suspect that this is a bug that should eventually be fixed.&lt;br /&gt;
&lt;br /&gt;
A CLS value greater than 255 will cause an ?FC error.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Advanced Color BASIC - added ROM vector calls ===&lt;br /&gt;
&lt;br /&gt;
Like Color BASIC and Disk BASIC, which used Extended indirect addresses to call functions within the ROM’s (like JOYIN, DSKCON, etc.), Advanced Color BASIC seems to reserve from $8000-$8015 for additional calls as well. This allows the routines themselves to move around as the ROM was updated, but calling programs would have a set point to enter them.&lt;br /&gt;
&lt;br /&gt;
[$8000] - Calls $FB00, which is a 3 entry table of LBRA instructions:&lt;br /&gt;
	LBRA	$FD32&lt;br /&gt;
	LBRA	$FB1A&lt;br /&gt;
	LBRA	$FD92&lt;br /&gt;
&lt;br /&gt;
[$8002] - Calls $FB09, which is a 1 entry table of LBRA instructions (I assume more would have&lt;br /&gt;
been added later)&lt;br /&gt;
LBRA	$FE16&lt;br /&gt;
&lt;br /&gt;
[$8004] - ??? (points to $09D4, which is in BASIC’s data area)&lt;br /&gt;
[$8006] - ??? (points to $E968)&lt;br /&gt;
[$8008] - ??? (points to $0ABE, which is in BASIC’s data area)&lt;br /&gt;
[$800A] - ??? (points to $AD15)&lt;br /&gt;
[$800C] - If $0A04=0, initialize the 6551 &amp;amp; it’s related variables including 128 byte receive&lt;br /&gt;
buffer (calls $9254)&lt;br /&gt;
[$800E] - ??? (points to $929D)&lt;br /&gt;
[$8010] - ??? (points to $DE28)&lt;br /&gt;
[$8012] - Calls $92E7, which will return a character from the 128 byte RS232 receive buffer,&lt;br /&gt;
OR&lt;br /&gt;
	wait for an RS232 character to be received if the buffer is empty.&lt;br /&gt;
[$8014] - Calls $92BD, which will transmit a character through the RS232.&lt;/div&gt;</description>
			<pubDate>Mon, 19 Feb 2024 00:28:31 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Advanced_Color_BASIC_Documentation</comments>
		</item>
		<item>
			<title>Advanced Color BASIC Documentation</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10775</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10775</guid>
			<description>&lt;p&gt;Tlindner: /* Introduction */ Add detials.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Advanced Color BASIC - New and updated features explained ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
This document explains the version 0.0.7 of Advanced Color BASIC ROM found late in 2023.&amp;lt;br&amp;gt;&lt;br /&gt;
It is from Robert Killgus&#039; collection.&amp;lt;br&amp;gt;&lt;br /&gt;
This is a very early version of the software and eventually became Deluxe Color BASIC.&lt;br /&gt;
&lt;br /&gt;
=== Allows lowercase characters in keywords. ===&lt;br /&gt;
&lt;br /&gt;
=== Full screen editor is always available. ===&lt;br /&gt;
Hold alternate and arrow keys to move the cursor around.&lt;br /&gt;
Alternate and &#039;I&#039; will insert a space and move the characters after the cursor to the right one space.&lt;br /&gt;
Alternate and &#039;D&#039; will delete the character under the cursor and shift the remaining characters to the left.&lt;br /&gt;
Alternate and &#039;E&#039; will delete the characters after the cursor to the end of the line.&lt;br /&gt;
Alternate and ‘H” will move the cursor to the top left corner of the screen.&lt;br /&gt;
Right Arrow (without the alternate key) will move the cursor right 9 spaces.&lt;br /&gt;
The break key will abort editing and put the cursor at the bottom left of the screen.&lt;br /&gt;
Press the enter key to commit an edited line. You do not have to be at the end of a line.&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-3. ===&lt;br /&gt;
Sends and receives data to/from the new serial port.&lt;br /&gt;
Uses:&lt;br /&gt;
PRINT #-3, &amp;quot;HELLO WORLD&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-4 - tbd ===&lt;br /&gt;
&lt;br /&gt;
=== RAM Disk ===&lt;br /&gt;
Drive 4 is a RAM Disk. It has 12 granules available. It is available even if there is no disk cartridge inserted.&lt;br /&gt;
&lt;br /&gt;
If a disk cartridge is inserted on cold boot, you are presented with a menu option to go to BASIC or &amp;quot;Disk&amp;quot;. If you choose &amp;quot;Disk&amp;quot; the equivalent of a DOS command is executed.&lt;br /&gt;
&lt;br /&gt;
== New commands ==&lt;br /&gt;
&lt;br /&gt;
=== ERROR &amp;lt;value&amp;gt; ===&lt;br /&gt;
Will cause the computer to stop the program and issue the respective error.&lt;br /&gt;
&lt;br /&gt;
=== RESUME &amp;lt;line number&amp;gt; ===&lt;br /&gt;
Resumes a program at line number from the error handler.&lt;br /&gt;
&lt;br /&gt;
=== WHILE &amp;lt;boolean expression&amp;gt; / WEND ===&lt;br /&gt;
This is a loop construct that will execute the statements between WHILE and WEND repeatedly until the boolean expression is false.&lt;br /&gt;
&lt;br /&gt;
=== TONE channel, toneperiod, amplitude ===&lt;br /&gt;
channel: 1-3&lt;br /&gt;
toneperiod: 0-4095&lt;br /&gt;
amplitude: 0-15&lt;br /&gt;
&lt;br /&gt;
=== NOISE channel,noiseperiod,amplitude ===&lt;br /&gt;
channel: 1-3&lt;br /&gt;
noiseperiod: 0-31&lt;br /&gt;
amplitude 0-15&lt;br /&gt;
&lt;br /&gt;
=== ENV param1,param2,param3,param4,param5 ===&lt;br /&gt;
TBD 5 numeric parameters 0-65535 allowed &lt;br /&gt;
&lt;br /&gt;
TONE 1,2048,15 &#039; start tone 2048 on channel 1 at max volume&lt;br /&gt;
NOISE 2,31,15 &#039; start noise 31 on channel 2 at max volume&lt;br /&gt;
NOISE 2,0 &#039; stop noise on channel 2&lt;br /&gt;
TONE 1,0,0 &#039; stop tone on channel 1&lt;br /&gt;
SOUND command unaltered&lt;br /&gt;
TBD determine if PLAY command supports 3-voice like N60 BASIC (also by Microsoft) does&lt;br /&gt;
&lt;br /&gt;
=== CHAIN - tbd. ===&lt;br /&gt;
&lt;br /&gt;
=== COMMON ===&lt;br /&gt;
Restrictive comment. For Example:&lt;br /&gt;
10 COMMON This is a comment : PRINT “HELLO WORLD”&lt;br /&gt;
The text after the COMMON command will not be executed, but the command after the colon will. This is different from REM&lt;br /&gt;
10 REM This is a comment : PRINT “HELLO WORLD”&lt;br /&gt;
The REM command will cause everything to be ignored on the whole line.&lt;br /&gt;
&lt;br /&gt;
=== TERM - tbd. ===&lt;br /&gt;
&lt;br /&gt;
=== CONFIG ===&lt;br /&gt;
Configures the UART Serial port:&lt;br /&gt;
CONFIG #-3,[1-15],[1-5],[5-8],[1-2]&lt;br /&gt;
First parameter:&lt;br /&gt;
BAUD&lt;br /&gt;
1 = 50&lt;br /&gt;
2 = 75&lt;br /&gt;
3 = 109.92&lt;br /&gt;
4 = 135.56&lt;br /&gt;
5 = 150&lt;br /&gt;
6 = 300&lt;br /&gt;
7 = 600&lt;br /&gt;
8 = 1200&lt;br /&gt;
9 = 1800&lt;br /&gt;
10 = 2400&lt;br /&gt;
11 = 3600&lt;br /&gt;
12 = 4800&lt;br /&gt;
13 = 7200&lt;br /&gt;
14 = 9600&lt;br /&gt;
15 = 19,200&lt;br /&gt;
Default: 6&lt;br /&gt;
&lt;br /&gt;
Second Parameter:&lt;br /&gt;
Sent to 6551 command register&lt;br /&gt;
1: $09 00001001 - No Parity&lt;br /&gt;
2: $29 00101001 - Odd Parity&lt;br /&gt;
3: $69 01101001 - Even Parity&lt;br /&gt;
4: $A9 10101001 - Mark Parity&lt;br /&gt;
5: $E9 11101001 - Space Parity&lt;br /&gt;
Transmit interrupt disabled&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
Third parameter:&lt;br /&gt;
Data word length, 5 to 8.&lt;br /&gt;
Default: 8&lt;br /&gt;
&lt;br /&gt;
Fourth parameter:&lt;br /&gt;
Stop Bits&lt;br /&gt;
1 = 1 stop bit&lt;br /&gt;
2 = 2 stop bits&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
=== MAPMODE &amp;lt;value&amp;gt; ===&lt;br /&gt;
If the value is 0, the Color Computer is set to 0.89 MHz for the entire address space.&lt;br /&gt;
If the value is 1, the Color Computer is set to 1.76 MHz speed when reading from ROM, and 0.89 MHz when reading or writing to RAM.&lt;br /&gt;
&lt;br /&gt;
=== XOR ===&lt;br /&gt;
The exclusive or operator is true if 1 (and only 1) input is true, otherwise it is false.&lt;br /&gt;
This is used in the same sense as AND and OR in if/then statements:&lt;br /&gt;
IF A XOR B THEN 40&lt;br /&gt;
It is also use like AND and OR in bitwise expressions:&lt;br /&gt;
C = A XOR B&lt;br /&gt;
&lt;br /&gt;
=== ERR ===&lt;br /&gt;
Variable that contains the last error number.&lt;br /&gt;
&lt;br /&gt;
=== ERL ===&lt;br /&gt;
Variable that contains the line number where the last error occurred.&lt;br /&gt;
&lt;br /&gt;
=== TIME - tbd ===&lt;br /&gt;
&lt;br /&gt;
=== TIME$ - tbd ===&lt;br /&gt;
&lt;br /&gt;
=== STRIG(button) ===&lt;br /&gt;
This function returns the state of one of the four joystick buttons. Negative 1 if pressed, zero if not pressed.&amp;lt;br&amp;gt;&lt;br /&gt;
Button numbers 1, 3, 5, 7 return the real time value of the button state. This allows rapid fire with the button held down.&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 - Left joystick button 1&lt;br /&gt;
* 3 - Left joystick button 2&lt;br /&gt;
* 5 - Right joystick button 1&lt;br /&gt;
* 7 - Right joystick button 2&lt;br /&gt;
Button numbers 0, 2, 4, 6 return -1 if the button was pressed since the last time this function was called.&amp;lt;br&amp;gt;&lt;br /&gt;
It will then return 0 as long as the button is held down. A new button press will be required to get another -1. This is for single shot fire - the user needs to let go and press the button again in order to fire again.&lt;br /&gt;
* 0 - Left joystick button 1&lt;br /&gt;
* 2 - Left joystick button 2&lt;br /&gt;
* 4 - Right joystick button 1&lt;br /&gt;
* 6 - Right joystick button 2&lt;br /&gt;
&lt;br /&gt;
=== INPUT$(count, device) ===&lt;br /&gt;
Used to scan an input device and accumulate a string:&lt;br /&gt;
10 A$=INPUT$(3,#0)&lt;br /&gt;
20 ? A$&lt;br /&gt;
Will pause the program and wait for three keypresses. They are put into A$.&lt;br /&gt;
&lt;br /&gt;
=== ON ERROR GOTO &amp;lt;line number&amp;gt; ===&lt;br /&gt;
BASIC will jump to line number when an error is encountered. ERL and ERR will contain the line number with the error and the numeric error code, respectively.&lt;br /&gt;
&lt;br /&gt;
== Changed Commands: ==&lt;br /&gt;
&lt;br /&gt;
The EDIT will now accept a single line number or a range. The command will clear the screen, list the program line/lines and put the cursor at the start of the screen.&lt;br /&gt;
&lt;br /&gt;
A CLS value of 9 to 255 will cold start the computer. We suspect that this is a bug that should eventually be fixed.&lt;br /&gt;
&lt;br /&gt;
A CLS value greater than 255 will cause an ?FC error.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Advanced Color BASIC - added ROM vector calls ===&lt;br /&gt;
&lt;br /&gt;
Like Color BASIC and Disk BASIC, which used Extended indirect addresses to call functions within the ROM’s (like JOYIN, DSKCON, etc.), Advanced Color BASIC seems to reserve from $8000-$8015 for additional calls as well. This allows the routines themselves to move around as the ROM was updated, but calling programs would have a set point to enter them.&lt;br /&gt;
[$8000] - Calls $FB00, which is a 3 entry table of LBRA instructions:&lt;br /&gt;
	LBRA	$FD32&lt;br /&gt;
	LBRA	$FB1A&lt;br /&gt;
	LBRA	$FD92&lt;br /&gt;
[$8002] - Calls $FB09, which is a 1 entry table of LBRA instructions (I assume more would have&lt;br /&gt;
been added later)&lt;br /&gt;
LBRA	$FE16&lt;br /&gt;
[$8004] - ??? (points to $09D4, which is in BASIC’s data area)&lt;br /&gt;
[$8006] - ??? (points to $E968)&lt;br /&gt;
[$8008] - ??? (points to $0ABE, which is in BASIC’s data area)&lt;br /&gt;
[$800A] - ??? (points to $AD15)&lt;br /&gt;
[$800C] - If $0A04=0, initialize the 6551 &amp;amp; it’s related variables including 128 byte receive&lt;br /&gt;
buffer (calls $9254)&lt;br /&gt;
[$800E] - ??? (points to $929D)&lt;br /&gt;
[$8010] - ??? (points to $DE28)&lt;br /&gt;
[$8012] - Calls $92E7, which will return a character from the 128 byte RS232 receive buffer,&lt;br /&gt;
OR&lt;br /&gt;
	wait for an RS232 character to be received if the buffer is empty.&lt;br /&gt;
[$8014] - Calls $92BD, which will transmit a character through the RS232.&lt;/div&gt;</description>
			<pubDate>Sun, 18 Feb 2024 18:51:58 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Advanced_Color_BASIC_Documentation</comments>
		</item>
		<item>
			<title>Advanced Color BASIC Documentation</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10774</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10774</guid>
			<description>&lt;p&gt;Tlindner: /* Advanced Color BASIC - New and updated features explained */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Advanced Color BASIC - New and updated features explained ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
This document explains the Advanced Color BASIC found late in 2023.&lt;br /&gt;
Versioned 0.0.7. It is from Robert Killgus&#039; collection.&lt;br /&gt;
&lt;br /&gt;
=== Allows lowercase characters in keywords. ===&lt;br /&gt;
&lt;br /&gt;
=== Full screen editor is always available. ===&lt;br /&gt;
Hold alternate and arrow keys to move the cursor around.&lt;br /&gt;
Alternate and &#039;I&#039; will insert a space and move the characters after the cursor to the right one space.&lt;br /&gt;
Alternate and &#039;D&#039; will delete the character under the cursor and shift the remaining characters to the left.&lt;br /&gt;
Alternate and &#039;E&#039; will delete the characters after the cursor to the end of the line.&lt;br /&gt;
Alternate and ‘H” will move the cursor to the top left corner of the screen.&lt;br /&gt;
Right Arrow (without the alternate key) will move the cursor right 9 spaces.&lt;br /&gt;
The break key will abort editing and put the cursor at the bottom left of the screen.&lt;br /&gt;
Press the enter key to commit an edited line. You do not have to be at the end of a line.&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-3. ===&lt;br /&gt;
Sends and receives data to/from the new serial port.&lt;br /&gt;
Uses:&lt;br /&gt;
PRINT #-3, &amp;quot;HELLO WORLD&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-4 - tbd ===&lt;br /&gt;
&lt;br /&gt;
=== RAM Disk ===&lt;br /&gt;
Drive 4 is a RAM Disk. It has 12 granules available. It is available even if there is no disk cartridge inserted.&lt;br /&gt;
&lt;br /&gt;
If a disk cartridge is inserted on cold boot, you are presented with a menu option to go to BASIC or &amp;quot;Disk&amp;quot;. If you choose &amp;quot;Disk&amp;quot; the equivalent of a DOS command is executed.&lt;br /&gt;
&lt;br /&gt;
== New commands ==&lt;br /&gt;
&lt;br /&gt;
=== ERROR &amp;lt;value&amp;gt; ===&lt;br /&gt;
Will cause the computer to stop the program and issue the respective error.&lt;br /&gt;
&lt;br /&gt;
=== RESUME &amp;lt;line number&amp;gt; ===&lt;br /&gt;
Resumes a program at line number from the error handler.&lt;br /&gt;
&lt;br /&gt;
=== WHILE &amp;lt;boolean expression&amp;gt; / WEND ===&lt;br /&gt;
This is a loop construct that will execute the statements between WHILE and WEND repeatedly until the boolean expression is false.&lt;br /&gt;
&lt;br /&gt;
=== TONE channel, toneperiod, amplitude ===&lt;br /&gt;
channel: 1-3&lt;br /&gt;
toneperiod: 0-4095&lt;br /&gt;
amplitude: 0-15&lt;br /&gt;
&lt;br /&gt;
=== NOISE channel,noiseperiod,amplitude ===&lt;br /&gt;
channel: 1-3&lt;br /&gt;
noiseperiod: 0-31&lt;br /&gt;
amplitude 0-15&lt;br /&gt;
&lt;br /&gt;
=== ENV param1,param2,param3,param4,param5 ===&lt;br /&gt;
TBD 5 numeric parameters 0-65535 allowed &lt;br /&gt;
&lt;br /&gt;
TONE 1,2048,15 &#039; start tone 2048 on channel 1 at max volume&lt;br /&gt;
NOISE 2,31,15 &#039; start noise 31 on channel 2 at max volume&lt;br /&gt;
NOISE 2,0 &#039; stop noise on channel 2&lt;br /&gt;
TONE 1,0,0 &#039; stop tone on channel 1&lt;br /&gt;
SOUND command unaltered&lt;br /&gt;
TBD determine if PLAY command supports 3-voice like N60 BASIC (also by Microsoft) does&lt;br /&gt;
&lt;br /&gt;
=== CHAIN - tbd. ===&lt;br /&gt;
&lt;br /&gt;
=== COMMON ===&lt;br /&gt;
Restrictive comment. For Example:&lt;br /&gt;
10 COMMON This is a comment : PRINT “HELLO WORLD”&lt;br /&gt;
The text after the COMMON command will not be executed, but the command after the colon will. This is different from REM&lt;br /&gt;
10 REM This is a comment : PRINT “HELLO WORLD”&lt;br /&gt;
The REM command will cause everything to be ignored on the whole line.&lt;br /&gt;
&lt;br /&gt;
=== TERM - tbd. ===&lt;br /&gt;
&lt;br /&gt;
=== CONFIG ===&lt;br /&gt;
Configures the UART Serial port:&lt;br /&gt;
CONFIG #-3,[1-15],[1-5],[5-8],[1-2]&lt;br /&gt;
First parameter:&lt;br /&gt;
BAUD&lt;br /&gt;
1 = 50&lt;br /&gt;
2 = 75&lt;br /&gt;
3 = 109.92&lt;br /&gt;
4 = 135.56&lt;br /&gt;
5 = 150&lt;br /&gt;
6 = 300&lt;br /&gt;
7 = 600&lt;br /&gt;
8 = 1200&lt;br /&gt;
9 = 1800&lt;br /&gt;
10 = 2400&lt;br /&gt;
11 = 3600&lt;br /&gt;
12 = 4800&lt;br /&gt;
13 = 7200&lt;br /&gt;
14 = 9600&lt;br /&gt;
15 = 19,200&lt;br /&gt;
Default: 6&lt;br /&gt;
&lt;br /&gt;
Second Parameter:&lt;br /&gt;
Sent to 6551 command register&lt;br /&gt;
1: $09 00001001 - No Parity&lt;br /&gt;
2: $29 00101001 - Odd Parity&lt;br /&gt;
3: $69 01101001 - Even Parity&lt;br /&gt;
4: $A9 10101001 - Mark Parity&lt;br /&gt;
5: $E9 11101001 - Space Parity&lt;br /&gt;
Transmit interrupt disabled&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
Third parameter:&lt;br /&gt;
Data word length, 5 to 8.&lt;br /&gt;
Default: 8&lt;br /&gt;
&lt;br /&gt;
Fourth parameter:&lt;br /&gt;
Stop Bits&lt;br /&gt;
1 = 1 stop bit&lt;br /&gt;
2 = 2 stop bits&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
=== MAPMODE &amp;lt;value&amp;gt; ===&lt;br /&gt;
If the value is 0, the Color Computer is set to 0.89 MHz for the entire address space.&lt;br /&gt;
If the value is 1, the Color Computer is set to 1.76 MHz speed when reading from ROM, and 0.89 MHz when reading or writing to RAM.&lt;br /&gt;
&lt;br /&gt;
=== XOR ===&lt;br /&gt;
The exclusive or operator is true if 1 (and only 1) input is true, otherwise it is false.&lt;br /&gt;
This is used in the same sense as AND and OR in if/then statements:&lt;br /&gt;
IF A XOR B THEN 40&lt;br /&gt;
It is also use like AND and OR in bitwise expressions:&lt;br /&gt;
C = A XOR B&lt;br /&gt;
&lt;br /&gt;
=== ERR ===&lt;br /&gt;
Variable that contains the last error number.&lt;br /&gt;
&lt;br /&gt;
=== ERL ===&lt;br /&gt;
Variable that contains the line number where the last error occurred.&lt;br /&gt;
&lt;br /&gt;
=== TIME - tbd ===&lt;br /&gt;
&lt;br /&gt;
=== TIME$ - tbd ===&lt;br /&gt;
&lt;br /&gt;
=== STRIG(button) ===&lt;br /&gt;
This function returns the state of one of the four joystick buttons. Negative 1 if pressed, zero if not pressed.&amp;lt;br&amp;gt;&lt;br /&gt;
Button numbers 1, 3, 5, 7 return the real time value of the button state. This allows rapid fire with the button held down.&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 - Left joystick button 1&lt;br /&gt;
* 3 - Left joystick button 2&lt;br /&gt;
* 5 - Right joystick button 1&lt;br /&gt;
* 7 - Right joystick button 2&lt;br /&gt;
Button numbers 0, 2, 4, 6 return -1 if the button was pressed since the last time this function was called.&amp;lt;br&amp;gt;&lt;br /&gt;
It will then return 0 as long as the button is held down. A new button press will be required to get another -1. This is for single shot fire - the user needs to let go and press the button again in order to fire again.&lt;br /&gt;
* 0 - Left joystick button 1&lt;br /&gt;
* 2 - Left joystick button 2&lt;br /&gt;
* 4 - Right joystick button 1&lt;br /&gt;
* 6 - Right joystick button 2&lt;br /&gt;
&lt;br /&gt;
=== INPUT$(count, device) ===&lt;br /&gt;
Used to scan an input device and accumulate a string:&lt;br /&gt;
10 A$=INPUT$(3,#0)&lt;br /&gt;
20 ? A$&lt;br /&gt;
Will pause the program and wait for three keypresses. They are put into A$.&lt;br /&gt;
&lt;br /&gt;
=== ON ERROR GOTO &amp;lt;line number&amp;gt; ===&lt;br /&gt;
BASIC will jump to line number when an error is encountered. ERL and ERR will contain the line number with the error and the numeric error code, respectively.&lt;br /&gt;
&lt;br /&gt;
== Changed Commands: ==&lt;br /&gt;
&lt;br /&gt;
The EDIT will now accept a single line number or a range. The command will clear the screen, list the program line/lines and put the cursor at the start of the screen.&lt;br /&gt;
&lt;br /&gt;
A CLS value of 9 to 255 will cold start the computer. We suspect that this is a bug that should eventually be fixed.&lt;br /&gt;
&lt;br /&gt;
A CLS value greater than 255 will cause an ?FC error.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Advanced Color BASIC - added ROM vector calls ===&lt;br /&gt;
&lt;br /&gt;
Like Color BASIC and Disk BASIC, which used Extended indirect addresses to call functions within the ROM’s (like JOYIN, DSKCON, etc.), Advanced Color BASIC seems to reserve from $8000-$8015 for additional calls as well. This allows the routines themselves to move around as the ROM was updated, but calling programs would have a set point to enter them.&lt;br /&gt;
[$8000] - Calls $FB00, which is a 3 entry table of LBRA instructions:&lt;br /&gt;
	LBRA	$FD32&lt;br /&gt;
	LBRA	$FB1A&lt;br /&gt;
	LBRA	$FD92&lt;br /&gt;
[$8002] - Calls $FB09, which is a 1 entry table of LBRA instructions (I assume more would have&lt;br /&gt;
been added later)&lt;br /&gt;
LBRA	$FE16&lt;br /&gt;
[$8004] - ??? (points to $09D4, which is in BASIC’s data area)&lt;br /&gt;
[$8006] - ??? (points to $E968)&lt;br /&gt;
[$8008] - ??? (points to $0ABE, which is in BASIC’s data area)&lt;br /&gt;
[$800A] - ??? (points to $AD15)&lt;br /&gt;
[$800C] - If $0A04=0, initialize the 6551 &amp;amp; it’s related variables including 128 byte receive&lt;br /&gt;
buffer (calls $9254)&lt;br /&gt;
[$800E] - ??? (points to $929D)&lt;br /&gt;
[$8010] - ??? (points to $DE28)&lt;br /&gt;
[$8012] - Calls $92E7, which will return a character from the 128 byte RS232 receive buffer,&lt;br /&gt;
OR&lt;br /&gt;
	wait for an RS232 character to be received if the buffer is empty.&lt;br /&gt;
[$8014] - Calls $92BD, which will transmit a character through the RS232.&lt;/div&gt;</description>
			<pubDate>Sun, 18 Feb 2024 18:49:41 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Advanced_Color_BASIC_Documentation</comments>
		</item>
		<item>
			<title>Advanced Color BASIC Documentation</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10773</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10773</guid>
			<description>&lt;p&gt;Tlindner: Added provenance.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Advanced Color BASIC - New and updated features explained ==&lt;br /&gt;
This document explains the Advanced Color BASIC found late in 2023.&lt;br /&gt;
Versioned 0.0.7. It is from Robert Killgus&#039; collection.&lt;br /&gt;
&lt;br /&gt;
=== Allows lowercase characters in keywords. ===&lt;br /&gt;
&lt;br /&gt;
=== Full screen editor is always available. ===&lt;br /&gt;
Hold alternate and arrow keys to move the cursor around.&lt;br /&gt;
Alternate and &#039;I&#039; will insert a space and move the characters after the cursor to the right one space.&lt;br /&gt;
Alternate and &#039;D&#039; will delete the character under the cursor and shift the remaining characters to the left.&lt;br /&gt;
Alternate and &#039;E&#039; will delete the characters after the cursor to the end of the line.&lt;br /&gt;
Alternate and ‘H” will move the cursor to the top left corner of the screen.&lt;br /&gt;
Right Arrow (without the alternate key) will move the cursor right 9 spaces.&lt;br /&gt;
The break key will abort editing and put the cursor at the bottom left of the screen.&lt;br /&gt;
Press the enter key to commit an edited line. You do not have to be at the end of a line.&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-3. ===&lt;br /&gt;
Sends and receives data to/from the new serial port.&lt;br /&gt;
Uses:&lt;br /&gt;
PRINT #-3, &amp;quot;HELLO WORLD&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-4 - tbd ===&lt;br /&gt;
&lt;br /&gt;
=== RAM Disk ===&lt;br /&gt;
Drive 4 is a RAM Disk. It has 12 granules available. It is available even if there is no disk cartridge inserted.&lt;br /&gt;
&lt;br /&gt;
If a disk cartridge is inserted on cold boot, you are presented with a menu option to go to BASIC or &amp;quot;Disk&amp;quot;. If you choose &amp;quot;Disk&amp;quot; the equivalent of a DOS command is executed.&lt;br /&gt;
&lt;br /&gt;
== New commands ==&lt;br /&gt;
&lt;br /&gt;
=== ERROR &amp;lt;value&amp;gt; ===&lt;br /&gt;
Will cause the computer to stop the program and issue the respective error.&lt;br /&gt;
&lt;br /&gt;
=== RESUME &amp;lt;line number&amp;gt; ===&lt;br /&gt;
Resumes a program at line number from the error handler.&lt;br /&gt;
&lt;br /&gt;
=== WHILE &amp;lt;boolean expression&amp;gt; / WEND ===&lt;br /&gt;
This is a loop construct that will execute the statements between WHILE and WEND repeatedly until the boolean expression is false.&lt;br /&gt;
&lt;br /&gt;
=== TONE channel, toneperiod, amplitude ===&lt;br /&gt;
channel: 1-3&lt;br /&gt;
toneperiod: 0-4095&lt;br /&gt;
amplitude: 0-15&lt;br /&gt;
&lt;br /&gt;
=== NOISE channel,noiseperiod,amplitude ===&lt;br /&gt;
channel: 1-3&lt;br /&gt;
noiseperiod: 0-31&lt;br /&gt;
amplitude 0-15&lt;br /&gt;
&lt;br /&gt;
=== ENV param1,param2,param3,param4,param5 ===&lt;br /&gt;
TBD 5 numeric parameters 0-65535 allowed &lt;br /&gt;
&lt;br /&gt;
TONE 1,2048,15 &#039; start tone 2048 on channel 1 at max volume&lt;br /&gt;
NOISE 2,31,15 &#039; start noise 31 on channel 2 at max volume&lt;br /&gt;
NOISE 2,0 &#039; stop noise on channel 2&lt;br /&gt;
TONE 1,0,0 &#039; stop tone on channel 1&lt;br /&gt;
SOUND command unaltered&lt;br /&gt;
TBD determine if PLAY command supports 3-voice like N60 BASIC (also by Microsoft) does&lt;br /&gt;
&lt;br /&gt;
=== CHAIN - tbd. ===&lt;br /&gt;
&lt;br /&gt;
=== COMMON ===&lt;br /&gt;
Restrictive comment. For Example:&lt;br /&gt;
10 COMMON This is a comment : PRINT “HELLO WORLD”&lt;br /&gt;
The text after the COMMON command will not be executed, but the command after the colon will. This is different from REM&lt;br /&gt;
10 REM This is a comment : PRINT “HELLO WORLD”&lt;br /&gt;
The REM command will cause everything to be ignored on the whole line.&lt;br /&gt;
&lt;br /&gt;
=== TERM - tbd. ===&lt;br /&gt;
&lt;br /&gt;
=== CONFIG ===&lt;br /&gt;
Configures the UART Serial port:&lt;br /&gt;
CONFIG #-3,[1-15],[1-5],[5-8],[1-2]&lt;br /&gt;
First parameter:&lt;br /&gt;
BAUD&lt;br /&gt;
1 = 50&lt;br /&gt;
2 = 75&lt;br /&gt;
3 = 109.92&lt;br /&gt;
4 = 135.56&lt;br /&gt;
5 = 150&lt;br /&gt;
6 = 300&lt;br /&gt;
7 = 600&lt;br /&gt;
8 = 1200&lt;br /&gt;
9 = 1800&lt;br /&gt;
10 = 2400&lt;br /&gt;
11 = 3600&lt;br /&gt;
12 = 4800&lt;br /&gt;
13 = 7200&lt;br /&gt;
14 = 9600&lt;br /&gt;
15 = 19,200&lt;br /&gt;
Default: 6&lt;br /&gt;
&lt;br /&gt;
Second Parameter:&lt;br /&gt;
Sent to 6551 command register&lt;br /&gt;
1: $09 00001001 - No Parity&lt;br /&gt;
2: $29 00101001 - Odd Parity&lt;br /&gt;
3: $69 01101001 - Even Parity&lt;br /&gt;
4: $A9 10101001 - Mark Parity&lt;br /&gt;
5: $E9 11101001 - Space Parity&lt;br /&gt;
Transmit interrupt disabled&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
Third parameter:&lt;br /&gt;
Data word length, 5 to 8.&lt;br /&gt;
Default: 8&lt;br /&gt;
&lt;br /&gt;
Fourth parameter:&lt;br /&gt;
Stop Bits&lt;br /&gt;
1 = 1 stop bit&lt;br /&gt;
2 = 2 stop bits&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
=== MAPMODE &amp;lt;value&amp;gt; ===&lt;br /&gt;
If the value is 0, the Color Computer is set to 0.89 MHz for the entire address space.&lt;br /&gt;
If the value is 1, the Color Computer is set to 1.76 MHz speed when reading from ROM, and 0.89 MHz when reading or writing to RAM.&lt;br /&gt;
&lt;br /&gt;
=== XOR ===&lt;br /&gt;
The exclusive or operator is true if 1 (and only 1) input is true, otherwise it is false.&lt;br /&gt;
This is used in the same sense as AND and OR in if/then statements:&lt;br /&gt;
IF A XOR B THEN 40&lt;br /&gt;
It is also use like AND and OR in bitwise expressions:&lt;br /&gt;
C = A XOR B&lt;br /&gt;
&lt;br /&gt;
=== ERR ===&lt;br /&gt;
Variable that contains the last error number.&lt;br /&gt;
&lt;br /&gt;
=== ERL ===&lt;br /&gt;
Variable that contains the line number where the last error occurred.&lt;br /&gt;
&lt;br /&gt;
=== TIME - tbd ===&lt;br /&gt;
&lt;br /&gt;
=== TIME$ - tbd ===&lt;br /&gt;
&lt;br /&gt;
=== STRIG(button) ===&lt;br /&gt;
This function returns the state of one of the four joystick buttons. Negative 1 if pressed, zero if not pressed.&amp;lt;br&amp;gt;&lt;br /&gt;
Button numbers 1, 3, 5, 7 return the real time value of the button state. This allows rapid fire with the button held down.&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 - Left joystick button 1&lt;br /&gt;
* 3 - Left joystick button 2&lt;br /&gt;
* 5 - Right joystick button 1&lt;br /&gt;
* 7 - Right joystick button 2&lt;br /&gt;
Button numbers 0, 2, 4, 6 return -1 if the button was pressed since the last time this function was called.&amp;lt;br&amp;gt;&lt;br /&gt;
It will then return 0 as long as the button is held down. A new button press will be required to get another -1. This is for single shot fire - the user needs to let go and press the button again in order to fire again.&lt;br /&gt;
* 0 - Left joystick button 1&lt;br /&gt;
* 2 - Left joystick button 2&lt;br /&gt;
* 4 - Right joystick button 1&lt;br /&gt;
* 6 - Right joystick button 2&lt;br /&gt;
&lt;br /&gt;
=== INPUT$(count, device) ===&lt;br /&gt;
Used to scan an input device and accumulate a string:&lt;br /&gt;
10 A$=INPUT$(3,#0)&lt;br /&gt;
20 ? A$&lt;br /&gt;
Will pause the program and wait for three keypresses. They are put into A$.&lt;br /&gt;
&lt;br /&gt;
=== ON ERROR GOTO &amp;lt;line number&amp;gt; ===&lt;br /&gt;
BASIC will jump to line number when an error is encountered. ERL and ERR will contain the line number with the error and the numeric error code, respectively.&lt;br /&gt;
&lt;br /&gt;
== Changed Commands: ==&lt;br /&gt;
&lt;br /&gt;
The EDIT will now accept a single line number or a range. The command will clear the screen, list the program line/lines and put the cursor at the start of the screen.&lt;br /&gt;
&lt;br /&gt;
A CLS value of 9 to 255 will cold start the computer. We suspect that this is a bug that should eventually be fixed.&lt;br /&gt;
&lt;br /&gt;
A CLS value greater than 255 will cause an ?FC error.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Advanced Color BASIC - added ROM vector calls ===&lt;br /&gt;
&lt;br /&gt;
Like Color BASIC and Disk BASIC, which used Extended indirect addresses to call functions within the ROM’s (like JOYIN, DSKCON, etc.), Advanced Color BASIC seems to reserve from $8000-$8015 for additional calls as well. This allows the routines themselves to move around as the ROM was updated, but calling programs would have a set point to enter them.&lt;br /&gt;
[$8000] - Calls $FB00, which is a 3 entry table of LBRA instructions:&lt;br /&gt;
	LBRA	$FD32&lt;br /&gt;
	LBRA	$FB1A&lt;br /&gt;
	LBRA	$FD92&lt;br /&gt;
[$8002] - Calls $FB09, which is a 1 entry table of LBRA instructions (I assume more would have&lt;br /&gt;
been added later)&lt;br /&gt;
LBRA	$FE16&lt;br /&gt;
[$8004] - ??? (points to $09D4, which is in BASIC’s data area)&lt;br /&gt;
[$8006] - ??? (points to $E968)&lt;br /&gt;
[$8008] - ??? (points to $0ABE, which is in BASIC’s data area)&lt;br /&gt;
[$800A] - ??? (points to $AD15)&lt;br /&gt;
[$800C] - If $0A04=0, initialize the 6551 &amp;amp; it’s related variables including 128 byte receive&lt;br /&gt;
buffer (calls $9254)&lt;br /&gt;
[$800E] - ??? (points to $929D)&lt;br /&gt;
[$8010] - ??? (points to $DE28)&lt;br /&gt;
[$8012] - Calls $92E7, which will return a character from the 128 byte RS232 receive buffer,&lt;br /&gt;
OR&lt;br /&gt;
	wait for an RS232 character to be received if the buffer is empty.&lt;br /&gt;
[$8014] - Calls $92BD, which will transmit a character through the RS232.&lt;/div&gt;</description>
			<pubDate>Sun, 18 Feb 2024 18:43:38 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Advanced_Color_BASIC_Documentation</comments>
		</item>
		<item>
			<title>Advanced Color BASIC Documentation</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10771</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10771</guid>
			<description>&lt;p&gt;Tlindner: /* STRIG(button) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Advanced Color BASIC - New and updated features explained ==&lt;br /&gt;
&lt;br /&gt;
=== Allows lowercase characters in keywords. ===&lt;br /&gt;
&lt;br /&gt;
=== Full screen editor is always available. ===&lt;br /&gt;
Hold alternate and arrow keys to move the cursor around.&lt;br /&gt;
Alternate and &#039;I&#039; will insert a space and move the characters after the cursor to the right one space.&lt;br /&gt;
Alternate and &#039;D&#039; will delete the character under the cursor and shift the remaining characters to the left.&lt;br /&gt;
Alternate and &#039;E&#039; will delete the characters after the cursor to the end of the line.&lt;br /&gt;
Alternate and ‘H” will move the cursor to the top left corner of the screen.&lt;br /&gt;
Right Arrow (without the alternate key) will move the cursor right 9 spaces.&lt;br /&gt;
The break key will abort editing and put the cursor at the bottom left of the screen.&lt;br /&gt;
Press the enter key to commit an edited line. You do not have to be at the end of a line.&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-3. ===&lt;br /&gt;
Sends and receives data to/from the new serial port.&lt;br /&gt;
Uses:&lt;br /&gt;
PRINT #-3, &amp;quot;HELLO WORLD&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-4 - tbd ===&lt;br /&gt;
&lt;br /&gt;
=== RAM Disk ===&lt;br /&gt;
Drive 4 is a RAM Disk. It has 12 granules available. It is available even if there is no disk cartridge inserted.&lt;br /&gt;
&lt;br /&gt;
If a disk cartridge is inserted on cold boot, you are presented with a menu option to go to BASIC or &amp;quot;Disk&amp;quot;. If you choose &amp;quot;Disk&amp;quot; the equivalent of a DOS command is executed.&lt;br /&gt;
&lt;br /&gt;
== New commands ==&lt;br /&gt;
&lt;br /&gt;
=== ERROR &amp;lt;value&amp;gt; ===&lt;br /&gt;
Will cause the computer to stop the program and issue the respective error.&lt;br /&gt;
&lt;br /&gt;
=== RESUME &amp;lt;line number&amp;gt; ===&lt;br /&gt;
Resumes a program at line number from the error handler.&lt;br /&gt;
&lt;br /&gt;
=== WHILE &amp;lt;boolean expression&amp;gt; / WEND ===&lt;br /&gt;
This is a loop construct that will execute the statements between WHILE and WEND repeatedly until the boolean expression is false.&lt;br /&gt;
&lt;br /&gt;
=== TONE channel, toneperiod, amplitude ===&lt;br /&gt;
channel: 1-3&lt;br /&gt;
toneperiod: 0-4095&lt;br /&gt;
amplitude: 0-15&lt;br /&gt;
&lt;br /&gt;
=== NOISE channel,noiseperiod,amplitude ===&lt;br /&gt;
channel: 1-3&lt;br /&gt;
noiseperiod: 0-31&lt;br /&gt;
amplitude 0-15&lt;br /&gt;
&lt;br /&gt;
=== ENV param1,param2,param3,param4,param5 ===&lt;br /&gt;
TBD 5 numeric parameters 0-65535 allowed &lt;br /&gt;
&lt;br /&gt;
TONE 1,2048,15 &#039; start tone 2048 on channel 1 at max volume&lt;br /&gt;
NOISE 2,31,15 &#039; start noise 31 on channel 2 at max volume&lt;br /&gt;
NOISE 2,0 &#039; stop noise on channel 2&lt;br /&gt;
TONE 1,0,0 &#039; stop tone on channel 1&lt;br /&gt;
SOUND command unaltered&lt;br /&gt;
TBD determine if PLAY command supports 3-voice like N60 BASIC (also by Microsoft) does&lt;br /&gt;
&lt;br /&gt;
=== CHAIN - tbd. ===&lt;br /&gt;
&lt;br /&gt;
=== COMMON ===&lt;br /&gt;
Restrictive comment. For Example:&lt;br /&gt;
10 COMMON This is a comment : PRINT “HELLO WORLD”&lt;br /&gt;
The text after the COMMON command will not be executed, but the command after the colon will. This is different from REM&lt;br /&gt;
10 REM This is a comment : PRINT “HELLO WORLD”&lt;br /&gt;
The REM command will cause everything to be ignored on the whole line.&lt;br /&gt;
&lt;br /&gt;
=== TERM - tbd. ===&lt;br /&gt;
&lt;br /&gt;
=== CONFIG ===&lt;br /&gt;
Configures the UART Serial port:&lt;br /&gt;
CONFIG #-3,[1-15],[1-5],[5-8],[1-2]&lt;br /&gt;
First parameter:&lt;br /&gt;
BAUD&lt;br /&gt;
1 = 50&lt;br /&gt;
2 = 75&lt;br /&gt;
3 = 109.92&lt;br /&gt;
4 = 135.56&lt;br /&gt;
5 = 150&lt;br /&gt;
6 = 300&lt;br /&gt;
7 = 600&lt;br /&gt;
8 = 1200&lt;br /&gt;
9 = 1800&lt;br /&gt;
10 = 2400&lt;br /&gt;
11 = 3600&lt;br /&gt;
12 = 4800&lt;br /&gt;
13 = 7200&lt;br /&gt;
14 = 9600&lt;br /&gt;
15 = 19,200&lt;br /&gt;
Default: 6&lt;br /&gt;
&lt;br /&gt;
Second Parameter:&lt;br /&gt;
Sent to 6551 command register&lt;br /&gt;
1: $09 00001001 - No Parity&lt;br /&gt;
2: $29 00101001 - Odd Parity&lt;br /&gt;
3: $69 01101001 - Even Parity&lt;br /&gt;
4: $A9 10101001 - Mark Parity&lt;br /&gt;
5: $E9 11101001 - Space Parity&lt;br /&gt;
Transmit interrupt disabled&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
Third parameter:&lt;br /&gt;
Data word length, 5 to 8.&lt;br /&gt;
Default: 8&lt;br /&gt;
&lt;br /&gt;
Fourth parameter:&lt;br /&gt;
Stop Bits&lt;br /&gt;
1 = 1 stop bit&lt;br /&gt;
2 = 2 stop bits&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
=== MAPMODE &amp;lt;value&amp;gt; ===&lt;br /&gt;
If the value is 0, the Color Computer is set to 0.89 MHz for the entire address space.&lt;br /&gt;
If the value is 1, the Color Computer is set to 1.76 MHz speed when reading from ROM, and 0.89 MHz when reading or writing to RAM.&lt;br /&gt;
&lt;br /&gt;
=== XOR ===&lt;br /&gt;
The exclusive or operator is true if 1 (and only 1) input is true, otherwise it is false.&lt;br /&gt;
This is used in the same sense as AND and OR in if/then statements:&lt;br /&gt;
IF A XOR B THEN 40&lt;br /&gt;
It is also use like AND and OR in bitwise expressions:&lt;br /&gt;
C = A XOR B&lt;br /&gt;
&lt;br /&gt;
=== ERR ===&lt;br /&gt;
Variable that contains the last error number.&lt;br /&gt;
&lt;br /&gt;
=== ERL ===&lt;br /&gt;
Variable that contains the line number where the last error occurred.&lt;br /&gt;
&lt;br /&gt;
=== TIME - tbd ===&lt;br /&gt;
&lt;br /&gt;
=== TIME$ - tbd ===&lt;br /&gt;
&lt;br /&gt;
=== STRIG(button) ===&lt;br /&gt;
This function returns the state of one of the four joystick buttons. Negative 1 if pressed, zero if not pressed.&amp;lt;br&amp;gt;&lt;br /&gt;
Button numbers 1, 3, 5, 7 return the real time value of the button state. This allows rapid fire with the button held down.&amp;lt;br&amp;gt;&lt;br /&gt;
* 1 - Left joystick button 1&lt;br /&gt;
* 3 - Left joystick button 2&lt;br /&gt;
* 5 - Right joystick button 1&lt;br /&gt;
* 7 - Right joystick button 2&lt;br /&gt;
Button numbers 0, 2, 4, 6 return -1 if the button was pressed since the last time this function was called.&amp;lt;br&amp;gt;&lt;br /&gt;
It will then return 0 as long as the button is held down. A new button press will be required to get another -1. This is for single shot fire - the user needs to let go and press the button again in order to fire again.&lt;br /&gt;
* 0 - Left joystick button 1&lt;br /&gt;
* 2 - Left joystick button 2&lt;br /&gt;
* 4 - Right joystick button 1&lt;br /&gt;
* 6 - Right joystick button 2&lt;br /&gt;
&lt;br /&gt;
=== INPUT$(count, device) ===&lt;br /&gt;
Used to scan an input device and accumulate a string:&lt;br /&gt;
10 A$=INPUT$(3,#0)&lt;br /&gt;
20 ? A$&lt;br /&gt;
Will pause the program and wait for three keypresses. They are put into A$.&lt;br /&gt;
&lt;br /&gt;
=== ON ERROR GOTO &amp;lt;line number&amp;gt; ===&lt;br /&gt;
BASIC will jump to line number when an error is encountered. ERL and ERR will contain the line number with the error and the numeric error code, respectively.&lt;br /&gt;
&lt;br /&gt;
== Changed Commands: ==&lt;br /&gt;
&lt;br /&gt;
The EDIT will now accept a single line number or a range. The command will clear the screen, list the program line/lines and put the cursor at the start of the screen.&lt;br /&gt;
&lt;br /&gt;
A CLS value of 9 to 255 will cold start the computer. We suspect that this is a bug that should eventually be fixed.&lt;br /&gt;
&lt;br /&gt;
A CLS value greater than 255 will cause an ?FC error.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Advanced Color BASIC - added ROM vector calls ===&lt;br /&gt;
&lt;br /&gt;
Like Color BASIC and Disk BASIC, which used Extended indirect addresses to call functions within the ROM’s (like JOYIN, DSKCON, etc.), Advanced Color BASIC seems to reserve from $8000-$8015 for additional calls as well. This allows the routines themselves to move around as the ROM was updated, but calling programs would have a set point to enter them.&lt;br /&gt;
[$8000] - Calls $FB00, which is a 3 entry table of LBRA instructions:&lt;br /&gt;
	LBRA	$FD32&lt;br /&gt;
	LBRA	$FB1A&lt;br /&gt;
	LBRA	$FD92&lt;br /&gt;
[$8002] - Calls $FB09, which is a 1 entry table of LBRA instructions (I assume more would have&lt;br /&gt;
been added later)&lt;br /&gt;
LBRA	$FE16&lt;br /&gt;
[$8004] - ??? (points to $09D4, which is in BASIC’s data area)&lt;br /&gt;
[$8006] - ??? (points to $E968)&lt;br /&gt;
[$8008] - ??? (points to $0ABE, which is in BASIC’s data area)&lt;br /&gt;
[$800A] - ??? (points to $AD15)&lt;br /&gt;
[$800C] - If $0A04=0, initialize the 6551 &amp;amp; it’s related variables including 128 byte receive&lt;br /&gt;
buffer (calls $9254)&lt;br /&gt;
[$800E] - ??? (points to $929D)&lt;br /&gt;
[$8010] - ??? (points to $DE28)&lt;br /&gt;
[$8012] - Calls $92E7, which will return a character from the 128 byte RS232 receive buffer,&lt;br /&gt;
OR&lt;br /&gt;
	wait for an RS232 character to be received if the buffer is empty.&lt;br /&gt;
[$8014] - Calls $92BD, which will transmit a character through the RS232.&lt;/div&gt;</description>
			<pubDate>Sun, 18 Feb 2024 18:40:13 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Advanced_Color_BASIC_Documentation</comments>
		</item>
		<item>
			<title>Advanced Color BASIC Documentation</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10770</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Advanced_Color_BASIC_Documentation&amp;diff=10770</guid>
			<description>&lt;p&gt;Tlindner: Initial upload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Advanced Color BASIC - New and updated features explained ==&lt;br /&gt;
&lt;br /&gt;
=== Allows lowercase characters in keywords. ===&lt;br /&gt;
&lt;br /&gt;
=== Full screen editor is always available. ===&lt;br /&gt;
Hold alternate and arrow keys to move the cursor around.&lt;br /&gt;
Alternate and &#039;I&#039; will insert a space and move the characters after the cursor to the right one space.&lt;br /&gt;
Alternate and &#039;D&#039; will delete the character under the cursor and shift the remaining characters to the left.&lt;br /&gt;
Alternate and &#039;E&#039; will delete the characters after the cursor to the end of the line.&lt;br /&gt;
Alternate and ‘H” will move the cursor to the top left corner of the screen.&lt;br /&gt;
Right Arrow (without the alternate key) will move the cursor right 9 spaces.&lt;br /&gt;
The break key will abort editing and put the cursor at the bottom left of the screen.&lt;br /&gt;
Press the enter key to commit an edited line. You do not have to be at the end of a line.&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-3. ===&lt;br /&gt;
Sends and receives data to/from the new serial port.&lt;br /&gt;
Uses:&lt;br /&gt;
PRINT #-3, &amp;quot;HELLO WORLD&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== New device number: #-4 - tbd ===&lt;br /&gt;
&lt;br /&gt;
=== RAM Disk ===&lt;br /&gt;
Drive 4 is a RAM Disk. It has 12 granules available. It is available even if there is no disk cartridge inserted.&lt;br /&gt;
&lt;br /&gt;
If a disk cartridge is inserted on cold boot, you are presented with a menu option to go to BASIC or &amp;quot;Disk&amp;quot;. If you choose &amp;quot;Disk&amp;quot; the equivalent of a DOS command is executed.&lt;br /&gt;
&lt;br /&gt;
== New commands ==&lt;br /&gt;
&lt;br /&gt;
=== ERROR &amp;lt;value&amp;gt; ===&lt;br /&gt;
Will cause the computer to stop the program and issue the respective error.&lt;br /&gt;
&lt;br /&gt;
=== RESUME &amp;lt;line number&amp;gt; ===&lt;br /&gt;
Resumes a program at line number from the error handler.&lt;br /&gt;
&lt;br /&gt;
=== WHILE &amp;lt;boolean expression&amp;gt; / WEND ===&lt;br /&gt;
This is a loop construct that will execute the statements between WHILE and WEND repeatedly until the boolean expression is false.&lt;br /&gt;
&lt;br /&gt;
=== TONE channel, toneperiod, amplitude ===&lt;br /&gt;
channel: 1-3&lt;br /&gt;
toneperiod: 0-4095&lt;br /&gt;
amplitude: 0-15&lt;br /&gt;
&lt;br /&gt;
=== NOISE channel,noiseperiod,amplitude ===&lt;br /&gt;
channel: 1-3&lt;br /&gt;
noiseperiod: 0-31&lt;br /&gt;
amplitude 0-15&lt;br /&gt;
&lt;br /&gt;
=== ENV param1,param2,param3,param4,param5 ===&lt;br /&gt;
TBD 5 numeric parameters 0-65535 allowed &lt;br /&gt;
&lt;br /&gt;
TONE 1,2048,15 &#039; start tone 2048 on channel 1 at max volume&lt;br /&gt;
NOISE 2,31,15 &#039; start noise 31 on channel 2 at max volume&lt;br /&gt;
NOISE 2,0 &#039; stop noise on channel 2&lt;br /&gt;
TONE 1,0,0 &#039; stop tone on channel 1&lt;br /&gt;
SOUND command unaltered&lt;br /&gt;
TBD determine if PLAY command supports 3-voice like N60 BASIC (also by Microsoft) does&lt;br /&gt;
&lt;br /&gt;
=== CHAIN - tbd. ===&lt;br /&gt;
&lt;br /&gt;
=== COMMON ===&lt;br /&gt;
Restrictive comment. For Example:&lt;br /&gt;
10 COMMON This is a comment : PRINT “HELLO WORLD”&lt;br /&gt;
The text after the COMMON command will not be executed, but the command after the colon will. This is different from REM&lt;br /&gt;
10 REM This is a comment : PRINT “HELLO WORLD”&lt;br /&gt;
The REM command will cause everything to be ignored on the whole line.&lt;br /&gt;
&lt;br /&gt;
=== TERM - tbd. ===&lt;br /&gt;
&lt;br /&gt;
=== CONFIG ===&lt;br /&gt;
Configures the UART Serial port:&lt;br /&gt;
CONFIG #-3,[1-15],[1-5],[5-8],[1-2]&lt;br /&gt;
First parameter:&lt;br /&gt;
BAUD&lt;br /&gt;
1 = 50&lt;br /&gt;
2 = 75&lt;br /&gt;
3 = 109.92&lt;br /&gt;
4 = 135.56&lt;br /&gt;
5 = 150&lt;br /&gt;
6 = 300&lt;br /&gt;
7 = 600&lt;br /&gt;
8 = 1200&lt;br /&gt;
9 = 1800&lt;br /&gt;
10 = 2400&lt;br /&gt;
11 = 3600&lt;br /&gt;
12 = 4800&lt;br /&gt;
13 = 7200&lt;br /&gt;
14 = 9600&lt;br /&gt;
15 = 19,200&lt;br /&gt;
Default: 6&lt;br /&gt;
&lt;br /&gt;
Second Parameter:&lt;br /&gt;
Sent to 6551 command register&lt;br /&gt;
1: $09 00001001 - No Parity&lt;br /&gt;
2: $29 00101001 - Odd Parity&lt;br /&gt;
3: $69 01101001 - Even Parity&lt;br /&gt;
4: $A9 10101001 - Mark Parity&lt;br /&gt;
5: $E9 11101001 - Space Parity&lt;br /&gt;
Transmit interrupt disabled&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
Third parameter:&lt;br /&gt;
Data word length, 5 to 8.&lt;br /&gt;
Default: 8&lt;br /&gt;
&lt;br /&gt;
Fourth parameter:&lt;br /&gt;
Stop Bits&lt;br /&gt;
1 = 1 stop bit&lt;br /&gt;
2 = 2 stop bits&lt;br /&gt;
Default: 1&lt;br /&gt;
&lt;br /&gt;
=== MAPMODE &amp;lt;value&amp;gt; ===&lt;br /&gt;
If the value is 0, the Color Computer is set to 0.89 MHz for the entire address space.&lt;br /&gt;
If the value is 1, the Color Computer is set to 1.76 MHz speed when reading from ROM, and 0.89 MHz when reading or writing to RAM.&lt;br /&gt;
&lt;br /&gt;
=== XOR ===&lt;br /&gt;
The exclusive or operator is true if 1 (and only 1) input is true, otherwise it is false.&lt;br /&gt;
This is used in the same sense as AND and OR in if/then statements:&lt;br /&gt;
IF A XOR B THEN 40&lt;br /&gt;
It is also use like AND and OR in bitwise expressions:&lt;br /&gt;
C = A XOR B&lt;br /&gt;
&lt;br /&gt;
=== ERR ===&lt;br /&gt;
Variable that contains the last error number.&lt;br /&gt;
&lt;br /&gt;
=== ERL ===&lt;br /&gt;
Variable that contains the line number where the last error occurred.&lt;br /&gt;
&lt;br /&gt;
=== TIME - tbd ===&lt;br /&gt;
&lt;br /&gt;
=== TIME$ - tbd ===&lt;br /&gt;
&lt;br /&gt;
=== STRIG(button) ===&lt;br /&gt;
This function returns the state of one of the four joystick buttons. Negative 1 if pressed, zero if not pressed.&lt;br /&gt;
Button numbers 1, 3, 5, 7 return the real time value of the button state. This allows rapid fire with the button held down.&lt;br /&gt;
1 - Left joystick button 1&lt;br /&gt;
3 - Left joystick button 2&lt;br /&gt;
5 - Right joystick button 1&lt;br /&gt;
7 - Right joystick button 2&lt;br /&gt;
Button numbers 0, 2, 4, 6 return -1 if the button was pressed since the last time this function was called. It will then return 0 as long as the button is held down. A new button press will be required to get another -1. This is for single shot fire - the user needs to let go and press the button again in order to fire again.&lt;br /&gt;
0 - Left joystick button 1&lt;br /&gt;
2 - Left joystick button 2&lt;br /&gt;
4 - Right joystick button 1&lt;br /&gt;
6 - Right joystick button 2&lt;br /&gt;
&lt;br /&gt;
=== INPUT$(count, device) ===&lt;br /&gt;
Used to scan an input device and accumulate a string:&lt;br /&gt;
10 A$=INPUT$(3,#0)&lt;br /&gt;
20 ? A$&lt;br /&gt;
Will pause the program and wait for three keypresses. They are put into A$.&lt;br /&gt;
&lt;br /&gt;
=== ON ERROR GOTO &amp;lt;line number&amp;gt; ===&lt;br /&gt;
BASIC will jump to line number when an error is encountered. ERL and ERR will contain the line number with the error and the numeric error code, respectively.&lt;br /&gt;
&lt;br /&gt;
== Changed Commands: ==&lt;br /&gt;
&lt;br /&gt;
The EDIT will now accept a single line number or a range. The command will clear the screen, list the program line/lines and put the cursor at the start of the screen.&lt;br /&gt;
&lt;br /&gt;
A CLS value of 9 to 255 will cold start the computer. We suspect that this is a bug that should eventually be fixed.&lt;br /&gt;
&lt;br /&gt;
A CLS value greater than 255 will cause an ?FC error.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Advanced Color BASIC - added ROM vector calls ===&lt;br /&gt;
&lt;br /&gt;
Like Color BASIC and Disk BASIC, which used Extended indirect addresses to call functions within the ROM’s (like JOYIN, DSKCON, etc.), Advanced Color BASIC seems to reserve from $8000-$8015 for additional calls as well. This allows the routines themselves to move around as the ROM was updated, but calling programs would have a set point to enter them.&lt;br /&gt;
[$8000] - Calls $FB00, which is a 3 entry table of LBRA instructions:&lt;br /&gt;
	LBRA	$FD32&lt;br /&gt;
	LBRA	$FB1A&lt;br /&gt;
	LBRA	$FD92&lt;br /&gt;
[$8002] - Calls $FB09, which is a 1 entry table of LBRA instructions (I assume more would have&lt;br /&gt;
been added later)&lt;br /&gt;
LBRA	$FE16&lt;br /&gt;
[$8004] - ??? (points to $09D4, which is in BASIC’s data area)&lt;br /&gt;
[$8006] - ??? (points to $E968)&lt;br /&gt;
[$8008] - ??? (points to $0ABE, which is in BASIC’s data area)&lt;br /&gt;
[$800A] - ??? (points to $AD15)&lt;br /&gt;
[$800C] - If $0A04=0, initialize the 6551 &amp;amp; it’s related variables including 128 byte receive&lt;br /&gt;
buffer (calls $9254)&lt;br /&gt;
[$800E] - ??? (points to $929D)&lt;br /&gt;
[$8010] - ??? (points to $DE28)&lt;br /&gt;
[$8012] - Calls $92E7, which will return a character from the 128 byte RS232 receive buffer,&lt;br /&gt;
OR&lt;br /&gt;
	wait for an RS232 character to be received if the buffer is empty.&lt;br /&gt;
[$8014] - Calls $92BD, which will transmit a character through the RS232.&lt;/div&gt;</description>
			<pubDate>Sun, 18 Feb 2024 18:35:19 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Advanced_Color_BASIC_Documentation</comments>
		</item>
		<item>
			<title>The Voice</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=The_Voice&amp;diff=8163</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=The_Voice&amp;diff=8163</guid>
			<description>&lt;p&gt;Tlindner: Added pictures.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The voice was a cartridge base SC-01 voice synthesizer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Printed Circuit Board&amp;quot; widths=&amp;quot;180px&amp;quot; heights=&amp;quot;120px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
File:Speech_System_The_Voice_Front_PCB.JPG&lt;br /&gt;
File:Speech_Systems_The_Voice_Back_PCB.JPG&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</description>
			<pubDate>Mon, 29 May 2017 01:24:19 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:The_Voice</comments>
		</item>
		<item>
			<title>File:Speech Systems The Voice Back PCB.JPG</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=File:Speech_Systems_The_Voice_Back_PCB.JPG&amp;diff=8162</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=File:Speech_Systems_The_Voice_Back_PCB.JPG&amp;diff=8162</guid>
			<description>&lt;p&gt;Tlindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</description>
			<pubDate>Mon, 29 May 2017 01:23:27 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/File_talk:Speech_Systems_The_Voice_Back_PCB.JPG</comments>
		</item>
		<item>
			<title>File:Speech System The Voice Front PCB.JPG</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=File:Speech_System_The_Voice_Front_PCB.JPG&amp;diff=8161</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=File:Speech_System_The_Voice_Front_PCB.JPG&amp;diff=8161</guid>
			<description>&lt;p&gt;Tlindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</description>
			<pubDate>Mon, 29 May 2017 01:23:06 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/File_talk:Speech_System_The_Voice_Front_PCB.JPG</comments>
		</item>
		<item>
			<title>The Voice</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=The_Voice&amp;diff=8160</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=The_Voice&amp;diff=8160</guid>
			<description>&lt;p&gt;Tlindner: Created page with &amp;quot;The voice was a cartridge base SC-01 voice synthesizer.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The voice was a cartridge base SC-01 voice synthesizer.&lt;/div&gt;</description>
			<pubDate>Mon, 29 May 2017 01:21:21 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:The_Voice</comments>
		</item>
		<item>
			<title>Hardware</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Hardware&amp;diff=8159</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Hardware&amp;diff=8159</guid>
			<description>&lt;p&gt;Tlindner: Added link to The Voice&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavHardware}}&lt;br /&gt;
==Hardware design and integrated circuits==&lt;br /&gt;
Internally the CoCo 1 and CoCo 2 models are functionally identical. The core of the system is virtually identical to the reference design included in the Motorola MC6883 data sheet and consists of five LSI chips:&lt;br /&gt;
&lt;br /&gt;
*MC6809E [[Microprocessor Unit]] (MPU)&lt;br /&gt;
*MC6883/SN74LS783/SN74LS785 [[Synchronous Address Multiplexor]] (SAM)&lt;br /&gt;
*MC6847 [[Video Display Generator]] (VDG)&lt;br /&gt;
*Two [[Peripheral Interface Adapters]] (PIA), either MC6821 or MC6822 chips&lt;br /&gt;
&lt;br /&gt;
==Audio Digitizers==&lt;br /&gt;
*[[Delta Pro]]&lt;br /&gt;
*[[Max Sound]] - GimeSoft&#039;s audio recorder that used the joystick port.&lt;br /&gt;
&lt;br /&gt;
==Audio Output Devices==&lt;br /&gt;
*[[Orchestra-90 CC (26-3143)]] - Stereo Music Synthesizer&lt;br /&gt;
*[[Speech/Sound Cartridge (26-3144A)]] - Music and Speech Synthesizer&lt;br /&gt;
*[[Super Voice]] - Speech Systems&#039; Speech Synthesizer device that could sing.&lt;br /&gt;
*[[Real Talker]] Voice Synthesizer by Colorware&lt;br /&gt;
*[[The Voice]] - Speech Systems&#039; Speech Synthesizer&lt;br /&gt;
&lt;br /&gt;
==Bus Expander==&lt;br /&gt;
*[[Multi-Pak|Tandy Multipak (26-3024)]]&lt;br /&gt;
*[[Multi-Pak|Tandy Multipak (26-3124)]]&lt;br /&gt;
*[[Colorburst|Colorburst By Maxsys]]&lt;br /&gt;
*[[Howard Medical Slotpak]]&lt;br /&gt;
*[[Orion Technologies XPort]]&lt;br /&gt;
*[[CoNect Xpander]]&lt;br /&gt;
*[[CoNect Y Box]]&lt;br /&gt;
*[[Y-Cable]]&lt;br /&gt;
*[[Solderless Proto Board]]&lt;br /&gt;
&lt;br /&gt;
==Computers &amp;amp; Clones==&lt;br /&gt;
*[[TRS-80 Color Computers]] (A list of all available models)&lt;br /&gt;
*[[Dragon]]&lt;br /&gt;
*[http://en.wikipedia.org/wiki/TRS-80_MC-10 MC-10 Micro Color Computer]&lt;br /&gt;
*[[CP400]]&lt;br /&gt;
*[[TDP-100]]&lt;br /&gt;
*[[LZ Color64]] Brazilian clone&lt;br /&gt;
*[[Dynacom MX-1600]] Brazilian clone&lt;br /&gt;
&lt;br /&gt;
==Tandy/Radio Shack Tape Drive Systems==&lt;br /&gt;
*[[CCR-81 (26-1208)]]&lt;br /&gt;
*[[CCR-82]]&lt;br /&gt;
*[[CCR-83]]&lt;br /&gt;
&lt;br /&gt;
==Other Tape Drive Systems==&lt;br /&gt;
*[[Exatron Stringy Floppy]]&lt;br /&gt;
&lt;br /&gt;
==Tandy/Radio Shack Floppy Disk Systems==&lt;br /&gt;
[[Floppy Controllers]]&lt;br /&gt;
*[[26-3022]]&lt;br /&gt;
*[[26-3029]]&lt;br /&gt;
*[[FD-500 (26-3129)]]&lt;br /&gt;
*[[FD-501 (26-3131)]]&lt;br /&gt;
*[[FD-502 (26-3133)]]&lt;br /&gt;
*[[Other Floppy Disk]]&lt;br /&gt;
===Hacking===&lt;br /&gt;
*[[Hacking Disk]] 40, 80 Track, 2 Sides&lt;br /&gt;
*[[26-3029 CoCo Disk Controller High Density Modifications]]&lt;br /&gt;
[http://users.digitalindigo.net/~techno/coco_floppy.html Extracted from]&lt;br /&gt;
&lt;br /&gt;
==Other Floppy Disk Controllers==&lt;br /&gt;
*[[SDC Floppy Emulator]]&lt;br /&gt;
*[[Disto Super Controller]]&lt;br /&gt;
*[[Disto Super Controller II]]&lt;br /&gt;
*[[Disto Mini Controller]]&lt;br /&gt;
*[[J&amp;amp;M/Owl-Ware]]&lt;br /&gt;
*[[Hard Drive Specialists]]&lt;br /&gt;
*[[Sardis Technologies &#039;no-halt&#039; Controller]]&lt;br /&gt;
&lt;br /&gt;
==Alternate Floppy Disk Controller ROMs==&lt;br /&gt;
*[[ADOS/ADOS-3]]&lt;br /&gt;
*[[RGBDOS]]&lt;br /&gt;
*[[JDOS]]&lt;br /&gt;
*[[MYDOS]]&lt;br /&gt;
*[[CDOS]]&lt;br /&gt;
*[[OWLDOS]]&lt;br /&gt;
*[[HDB-DOS]]&lt;br /&gt;
&lt;br /&gt;
==Hard Drive Controllers==&lt;br /&gt;
*[[Tandy Hard Drive Controller]]&lt;br /&gt;
*[[Burke &amp;amp; Burke]] - CoCo XT/CoCo XT-RTC&lt;br /&gt;
*[[KenTon]] - SCSI&lt;br /&gt;
*[[Gleside IDE Interface]]&lt;br /&gt;
*[[Cloud-9 SuperIDE Interface]]&lt;br /&gt;
*[[Cloud-9 TC^3 SCSI Interface]]&lt;br /&gt;
*[[Owl-Ware]]&lt;br /&gt;
&lt;br /&gt;
==Input Devices==&lt;br /&gt;
*[[The Glove]]&lt;br /&gt;
*[[Le Stick]]&lt;br /&gt;
*[[Joystick]]&lt;br /&gt;
*[[Deluxe Joystick]]&lt;br /&gt;
*[[Wico Deluxe Joystick]]&lt;br /&gt;
*[[Mouse]] (1 Button)&lt;br /&gt;
*[[Deluxe Color Mouse]] (2 button)&lt;br /&gt;
*[[X-Pad]]&lt;br /&gt;
*[[Koala Pad]]&lt;br /&gt;
*[[Diecom Light Phaser Interface]]&lt;br /&gt;
*[[Atari to CoCo Joystick Adapter]]&lt;br /&gt;
*[[Tandy Hi-Res Joystick Adapter]]&lt;br /&gt;
*[[Colorware Super Hi-Res Interface]]&lt;br /&gt;
*[[Hawksoft Dual Hi-Res Joystick Adapter]]&lt;br /&gt;
*[[Puppo Keyboard Adapter]]&lt;br /&gt;
*[[OWL Keyboard Adapter]]&lt;br /&gt;
*[[Cloud-9 AT Keyboard Adapter]]&lt;br /&gt;
*[[HJL-57 upgrade Keyboard]]&lt;br /&gt;
&lt;br /&gt;
==Memory Upgrades==&lt;br /&gt;
*[[Tandy 512K Upgrade]]&lt;br /&gt;
*[[Performace Peripherals 512K Upgrade]]&lt;br /&gt;
*[[Cloud-9 512K Upgrade]]&lt;br /&gt;
*[[Disto 1MB Upgrade]]&lt;br /&gt;
*[[Disto 2MB Upgrade]]&lt;br /&gt;
&lt;br /&gt;
==MIDI Interfaces==&lt;br /&gt;
*[[CoCo MIDI]]&lt;br /&gt;
&lt;br /&gt;
== Monitors==&lt;br /&gt;
*[[Tandy CM-8]]&lt;br /&gt;
*[[Maganavox 1CM135]]&lt;br /&gt;
*[[Maganavox 8CM515]]&lt;br /&gt;
*[[15KHz SVGA Monitors]]&lt;br /&gt;
&lt;br /&gt;
==Multi Devices==&lt;br /&gt;
These are items that serve more than one purpose, such as Cloud-9&#039;s SuperBoard.&lt;br /&gt;
*[[SuperBoard]]&lt;br /&gt;
*[[FHL Eliminator]]&lt;br /&gt;
*[[Disto MEB]]&lt;br /&gt;
&lt;br /&gt;
==RS232 Devices==&lt;br /&gt;
*[[Deluxe RS232 Pak]]&lt;br /&gt;
*[[Tandy DC Modem Pak]]&lt;br /&gt;
*[[Orion Technologies RS232 Pak]]&lt;br /&gt;
*[[Disto RS232 Pak]]&lt;br /&gt;
*[[PBJ Dual Serial Port Pak]]&lt;br /&gt;
*[[Kenton Dual Serial Port Pak]]&lt;br /&gt;
*[[Quad Serial Port Pak]] - Who made this?&lt;br /&gt;
*[[CoCoPro! RS232 Pak]]&lt;br /&gt;
*[[CoNect Dual RS232 Pak]]&lt;br /&gt;
*[[CoNect RS232 Pak]]&lt;br /&gt;
*[[CoNect 16550 Pak]] - what is the official name?&lt;br /&gt;
*[[Metric Model 101p Serial to Parallel Converter]]&lt;br /&gt;
*[[Dayton Industries Blue Streak Ultima Serial to Parallel Converter]]&lt;br /&gt;
&lt;br /&gt;
==Video Digitizers==&lt;br /&gt;
*[[Rascan]]&lt;br /&gt;
*[[DS-69 Digisector]]&lt;br /&gt;
&lt;br /&gt;
== Video Out==&lt;br /&gt;
*[[Video without RF Box]]&lt;br /&gt;
*[[PBJ Wordpak/Wordpak II]]&lt;br /&gt;
*[[Lucas Industries 2000 AutoDim]]&lt;br /&gt;
*[[CoCo-1 Monocrome video]]&lt;br /&gt;
*[[CoCo-1 composite video]]&lt;br /&gt;
*[[CoCo-2 Composite Monitor Adapter]]&lt;br /&gt;
*[[CoCo-3 RGB to CGA/EGA Adapter]]&lt;br /&gt;
*[[RGB to VGA Converter]]&lt;br /&gt;
*[[RGB to S-Video Converter]]&lt;br /&gt;
*[https://hackaday.io/project/7366-coco-3-rgb-to-scart-to-hdmi-cable CoCo 3 RGB -&amp;gt; SCART -&amp;gt; HDMI]&lt;br /&gt;
&lt;br /&gt;
== Light Controler ==&lt;br /&gt;
*[[X10 Lighting Control]]&lt;br /&gt;
*[[Remote Command Controller 26-1182]]&lt;br /&gt;
&lt;br /&gt;
== Mods &amp;amp; Hacking ==&lt;br /&gt;
*[[CoCo Turbo Light]]&lt;br /&gt;
*[[DCModem to RS232 Pak]]&lt;br /&gt;
*[[Disk Drive power LED]]&lt;br /&gt;
*[[CoCo repack in PC]]&lt;br /&gt;
*[[Speech &amp;amp; Sound Pack Modification for High Speed]]&lt;br /&gt;
*[[CoCoEPROMpak]] Schematic board&lt;br /&gt;
*[[Fahrfall]] New Game Cartridge and pak &lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]]&lt;/div&gt;</description>
			<pubDate>Mon, 29 May 2017 01:20:36 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Hardware</comments>
		</item>
		<item>
			<title>Undercolor/840101/Heres a few notes from readers/filler</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Undercolor/840101/Heres_a_few_notes_from_readers/filler&amp;diff=4089</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Undercolor/840101/Heres_a_few_notes_from_readers/filler&amp;diff=4089</guid>
			<description>&lt;p&gt;Tlindner: Making pretty&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavTop}}&amp;lt;br /&amp;gt;&lt;br /&gt;
UnderColor, Volume 1, Number 1, December 10, 1984&lt;br /&gt;
[[image:Undercolor 840101 filler Heres a few notes from readers image.jpg|right|thumb]]&lt;br /&gt;
Filler:&lt;br /&gt;
* Title: Here’s a few notes from readers:&amp;lt;br&amp;gt;&lt;br /&gt;
* Text: &lt;br /&gt;
&lt;br /&gt;
Ideas: &lt;br /&gt;
*How do you program an EPROM to start on Reset like Basic?&lt;br /&gt;
*A weather station using A-D, temperature sensors, wind speed, etc.&lt;br /&gt;
*How to program EPROMs using DEFT Systems Pascal&lt;br /&gt;
*How to get OS-9 and Basic 09 to talk to the outside world&lt;br /&gt;
*How to write device descriptors for OS-9 - Frank Dupont, Detroit, MI&lt;br /&gt;
&lt;br /&gt;
Comments:&lt;br /&gt;
*At first I thought you [Dennis] were quitting your job with TCCM.  That didn’t seem right.  Then I thought perhaps you were fired, but that didn’t seem right either ... — Dave Shewchun&lt;br /&gt;
*Custom Color has to continue, for many good things to sink my teeth in are still under blankets ... — David Nicol&lt;br /&gt;
*Nice to hear that a new CoCo publication is starting up ... — Allan Ashton&lt;br /&gt;
*[Referring to this publication] Please accept this letter as my vote in favor of such a project! — Jon Morse&lt;br /&gt;
*[Referring to Custom Color] I have always enjoyed your column (even though I usually didn’t understand it) ... — Jock Kraft&lt;br /&gt;
*... you&#039;ve given us our magazine back — only better! — Dennis Peterson&lt;br /&gt;
&lt;br /&gt;
[[Category:Publications]]&lt;br /&gt;
[[Category:Newsletters]]&lt;/div&gt;</description>
			<pubDate>Tue, 10 Feb 2009 17:55:28 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Undercolor/840101/Heres_a_few_notes_from_readers/filler</comments>
		</item>
		<item>
			<title>User:Cocomag</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=User:Cocomag&amp;diff=4088</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=User:Cocomag&amp;diff=4088</guid>
			<description>&lt;p&gt;Tlindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This user is under the control of [[User:tlindner|tim lindner]].&lt;br /&gt;
&lt;br /&gt;
I use this user to push magazine content from the [http://cocomag.dyndns.org/ Cocomag] web site to this wiki.&lt;br /&gt;
&lt;br /&gt;
Editing magazine issues on the Cocomag website is very limited. When a magazine issue is deemed finished the content is moved here so that the full wiki editing suite is available to manipulate articles.&lt;/div&gt;</description>
			<pubDate>Sat, 07 Feb 2009 18:48:25 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/User_talk:Cocomag</comments>
		</item>
		<item>
			<title>User:Cocomag</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=User:Cocomag&amp;diff=4087</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=User:Cocomag&amp;diff=4087</guid>
			<description>&lt;p&gt;Tlindner: New page: This user is under the control of tim lindner.  I use this user to push magazine content from the [http://cocomag.dyndns.org/ Cocomag] web site to this wiki.  Editing magazine issues on th...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This user is under the control of tim lindner.&lt;br /&gt;
&lt;br /&gt;
I use this user to push magazine content from the [http://cocomag.dyndns.org/ Cocomag] web site to this wiki.&lt;br /&gt;
&lt;br /&gt;
Editing magazine issues on the Cocomag website is very limited. When a magazine issue is deemed finished the content is moved here so that the full wiki editing suite is available to manipulate articles.&lt;/div&gt;</description>
			<pubDate>Sat, 07 Feb 2009 18:45:28 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/User_talk:Cocomag</comments>
		</item>
		<item>
			<title>Undercolor/840102/Color Count/filler</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Undercolor/840102/Color_Count/filler&amp;diff=4063</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Undercolor/840102/Color_Count/filler&amp;diff=4063</guid>
			<description>&lt;p&gt;Tlindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavTop}}&amp;lt;br /&amp;gt;&lt;br /&gt;
UnderColor, Volume 1, Number 2, December 25, 1984&lt;br /&gt;
[[image:Undercolor 840102 filler Color Count image.jpg|right|thumb]]&lt;br /&gt;
Filler:&lt;br /&gt;
* Title: Color Count&amp;lt;br&amp;gt;&lt;br /&gt;
* Text: &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; What&#039;s a picture worth?  Well... a Color hi-res screen picture is 256 pixels wide by 192 pixels high, which comes to a total of 49,152 pixels.  Each pixel is coded by a single bit in that mode.  Divide by 8 (8 bits to a byte) and you discover a Color hi-res picture contains 6114 (6K) bytes of information.  Now, typically a single English character is coded by a single byte.  Thus, that Color hi-res picture contains 6K characters worth of information.  The average word is about five letters long, and is typically accompanied by a space.  Thus, the average word takes six characters, total.  Six into 6K is about 1000.  And so, we discover that a picture... a hi-res Color picture at any rate... is worth almost precisely 1000 words.&amp;lt;br&amp;gt;— Marty Goodman&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Category:Publications]]&lt;br /&gt;
[[Category:Newsletters]]&lt;/div&gt;</description>
			<pubDate>Sat, 07 Feb 2009 18:25:02 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Undercolor/840102/Color_Count/filler</comments>
		</item>
		<item>
			<title>Undercolor/840101</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Undercolor/840101&amp;diff=4043</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Undercolor/840101&amp;diff=4043</guid>
			<description>&lt;p&gt;Tlindner: /* Filler */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavTop}}&amp;lt;br /&amp;gt;&lt;br /&gt;
UnderColor, Volume 1, Number 1, December 10, 1984&lt;br /&gt;
&lt;br /&gt;
[[Undercolor/840101/Page Scans|All Pages Scans]]&lt;br /&gt;
&lt;br /&gt;
==Articles==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[image:Undercolor-840101-004.jpg|thumb]]||&lt;br /&gt;
* Title: Defuser&lt;br /&gt;
* Author: Terry Kepner&lt;br /&gt;
* Synopsis: All you could ask for.&lt;br /&gt;
* Page: 2&lt;br /&gt;
* [[Undercolor/840101/Defuser|Article Text]]&lt;br /&gt;
* [[Undercolor/840101/Defuser/Pages|Page Scans]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-007.jpg|thumb]]||&lt;br /&gt;
* Title: A Real-Time Talking Clock&lt;br /&gt;
* Author: Dennis Kitsz&lt;br /&gt;
* Synopsis: The first of several parts.&lt;br /&gt;
* Page: 5&lt;br /&gt;
* [[Undercolor/840101/A RealTime Talking Clock|Article Text]]&lt;br /&gt;
* [[Undercolor/840101/A RealTime Talking Clock/Pages|Page Scans]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-006.jpg|thumb]]||&lt;br /&gt;
* Title: Box 6809&lt;br /&gt;
* Author:&lt;br /&gt;
* Synopsis: Comments from our readers.&lt;br /&gt;
* Page: 6&lt;br /&gt;
* [[Undercolor/840101/Box 6809|Article Text]]&lt;br /&gt;
* [[Undercolor/840101/Box 6809/Pages|Page Scans]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-016.jpg|thumb]]||&lt;br /&gt;
* Title: Memory Test&lt;br /&gt;
* Author: Stephen P. Allen&lt;br /&gt;
* Synopsis: Do you really have 64k?&lt;br /&gt;
* Page: 13&lt;br /&gt;
* [[Undercolor/840101/Memory Test|Article Text]]&lt;br /&gt;
* [[Undercolor/840101/Memory Test/Pages|Page Scans]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-018.jpg|thumb]]||&lt;br /&gt;
* Title: Off Color: Who&#039;s Fibonacci?&lt;br /&gt;
* Author: Mark Haverstock&lt;br /&gt;
* Synopsis: A light-hearted look at numbers&lt;br /&gt;
* Page: 16&lt;br /&gt;
* [[Undercolor/840101/Off Color Whos Fibonacci|Article Text]]&lt;br /&gt;
* [[Undercolor/840101/Off Color Whos Fibonacci/Pages|Page Scans]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-020.jpg|thumb]]||&lt;br /&gt;
* Title: News and Gossip&lt;br /&gt;
* Author:&lt;br /&gt;
* Synopsis: Carefully prepared, delicately worded, infinitely interesting.&lt;br /&gt;
* Page: 18&lt;br /&gt;
* [[Undercolor/840101/News and Gossip|Article Text]]&lt;br /&gt;
* [[Undercolor/840101/News and Gossip/Pages|Page Scans]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-024.jpg|thumb]]||&lt;br /&gt;
* Title: Win Bill Barden!&lt;br /&gt;
* Author: William Barden, Jr.&lt;br /&gt;
* Synopsis: Bill poses a fun problem.&lt;br /&gt;
* Page: 22&lt;br /&gt;
* [[Undercolor/840101/Win Bill Barden|Article Text]]&lt;br /&gt;
* [[Undercolor/840101/Win Bill Barden/Pages|Page Scans]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-025.jpg|thumb]]||&lt;br /&gt;
* Title: Bulletin Board Listings&lt;br /&gt;
* Author:&lt;br /&gt;
* Synopsis:&lt;br /&gt;
* Page: 23&lt;br /&gt;
* [[Undercolor/840101/Bulletin Board Listings|Article Text]]&lt;br /&gt;
* [[Undercolor/840101/Bulletin Board Listings/Pages|Page Scans]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-026.jpg|thumb]]||&lt;br /&gt;
* Title: Reviews&lt;br /&gt;
* Author:&lt;br /&gt;
* Synopsis:&lt;br /&gt;
* Page: 24&lt;br /&gt;
* [[Undercolor/840101/Reviews|Article Text]]&lt;br /&gt;
* [[Undercolor/840101/Reviews/Pages|Page Scans]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
==Filler==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[image:Undercolor_840101_filler_Heres_a_few_notes_from_readers_image.jpg|thumb]]||&lt;br /&gt;
* Title: Here’s a few notes from readers:&lt;br /&gt;
* [[Undercolor/840101/Heres a few notes from readers/filler|Filler Text]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor_840101_filler_Whos_who_image.jpg|thumb]]||&lt;br /&gt;
* Title: Who&#039;s who&lt;br /&gt;
* [[Undercolor/840101/Whos who/filler|Filler Text]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor_840101_filler_Published_By_image.jpg|thumb]]||&lt;br /&gt;
* Title: Published By&lt;br /&gt;
* [[Undercolor/840101/Published By/filler|Filler Text]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Advertisments==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[image:Undercolor_840101-019_advertisment_Grafx_image.jpg|thumb]]||&lt;br /&gt;
* Company Name: Grafx&lt;br /&gt;
* Company Address: P.O. Box 254&lt;br /&gt;
West Miffiln, PA 15122&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-002.jpg|thumb]]||&lt;br /&gt;
* Company Name: Green Mountian Micro&lt;br /&gt;
* Company Address: Bathory Road, Box U&lt;br /&gt;
Roxbury, Vermont 05669&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-027.jpg|thumb]]||&lt;br /&gt;
* Company Name: Software Support, Inc.&lt;br /&gt;
* Company Address: One Edgell Road&lt;br /&gt;
Framingham, MA  01701&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-028.jpg|thumb]]||&lt;br /&gt;
* Company Name: Computer Systems Center&lt;br /&gt;
* Company Address: 13461 Olive Blvd.&lt;br /&gt;
Chesterfield, MO 63017&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor_840101-014_advertisment_Under_Color_image.jpg|thumb]]||&lt;br /&gt;
* Company Name: Under Color&lt;br /&gt;
* Company Address: Box 6809&lt;br /&gt;
Roxbury, VT 05669&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-015.jpg|thumb]]||&lt;br /&gt;
* Company Name: The Rainbow&lt;br /&gt;
* Company Address: 9529 U.S. Highway 42&lt;br /&gt;
The Falsoft Bldg.&lt;br /&gt;
P.O. Box 385&lt;br /&gt;
Prospect, KY 40059&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</description>
			<pubDate>Sat, 07 Feb 2009 17:12:52 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Undercolor/840101</comments>
		</item>
		<item>
			<title>Undercolor/840101</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Undercolor/840101&amp;diff=4023</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Undercolor/840101&amp;diff=4023</guid>
			<description>&lt;p&gt;Tlindner: /* Filler */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavTop}}&amp;lt;br /&amp;gt;&lt;br /&gt;
UnderColor, Volume 1, Number 1, December 10, 1984&lt;br /&gt;
&lt;br /&gt;
[[Undercolor/840101/Page Scans|All Pages Scans]]&lt;br /&gt;
&lt;br /&gt;
==Articles==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[image:Undercolor-840101-004.jpg|thumb]]||&lt;br /&gt;
* Title: Defuser&lt;br /&gt;
* Author: Terry Kepner&lt;br /&gt;
* Synopsis: All you could ask for.&lt;br /&gt;
* Page: 2&lt;br /&gt;
* [[Undercolor/840101/Defuser|Article Text]]&lt;br /&gt;
* [[Undercolor/840101/Defuser/Pages|Page Scans]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-007.jpg|thumb]]||&lt;br /&gt;
* Title: A Real-Time Talking Clock&lt;br /&gt;
* Author: Dennis Kitsz&lt;br /&gt;
* Synopsis: The first of several parts.&lt;br /&gt;
* Page: 5&lt;br /&gt;
* [[Undercolor/840101/A RealTime Talking Clock|Article Text]]&lt;br /&gt;
* [[Undercolor/840101/A RealTime Talking Clock/Pages|Page Scans]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-006.jpg|thumb]]||&lt;br /&gt;
* Title: Box 6809&lt;br /&gt;
* Author:&lt;br /&gt;
* Synopsis: Comments from our readers.&lt;br /&gt;
* Page: 6&lt;br /&gt;
* [[Undercolor/840101/Box 6809|Article Text]]&lt;br /&gt;
* [[Undercolor/840101/Box 6809/Pages|Page Scans]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-016.jpg|thumb]]||&lt;br /&gt;
* Title: Memory Test&lt;br /&gt;
* Author: Stephen P. Allen&lt;br /&gt;
* Synopsis: Do you really have 64k?&lt;br /&gt;
* Page: 13&lt;br /&gt;
* [[Undercolor/840101/Memory Test|Article Text]]&lt;br /&gt;
* [[Undercolor/840101/Memory Test/Pages|Page Scans]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-018.jpg|thumb]]||&lt;br /&gt;
* Title: Off Color: Who&#039;s Fibonacci?&lt;br /&gt;
* Author: Mark Haverstock&lt;br /&gt;
* Synopsis: A light-hearted look at numbers&lt;br /&gt;
* Page: 16&lt;br /&gt;
* [[Undercolor/840101/Off Color Whos Fibonacci|Article Text]]&lt;br /&gt;
* [[Undercolor/840101/Off Color Whos Fibonacci/Pages|Page Scans]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-020.jpg|thumb]]||&lt;br /&gt;
* Title: News and Gossip&lt;br /&gt;
* Author:&lt;br /&gt;
* Synopsis: Carefully prepared, delicately worded, infinitely interesting.&lt;br /&gt;
* Page: 18&lt;br /&gt;
* [[Undercolor/840101/News and Gossip|Article Text]]&lt;br /&gt;
* [[Undercolor/840101/News and Gossip/Pages|Page Scans]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-024.jpg|thumb]]||&lt;br /&gt;
* Title: Win Bill Barden!&lt;br /&gt;
* Author: William Barden, Jr.&lt;br /&gt;
* Synopsis: Bill poses a fun problem.&lt;br /&gt;
* Page: 22&lt;br /&gt;
* [[Undercolor/840101/Win Bill Barden|Article Text]]&lt;br /&gt;
* [[Undercolor/840101/Win Bill Barden/Pages|Page Scans]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-025.jpg|thumb]]||&lt;br /&gt;
* Title: Bulletin Board Listings&lt;br /&gt;
* Author:&lt;br /&gt;
* Synopsis:&lt;br /&gt;
* Page: 23&lt;br /&gt;
* [[Undercolor/840101/Bulletin Board Listings|Article Text]]&lt;br /&gt;
* [[Undercolor/840101/Bulletin Board Listings/Pages|Page Scans]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-026.jpg|thumb]]||&lt;br /&gt;
* Title: Reviews&lt;br /&gt;
* Author:&lt;br /&gt;
* Synopsis:&lt;br /&gt;
* Page: 24&lt;br /&gt;
* [[Undercolor/840101/Reviews|Article Text]]&lt;br /&gt;
* [[Undercolor/840101/Reviews/Pages|Page Scans]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
==Filler==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[image:Undercolor_840101_filler_Heres_a_few_notes_from_readers_image.jpg|thumb]]||&lt;br /&gt;
* Title: Hereâs a few notes from readers:&lt;br /&gt;
* [[Undercolor/840101/Heres a few notes from readers/filler|Filler Text]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor_840101_filler_Whos_who_image.jpg.|thumb]]||&lt;br /&gt;
* Title: Who&#039;s who&lt;br /&gt;
* [[Undercolor/840101/Whos who/filler|Filler Text]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor_840101_filler_Published_By_image.jpg.|thumb]]||&lt;br /&gt;
* Title: Published By&lt;br /&gt;
* [[Undercolor/840101/Published By/filler|Filler Text]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Advertisments==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[image:Undercolor_840101-019_advertisment_Grafx_image.jpg.|thumb]]||&lt;br /&gt;
* Company Name: Grafx&lt;br /&gt;
* Company Address: P.O. Box 254&lt;br /&gt;
West Miffiln, PA 15122&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-002.jpg.|thumb]]||&lt;br /&gt;
* Company Name: Green Mountian Micro&lt;br /&gt;
* Company Address: Bathory Road, Box U&lt;br /&gt;
Roxbury, Vermont 05669&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-027.jpg.|thumb]]||&lt;br /&gt;
* Company Name: Software Support, Inc.&lt;br /&gt;
* Company Address: One Edgell Road&lt;br /&gt;
Framingham, MA  01701&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-028.jpg.|thumb]]||&lt;br /&gt;
* Company Name: Computer Systems Center&lt;br /&gt;
* Company Address: 13461 Olive Blvd.&lt;br /&gt;
Chesterfield, MO 63017&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor_840101-014_advertisment_Under_Color_image.jpg.|thumb]]||&lt;br /&gt;
* Company Name: Under Color&lt;br /&gt;
* Company Address: Box 6809&lt;br /&gt;
Roxbury, VT 05669&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-015.jpg.|thumb]]||&lt;br /&gt;
* Company Name: The Rainbow&lt;br /&gt;
* Company Address: 9529 U.S. Highway 42&lt;br /&gt;
The Falsoft Bldg.&lt;br /&gt;
P.O. Box 385&lt;br /&gt;
Prospect, KY 40059&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</description>
			<pubDate>Sat, 07 Feb 2009 16:52:28 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Undercolor/840101</comments>
		</item>
		<item>
			<title>Undercolor/840101</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Undercolor/840101&amp;diff=4021</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Undercolor/840101&amp;diff=4021</guid>
			<description>&lt;p&gt;Tlindner: /* Filler */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavTop}}&amp;lt;br /&amp;gt;&lt;br /&gt;
UnderColor, Volume 1, Number 1, December 10, 1984&lt;br /&gt;
&lt;br /&gt;
[[Undercolor/840101/Page Scans|All Pages Scans]]&lt;br /&gt;
&lt;br /&gt;
==Articles==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[image:Undercolor-840101-004.jpg|thumb]]||&lt;br /&gt;
* Title: Defuser&lt;br /&gt;
* Author: Terry Kepner&lt;br /&gt;
* Synopsis: All you could ask for.&lt;br /&gt;
* Page: 2&lt;br /&gt;
* [[Undercolor/840101/Defuser|Article Text]]&lt;br /&gt;
* [[Undercolor/840101/Defuser/Pages|Page Scans]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-007.jpg|thumb]]||&lt;br /&gt;
* Title: A Real-Time Talking Clock&lt;br /&gt;
* Author: Dennis Kitsz&lt;br /&gt;
* Synopsis: The first of several parts.&lt;br /&gt;
* Page: 5&lt;br /&gt;
* [[Undercolor/840101/A RealTime Talking Clock|Article Text]]&lt;br /&gt;
* [[Undercolor/840101/A RealTime Talking Clock/Pages|Page Scans]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-006.jpg|thumb]]||&lt;br /&gt;
* Title: Box 6809&lt;br /&gt;
* Author:&lt;br /&gt;
* Synopsis: Comments from our readers.&lt;br /&gt;
* Page: 6&lt;br /&gt;
* [[Undercolor/840101/Box 6809|Article Text]]&lt;br /&gt;
* [[Undercolor/840101/Box 6809/Pages|Page Scans]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-016.jpg|thumb]]||&lt;br /&gt;
* Title: Memory Test&lt;br /&gt;
* Author: Stephen P. Allen&lt;br /&gt;
* Synopsis: Do you really have 64k?&lt;br /&gt;
* Page: 13&lt;br /&gt;
* [[Undercolor/840101/Memory Test|Article Text]]&lt;br /&gt;
* [[Undercolor/840101/Memory Test/Pages|Page Scans]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-018.jpg|thumb]]||&lt;br /&gt;
* Title: Off Color: Who&#039;s Fibonacci?&lt;br /&gt;
* Author: Mark Haverstock&lt;br /&gt;
* Synopsis: A light-hearted look at numbers&lt;br /&gt;
* Page: 16&lt;br /&gt;
* [[Undercolor/840101/Off Color Whos Fibonacci|Article Text]]&lt;br /&gt;
* [[Undercolor/840101/Off Color Whos Fibonacci/Pages|Page Scans]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-020.jpg|thumb]]||&lt;br /&gt;
* Title: News and Gossip&lt;br /&gt;
* Author:&lt;br /&gt;
* Synopsis: Carefully prepared, delicately worded, infinitely interesting.&lt;br /&gt;
* Page: 18&lt;br /&gt;
* [[Undercolor/840101/News and Gossip|Article Text]]&lt;br /&gt;
* [[Undercolor/840101/News and Gossip/Pages|Page Scans]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-024.jpg|thumb]]||&lt;br /&gt;
* Title: Win Bill Barden!&lt;br /&gt;
* Author: William Barden, Jr.&lt;br /&gt;
* Synopsis: Bill poses a fun problem.&lt;br /&gt;
* Page: 22&lt;br /&gt;
* [[Undercolor/840101/Win Bill Barden|Article Text]]&lt;br /&gt;
* [[Undercolor/840101/Win Bill Barden/Pages|Page Scans]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-025.jpg|thumb]]||&lt;br /&gt;
* Title: Bulletin Board Listings&lt;br /&gt;
* Author:&lt;br /&gt;
* Synopsis:&lt;br /&gt;
* Page: 23&lt;br /&gt;
* [[Undercolor/840101/Bulletin Board Listings|Article Text]]&lt;br /&gt;
* [[Undercolor/840101/Bulletin Board Listings/Pages|Page Scans]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:Undercolor-840101-026.jpg|thumb]]||&lt;br /&gt;
* Title: Reviews&lt;br /&gt;
* Author:&lt;br /&gt;
* Synopsis:&lt;br /&gt;
* Page: 24&lt;br /&gt;
* [[Undercolor/840101/Reviews|Article Text]]&lt;br /&gt;
* [[Undercolor/840101/Reviews/Pages|Page Scans]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
==Filler==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[image:Undercolor_840101_filler_Heres_a_few_notes_from_readers_image.jpg|thumb]]||&lt;br /&gt;
* Title: Hereâs a few notes from readers:&lt;br /&gt;
* [[Undercolor/840101/Heres a few notes from readers/filler|Filler Text]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:5/59/Undercolor_840101_filler_Whos_who_image.jpg|thumb]]||&lt;br /&gt;
* Title: Who&#039;s who&lt;br /&gt;
* [[Undercolor/840101/Whos who/filler|Filler Text]]&lt;br /&gt;
|-&lt;br /&gt;
|[[image:8/81/Undercolor_840101_filler_Published_By_image.jpg|thumb]]||&lt;br /&gt;
* Title: Published By&lt;br /&gt;
* [[Undercolor/840101/Published By/filler|Filler Text]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Advertisments==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[image:f/f7/Undercolor_840101-019_advertisment_Grafx_image.jpg|thumb]]||&lt;br /&gt;
* Company Name: Grafx&lt;br /&gt;
* Company Address: P.O. Box 254&lt;br /&gt;
West Miffiln, PA 15122&lt;br /&gt;
|-&lt;br /&gt;
|[[image:0/0c/Undercolor-840101-002.jpg|thumb]]||&lt;br /&gt;
* Company Name: Green Mountian Micro&lt;br /&gt;
* Company Address: Bathory Road, Box U&lt;br /&gt;
Roxbury, Vermont 05669&lt;br /&gt;
|-&lt;br /&gt;
|[[image:8/8d/Undercolor-840101-027.jpg|thumb]]||&lt;br /&gt;
* Company Name: Software Support, Inc.&lt;br /&gt;
* Company Address: One Edgell Road&lt;br /&gt;
Framingham, MA  01701&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|[[image:4/4c/Undercolor-840101-028.jpg|thumb]]||&lt;br /&gt;
* Company Name: Computer Systems Center&lt;br /&gt;
* Company Address: 13461 Olive Blvd.&lt;br /&gt;
Chesterfield, MO 63017&lt;br /&gt;
|-&lt;br /&gt;
|[[image:4/4c/Undercolor_840101-014_advertisment_Under_Color_image.jpg|thumb]]||&lt;br /&gt;
* Company Name: Under Color&lt;br /&gt;
* Company Address: Box 6809&lt;br /&gt;
Roxbury, VT 05669&lt;br /&gt;
|-&lt;br /&gt;
|[[image:4/4c/Undercolor-840101-015.jpg|thumb]]||&lt;br /&gt;
* Company Name: The Rainbow&lt;br /&gt;
* Company Address: 9529 U.S. Highway 42&lt;br /&gt;
The Falsoft Bldg.&lt;br /&gt;
P.O. Box 385&lt;br /&gt;
Prospect, KY 40059&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</description>
			<pubDate>Sat, 07 Feb 2009 16:39:43 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Undercolor/840101</comments>
		</item>
		<item>
			<title>Sampling</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Sampling&amp;diff=3826</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Sampling&amp;diff=3826</guid>
			<description>&lt;p&gt;Tlindner: Updated PIA block diagram link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavArticles}}&lt;br /&gt;
&lt;br /&gt;
== Joystick Sampling ==&lt;br /&gt;
Successive Linear Approximation on the Color Computer&lt;br /&gt;
&lt;br /&gt;
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 [http://tlindner.macmess.org/?page_id=124 detailed] block diagram that will be good enough for this article. Also, a good understanding of the [http://www.google.com/search?q=pia+6821+pdf&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8 Peripheral Interface Adaptor] will help you get the most out of machine language programming.&lt;br /&gt;
&lt;br /&gt;
Since the CoCo does not have a hardware Analog-To-Digital converter chip, the process it uses is called &amp;lt;i&amp;gt;successive linear approximation&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Here is the process:&lt;br /&gt;
# Mute the CoCo.&lt;br /&gt;
# Select a joystick.&lt;br /&gt;
# Write a zero to the sound register&lt;br /&gt;
# Compare the sound register to the value from the joystick.&lt;br /&gt;
# If the sound register is greater than or equal to the joystick value, then you have just discovered the joystick value&lt;br /&gt;
# Increment sound register.&lt;br /&gt;
# Sound register only goes to 64, so stop when you hit 65.&lt;br /&gt;
# Go back to step 4.&lt;br /&gt;
&lt;br /&gt;
== Mute the CoCo ==&lt;br /&gt;
&lt;br /&gt;
During this process you are writing to the sound register. You must mute the CoCo so none of this is audible. The CoCo&#039;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.&lt;br /&gt;
&lt;br /&gt;
 BEGIN   LDA  $FF23  Get current Control Register B value of PIA 2&lt;br /&gt;
         ORA  #$30   Set CB2 to be an output. (Set bits 4 and 5.)&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
         ANDA  #$F7   Clear bit 3 - Mute CoCo&lt;br /&gt;
         STA   $FF23  Write value back to Control Register B&lt;br /&gt;
&lt;br /&gt;
== Select a joystick ==&lt;br /&gt;
&lt;br /&gt;
There are two josticks with two axes each. This is four different joystick values to read. &lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Position !! Joystick&lt;br /&gt;
|-&lt;br /&gt;
! 0 !! Right, Horiz&lt;br /&gt;
|-&lt;br /&gt;
! 1 !! Right, Vert&lt;br /&gt;
|-&lt;br /&gt;
! 2 !! Left, Horiz&lt;br /&gt;
|-&lt;br /&gt;
! 3 !! Left, Vert&lt;br /&gt;
|}&lt;br /&gt;
Four positions can be encoded in 2 bits:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Binary !! Decimal&lt;br /&gt;
|-&lt;br /&gt;
! 00 !! 0&lt;br /&gt;
|-&lt;br /&gt;
! 01 !! 1&lt;br /&gt;
|-&lt;br /&gt;
! 10 !! 2&lt;br /&gt;
|-&lt;br /&gt;
! 11 !! 3&lt;br /&gt;
|}&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
         LDA  $FF01  Get current Control Register A value of PIA 1&lt;br /&gt;
         LDB  $FF03  Get current Control Register B value of PIA 1&lt;br /&gt;
         ORA  #$30   Set CA2 to be an output. (Set bits 4 and 5 of CRA.)&lt;br /&gt;
         ORB  #$30   Set CB2 to be an output. (Set bits 4 and 5 of CRB.)&lt;br /&gt;
         ANDA #$F7   Set CA2 low. (Clear bit 3.)&lt;br /&gt;
         ORB  #$08   Set CB2 high. (Set bit 3.)&lt;br /&gt;
         STA  $FF01  Store value back in CRA.&lt;br /&gt;
         STB  $FF03  Store value back in CRA.&lt;br /&gt;
&lt;br /&gt;
CA2 low and CB2 high means we are selecting position 1 which corresponds to the vertical axis of the right joystick.&lt;br /&gt;
&lt;br /&gt;
== Write a zero to the sound register ==&lt;br /&gt;
&lt;br /&gt;
The CoCo&#039;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.&lt;br /&gt;
&lt;br /&gt;
         LDA  $FF21   Load Control Register A of PIA 2&lt;br /&gt;
         ANDA #$FB    Engage Data Direction Register A. (Clear bit 2.)&lt;br /&gt;
         STA  $FF21   Store value back in CRA.&lt;br /&gt;
         LDA  $FF20   Load Data Direction Register A of PIA 2.&lt;br /&gt;
         ORA  #$FC    Set lines PA2 thru PA7 as output. (Set bits 2 thru 7.)&lt;br /&gt;
         STA  $FF20   Store value back in DDRA.&lt;br /&gt;
&lt;br /&gt;
Address $FF20 is both the Data Register A and the Data Direction Register A. It&#039;s function is controller by bit 2 of the Control Register A. So in order to actually write data to the CoCo&#039;s sound register we need to modify the control register so we can access the data register.&lt;br /&gt;
&lt;br /&gt;
         LDA  $FF21   Load Control Register A of PIA 2&lt;br /&gt;
         ORA  #$04    Engage Data Register A. (Set bit 2.)&lt;br /&gt;
         STA  $FF21   Store value back in CRA.&lt;br /&gt;
&lt;br /&gt;
Clearing bits 2 thru 7 of the Data Register A of PIA 2 will write a zero to the sound register.&lt;br /&gt;
&lt;br /&gt;
         LDB  $FF20   Load Data Register A of PIA 2.&lt;br /&gt;
         ANDB #$03    Write a zero to the sound register. (Clear bits 2 thru 7.)&lt;br /&gt;
&lt;br /&gt;
== Compare the sound register to the value from the joystick ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
         LDA  $FF01   Load Control Register A of PIA 1&lt;br /&gt;
         ANDA #$FB    Engage Data Direction Register A. (Clear bit 2.)&lt;br /&gt;
         STA  $FF01   Store value back in CRA.&lt;br /&gt;
         LDA  $FF00   Load Data Direction Register A of PIA 1.&lt;br /&gt;
         ANDA #$7F    Set line PA7 to be an input. (Clear bit 7.)&lt;br /&gt;
         STA  $FF00   Store value back in DDRA.&lt;br /&gt;
&lt;br /&gt;
Modify the Control Register A to engage the Data Register A at $FF00.&lt;br /&gt;
&lt;br /&gt;
         LDA  $FF01   Load Control Register A of PIA 1&lt;br /&gt;
         ORA  #$04    Engage Data Register A. (Set bit 2.)&lt;br /&gt;
         STA  $FF01   Store value back in CRA.&lt;br /&gt;
&lt;br /&gt;
Read the output from the comparator.&lt;br /&gt;
&lt;br /&gt;
 LOOP    STB  $FF20   Store value in Sound Register&lt;br /&gt;
         LDA  $FF00   Bit 7 of register A contains the output information from the comparator.&lt;br /&gt;
&lt;br /&gt;
If bit 7 is high, then we have found the current value.&lt;br /&gt;
&lt;br /&gt;
        BPL DONE   Branch if negative condition is set to label DONE.&lt;br /&gt;
== Increment sound register ==&lt;br /&gt;
Increment Sound register value by one.&lt;br /&gt;
&lt;br /&gt;
         ADDB #$04   Increment Sound register by one value&lt;br /&gt;
&lt;br /&gt;
Check for a carry. The sound register will overflow after 64 tries.&lt;br /&gt;
&lt;br /&gt;
         BCS  DONE    Branch to label DONE if carry bit set.&lt;br /&gt;
         BRA  LOOP    Branch back to the label LOOP&lt;br /&gt;
&lt;br /&gt;
We&#039;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.&lt;br /&gt;
&lt;br /&gt;
 DONE    LSRB         Logical shift right&lt;br /&gt;
         LSRB         Logical shift right&lt;br /&gt;
&lt;br /&gt;
Now subtract one to bring it to 0 thru 63.&lt;br /&gt;
&lt;br /&gt;
         DECB&lt;br /&gt;
&lt;br /&gt;
Write value to video memory to see it.&lt;br /&gt;
&lt;br /&gt;
         ORB  #$80    Set bit 7 to turn it into a VDG graphic character&lt;br /&gt;
         STA  $500    Put value into middle of the 32 collum screen.&lt;br /&gt;
         SWI	     Return to ZBUG.&lt;br /&gt;
         END&lt;br /&gt;
&lt;br /&gt;
== Colophon ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;/div&gt;</description>
			<pubDate>Sat, 17 May 2008 18:11:07 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Sampling</comments>
		</item>
		<item>
			<title>CoCo3 Easter Egg</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=CoCo3_Easter_Egg&amp;diff=3551</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=CoCo3_Easter_Egg&amp;diff=3551</guid>
			<description>&lt;p&gt;Tlindner: Added link to Todd Earls page here in the wiki&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavArticles}}&lt;br /&gt;
The Color Computer 3 contained a few well-known &amp;quot;Easter Eggs&amp;quot; (hidden gems that programmers often sneak into code to be called up at a later time through some cryptic means).  This page documents those eggs and how some of them came about.&lt;br /&gt;
&lt;br /&gt;
==The Egg==&lt;br /&gt;
[[Image:CoCo3_Easter_Egg.png|center|CoCo 3 Mugateers]]&lt;br /&gt;
The above picture is universally recognized by Color Computer 3 owners the world over!  It has been called by various names (&amp;quot;The CoCo Three&amp;quot;, &amp;quot;The Three Mugateers&amp;quot;, &amp;quot;The Three Amigos&amp;quot;, &amp;quot;Wasted Space&amp;quot;, etc.) and can be displayed on every Color Computer 3 ever manufactured.  Interestingly, the sequence on how to bring it up was kept secret until shortly after the release of the CoCo 3 in July of 1986. That is what makes it an &#039;&#039;Easter Egg&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
To see the picture hold down the &#039;&#039;CTRL&#039;&#039; and &#039;&#039;ALT&#039;&#039; keys the CoCo 3&#039;s keyboard while powering up. Alternatively, hold down &#039;&#039;CTRL&#039;&#039; and &#039;&#039;ALT&#039;&#039; then press the reset button on the back right of the case. This sequences put the CoCo 3 into a special mode where the only thing it can do is display this picture. A nifty side effect of this easter egg is now there is an easy way to to generate a cold restart of the machine. Pressing the reset button again will produce the standard Color Computer 3 power on sequence.&lt;br /&gt;
&lt;br /&gt;
==Fertilizing the Egg: Tandy Contemplates a &amp;quot;CoCo 3&amp;quot;==&lt;br /&gt;
For years, Color Computer users pined for a newer Color Computer that would compete with the likes of Amiga and Commodore on a more even footing.  The antiquated 32x16 character screen on the Color Computer and Color Computer 2 was seen as a drawback, as was the limited graphics and color capabilities.&lt;br /&gt;
&lt;br /&gt;
In 1985, the design and development of the Color Computer 3 began in earnest.  It would eventually arrive in Radio Shack stores in August of 1986 and become a worthy competitor in the home computer arena.&lt;br /&gt;
&lt;br /&gt;
But few knew what was lurking inside...&lt;br /&gt;
&lt;br /&gt;
==Microware &amp;quot;Comes Into The Picture&amp;quot;==&lt;br /&gt;
During the design of the Color Computer 3 hardware, Tandy commissioned Microware to extend the internal BASIC interpreter with new commands and functions.   This proved to be somewhat problematic, since the BASIC ROM code was licensed from Microsoft.  While there is no concrete knowledge of why Microsoft wasn&#039;t tasked with revamping their BASIC interpreter to support the features of the new Color Computer 3, there&#039;s conjecture that:&lt;br /&gt;
&lt;br /&gt;
* By that time, Microsoft was too busy and important to do work for the Color Computer 3.&lt;br /&gt;
* Tandy and Microsoft may not have been able to agree on a price.&lt;br /&gt;
* Since Microware was doing OS-9 Level Two for Tandy anyway, a deal may have been cut for Microware to extend the BASIC interpreter as well.&lt;br /&gt;
&lt;br /&gt;
Whatever the reason, in the end Microware was tasked to write code patches which would extend Color BASIC to support the new features of the CoCo 3.  This approach of &amp;quot;patching&amp;quot; was an interesting one, and was specifically employed to prevent any perceived licensing violations between Tandy and Microsoft.&lt;br /&gt;
&lt;br /&gt;
The three people pictured in the &#039;&#039;Easter Egg&#039;&#039; are Mark Hawkins, Tim Harris and [[Todd Earles]]. They were Microware employees who worked on the additional functionality of the internal BASIC interpreter.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Were they the only ones? Why were they included in the picture? Did they work on OS-9 Level 2?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==The Egg is Hatched==&lt;br /&gt;
It didn&#039;t take long for word to get out that the Color Computer 3 contained a cleverly hidden picture of three of its software designers.  Within weeks of the CoCo 3&#039;s release, Radio Shack stores began seeing the picture of the mugateers emblazened on their CoCo 3 systems on display thanks to prankish customers.  In the December 1986 issue of Rainbow Magazine, managing editor Jim Reed dedicated a great deal of his column to the phenomenon, even announcing a contest in which one winner from each state would be rewarded if they could find an alternate way to bring up the &amp;quot;Gang of 3.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The folks at Tandy Towers were not amused at this apparent &amp;quot;undocumented&amp;quot; addition to their new Color Computer 3.  Ex-Tandy employee [http://groups.google.com/group/comp.sys.tandy/msg/eaa2bf487fb3e538?hl=en&amp;amp; Frank Durda IV] put it this way in a message posted to comp.sys.tandy on March 13, 2003:&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: .5em 1em 1em; margin: 3px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:left&amp;quot;&amp;gt; &amp;lt;i&amp;gt;Microware demanded and grudgingly got an 8K ROM budget, then they used 2K for the ordered improvements and almost 6K for the photo. Tandy hardware and R&amp;amp;D management were really, really irritated with Microware over this once it was discovered, as they could have put a cheaper 2K ROM in instead and gotten the wanted fixes. (In those days, the difference in price between the 8K masked ROM and 2K masked ROM was significant.)&amp;lt;br&amp;gt;&lt;br /&gt;
You don&#039;t know how many internal projects got put under the microscope by hardware management after that stunt, looking for what we now call &amp;quot;Easter Eggs&amp;quot; and as part of the witch hunt, killing what hardware management was calling &amp;quot;trivial&amp;quot; or unapproved functionality. A lot of good things died as a result of that stunt.  It probably helped doom the Deluxe CoCo project too.&lt;br /&gt;
&amp;lt;/i&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
While Durda&#039;s information generally seems to be in step with what is &amp;quot;in the know&amp;quot;, there are some inaccuracies in his post.  First, the code enhancements to the CoCo 3 took about 8K, not the 2K that he claims.  Also, the Deluxe CoCo project was cancelled before the CoCo 3 was released, so it is unlikely that Tandy canned that project due to the Easter Egg.&lt;br /&gt;
&lt;br /&gt;
==Fact &amp;amp; Folklore About The Egg==&lt;br /&gt;
It is pretty much established fact that the Easter Egg was put in by Microware employees who, by keeping the egg secret, made Forth Worth quite upset.  What hasn&#039;t been known until recently was the motivation for creating the Easter Egg and exactly how it was done.&lt;br /&gt;
&lt;br /&gt;
The Easter Egg craze reached a frenzy of sorts in March of 1993, when the Mid Iowa &amp;amp; Country CoCo (MI&amp;amp;CC) hosted the one and only Mid-America CoCo Fest in Des Moines, Iowa, the home of Microware.  Terry Simons, president of MI&amp;amp;CC, invited Mark Hawkins and Todd Earles, still Microware employees at the time, to attend the fest.  Seeing an opportunity to make money, Terry offered attendees to take a digitized picture with two of the &amp;quot;Three Amigos&amp;quot; for a fee.  Although the pictures weren&#039;t of the best quality, the promotion proved to be a hit.  Almost all of the attendees stood between Mark and Todd to pose for the mock picture, effectively taking the place of Tim Harris, who had left Microware by then.&lt;br /&gt;
&lt;br /&gt;
Former Microware employee Boisy Pitre states, &amp;quot;Back when I worked for Microware, I asked Mark Hawkins to tell me the story about the picture in the ROM.  From what Mark said, they used a digitizer on the CoCo to take individual pictures, then someone pasted them together into one image.  The logo was added by hand, and he and Todd even had the exact same jacket on.&amp;quot;  The discovery of &amp;quot;The Mugs&amp;quot; Disk&amp;quot; in September 2005 corroborates Mark&#039;s assertion.&lt;br /&gt;
&lt;br /&gt;
Boisy continues, &amp;quot;Mark also said that at the time the CoCo 3 was being developed, Tandy insisted that Microware fill any unused space in the ROMs with &#039;random junk.&#039;  The guys thought that a picture would qualify as random data, and thus the idea of the Easter Egg was born.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mark Hawkins himself attended PennFest 2000, a CoCo Fest held August 19-20th, 2000 in Pittsburgh, Pennsylvania.  During a Q&amp;amp;A session held there, Hawkins answered questions regarding the Easter Egg.&lt;br /&gt;
[[image:MarkHawkins.jpg|right|thumb|320px|Mark Hawkins]]&lt;br /&gt;
:Allen Huffman: &amp;lt;i&amp;gt;What was the picture done on?&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:Mark Hawkins: &amp;lt;i&amp;gt;Someone was selling a digitizer card at the time and Tim [Harris] got ahold of one. And the digitizing was done in part on a CoCo. Which is kind of neat and kind of unique and kind of interesting. We could never admit what-- how we&#039;d done it. Somehow there was a conflict of interest with Tandy selling it or not. So we could never say it. And we actually got asked a couple of different times: &amp;quot;Did you use this digitizing card.&amp;quot; Well we don&#039;t remember. But now I can tell you, we did. So it was done on the CoCo. But, what&#039;s also interesting is big M behind Tim&#039;s head doesn&#039;t exist. It was built. It was pixeled in later. It actually came from our logo on our business cards at the time. But he actually built it, he didn&#039;t scan it or anything. And then the other thing that is kind of interesting is that there are two people wearing a coat. The same coat. Not the same kind of coat-- the same coat. Which kind of tells you where I was going. They were actually shot individually and Tim pasted them all together one evening in his basement and came in... And that&#039;s the story of the picture. It could have been just a big Microware Logo, It could have been Shakespeare, it could have been who knows what else we could have come up with. We ended up with the picture.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Today, as in the past, the Egg remains a source of humor, curiosity and even criticism.  Many CoCo users have scoffed at the idea of filling the ROM with a picture when more useful features like a full screen editor could have been placed in the unused space.  The truth is, it was Tandy&#039;s specification which drove the features of the CoCo 3, including the idea of filling the unused ROM space with garbage.  Even if there were no picture, the space would have contained no useful code anyways.&lt;br /&gt;
&lt;br /&gt;
==A Fascinating Discovery==&lt;br /&gt;
In August of 2005, a special floppy disk (&amp;quot;The Mugs Disk&amp;quot;) was discovered.  This 5.25&amp;quot; disk was the actual disk used to create the Easter Egg image in all Color Computer 3s, and contained the many raw graphic files.  You can obtain the DSK image of the actual Mugs Disk here: [[Media:mugs.dsk|mugs.dsk]]&lt;br /&gt;
=== Mugateer Source Images ===&lt;br /&gt;
Here are the three pictures that were stitched together:&lt;br /&gt;
[[Image:Mark_Hawkins.png|thumb|left|256px|Mark Hawkins]]&lt;br /&gt;
[[Image:Tim_Harris.png|thumb|left|256px|Tim Harris]]&lt;br /&gt;
[[Image:Todd_Earles.png|thumb|left|256px|Todd Earles]]&lt;br /&gt;
{{Clr}}&lt;br /&gt;
=== Other Unused Images ===&lt;br /&gt;
On the same disk, pictures of other Microware employees were found.  Perhaps some of these were considered  for inclusion in the infamous picture?  We&#039;ll likely never know!&lt;br /&gt;
&lt;br /&gt;
[[Image:Walden_Miller.png|left|thumb|320px|Walden Miller]]&lt;br /&gt;
[[Image:Robert_Dogget.png|left|thumb|320px|Robert Doggett]]&lt;br /&gt;
[[Image:Mary_Marturello_and_Andy_Ball.png|left|thumb|320px|Mary Marturello &amp;amp; Andy Ball]]&lt;br /&gt;
[[Image:Mark_Hawkins_2.png|left|thumb|320px|Mark Hawkins]]&lt;br /&gt;
[[Image:Larry_Crane.png|left|thumb|320px|Larry Crane]]&lt;br /&gt;
[[Image:Ken_Mizuno.png|left|thumb|320px|Ken Mizuno]]&lt;br /&gt;
[[Image:Ken_Kaplan_2.png|left|thumb|320px|Ken Kaplan]]&lt;br /&gt;
[[Image:Eric_Miller.png|left|thumb|320px|Eric Miller]]&lt;br /&gt;
[[Image:Eric_Miller_3.png|left|thumb|320px|Eric Miller]]&lt;br /&gt;
[[Image:Eric_Miller_2.png|left|thumb|320px|Eric Miller]]&lt;br /&gt;
[[Image:Bob_Sorensen.png|left|thumb|320px|Bob Sorensen]]&lt;br /&gt;
[[Image:Bob_Moore.png|left|thumb|320px|Bill Moore]]&lt;br /&gt;
{{Clr}}&lt;br /&gt;
&lt;br /&gt;
==Other Color Computer 3 Easter Eggs==&lt;br /&gt;
[[Image:CLS9.png|right|320px|thumb|CLS 9-255 easter egg]]&lt;br /&gt;
The second Easter Egg is brought up by issuing a CLS (clear screen) command with a parameter from 9 to 255 on the 40 or 80 column screen. (A similar egg exists in the original Color Computer 1/2 modles, though it reads &amp;quot;Microsoft&amp;quot;.)&lt;br /&gt;
[[Image:CLS100.png|right|thumb|320px|CLS 100 hi-res screen easter egg]]&lt;br /&gt;
The third easter egg is brought up by switching to the 40 or 80 column screen and issuing a CLS 100. This only works once, unless the machine is reset. Typing the command again just displays the Microware message.&lt;br /&gt;
[[Category:Articles]]&lt;/div&gt;</description>
			<pubDate>Wed, 11 Jul 2007 21:46:55 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:CoCo3_Easter_Egg</comments>
		</item>
		<item>
			<title>Todd Earles</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Todd_Earles&amp;diff=3550</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Todd_Earles&amp;diff=3550</guid>
			<description>&lt;p&gt;Tlindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Todd Earles worked for Microware. One of his projects was contributing to the Super Extended Color BASIC for the CoCo 3. He was born on June 26, 1960 and died July 9, 2007.&lt;br /&gt;
&lt;br /&gt;
[[Image:ToddEarlsPicture.jpg]]&lt;/div&gt;</description>
			<pubDate>Wed, 11 Jul 2007 21:45:32 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Todd_Earles</comments>
		</item>
		<item>
			<title>File:ToddEarlsPicture.jpg</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=File:ToddEarlsPicture.jpg&amp;diff=3549</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=File:ToddEarlsPicture.jpg&amp;diff=3549</guid>
			<description>&lt;p&gt;Tlindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</description>
			<pubDate>Wed, 11 Jul 2007 21:44:57 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/File_talk:ToddEarlsPicture.jpg</comments>
		</item>
		<item>
			<title>Todd Earles</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Todd_Earles&amp;diff=3548</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Todd_Earles&amp;diff=3548</guid>
			<description>&lt;p&gt;Tlindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Todd Earles worked for Microware. One of his projects was contributing to the Super Extended Color BASIC for the CoCo 3. He was born on June 26, 1960 and died July 9, 2007.&lt;/div&gt;</description>
			<pubDate>Wed, 11 Jul 2007 21:42:11 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Todd_Earles</comments>
		</item>
		<item>
			<title>Todd Earles</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Todd_Earles&amp;diff=3547</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Todd_Earles&amp;diff=3547</guid>
			<description>&lt;p&gt;Tlindner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Todd Earles worked for Microware. One of his projects was contributing to the Super Extended Color BASIC for the CoCo 3. He was bord on June 26, 1960 and died July 9, 2007.&lt;/div&gt;</description>
			<pubDate>Wed, 11 Jul 2007 21:41:50 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:Todd_Earles</comments>
		</item>
		<item>
			<title>Category:People</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=Category:People&amp;diff=3546</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=Category:People&amp;diff=3546</guid>
			<description>&lt;p&gt;Tlindner: Added Todd Earles&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavPeople}}&lt;br /&gt;
&lt;br /&gt;
Here we can create pages for all the known CoCo folks, by category (programmers, hardware designers, writers, etc.) and any that register for accounts here can just link their personal info page to the page here.  If that happens.&lt;br /&gt;
&lt;br /&gt;
==OS-9 Notables ==&lt;br /&gt;
*[[Chris Burke]]&lt;br /&gt;
*[[Kevin Darling]]&lt;br /&gt;
*[[Alan DeKok]]&lt;br /&gt;
&lt;br /&gt;
==Game Greats==&lt;br /&gt;
*[[Steve Bjork]]&lt;br /&gt;
*[[Dave Dies]]&lt;br /&gt;
&lt;br /&gt;
==Other Folks==&lt;br /&gt;
*[[Carl Boll]] - SysOp of ChiCoCo BBS and OS-9 advocate&lt;br /&gt;
*[[Eric Crichlow]] - Author of ShellMate and Gold Runner&lt;br /&gt;
*[[Al Dages]]&lt;br /&gt;
*[[Todd Earles]] - Microware employee&lt;br /&gt;
*[[Lawrence C. &amp;quot;Lonnie&amp;quot; Falk]] - Founder and publisher of Rainbow Magazine&lt;br /&gt;
*[[Wayne Green]] - Founder and publisher of 80-Micro, Hot Coco and other publications&lt;br /&gt;
*[[Marty Goodman]] - Famed CoCo columnist and hardware guru&lt;br /&gt;
*[[Scott Griepentrog]]&lt;br /&gt;
*[[Mike Haaland]]&lt;br /&gt;
*[[Joel Hegberg]] - Prolific CoCo and MM/1 software developer&lt;br /&gt;
*[[Gene Heskett]] - NitrOS-9 contributor&lt;br /&gt;
*[[Allen Huffman]] - Sub-Etha Software, CoCo Chronicles (CoCoFest reports).&lt;br /&gt;
*[[Paul Jerkatis]]&lt;br /&gt;
*[[Tim Jenison]] - author of [[CoCo Max]] 1, involved with [[DS-69 Digisector]]&lt;br /&gt;
*[[James Jones]] - Former Microware employee and Compiler Guru&lt;br /&gt;
*[[Mike Knudsen]] - Music man and author of UltiMuse&lt;br /&gt;
*[[Carl Kreider]] - OS-9 expert and creator of the AT-306&lt;br /&gt;
*[[Eddie Kuns]]&lt;br /&gt;
*[[Timothy Lindner]]&lt;br /&gt;
*[[Mark Marlette]] - CoCo hadware guru and founder of Cloud-9&lt;br /&gt;
*[[Terry Simons]] - Founder of Mid-Iowa Country &amp;amp; CoCo Club and a controversial figure in his day&lt;br /&gt;
*[[Chet Simpson]]&lt;br /&gt;
*[[R.C. Smith]] - Popular fest-goer and member of the Atlanta Computer Society&lt;br /&gt;
*[[John Strong]] - Founder of StrongWare&lt;br /&gt;
*[[Lee Veal]] - Proud owner of CoCo #00001&lt;br /&gt;
*[[Paul Ward]] - The man behind the MM/1&lt;br /&gt;
*[[David Wordell]]&lt;/div&gt;</description>
			<pubDate>Wed, 11 Jul 2007 21:39:52 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Category_talk:People</comments>
		</item>
		<item>
			<title>CoCo3 Easter Egg</title>
			<link>https://www.cocopedia.com/wiki/index.php?title=CoCo3_Easter_Egg&amp;diff=3545</link>
			<guid isPermaLink="false">https://www.cocopedia.com/wiki/index.php?title=CoCo3_Easter_Egg&amp;diff=3545</guid>
			<description>&lt;p&gt;Tlindner: Added life span to Mr. Earles mention.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavArticles}}&lt;br /&gt;
The Color Computer 3 contained a few well-known &amp;quot;Easter Eggs&amp;quot; (hidden gems that programmers often sneak into code to be called up at a later time through some cryptic means).  This page documents those eggs and how some of them came about.&lt;br /&gt;
&lt;br /&gt;
==The Egg==&lt;br /&gt;
[[Image:CoCo3_Easter_Egg.png|center|CoCo 3 Mugateers]]&lt;br /&gt;
The above picture is universally recognized by Color Computer 3 owners the world over!  It has been called by various names (&amp;quot;The CoCo Three&amp;quot;, &amp;quot;The Three Mugateers&amp;quot;, &amp;quot;The Three Amigos&amp;quot;, &amp;quot;Wasted Space&amp;quot;, etc.) and can be displayed on every Color Computer 3 ever manufactured.  Interestingly, the sequence on how to bring it up was kept secret until shortly after the release of the CoCo 3 in July of 1986. That is what makes it an &#039;&#039;Easter Egg&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
To see the picture hold down the &#039;&#039;CTRL&#039;&#039; and &#039;&#039;ALT&#039;&#039; keys the CoCo 3&#039;s keyboard while powering up. Alternatively, hold down &#039;&#039;CTRL&#039;&#039; and &#039;&#039;ALT&#039;&#039; then press the reset button on the back right of the case. This sequences put the CoCo 3 into a special mode where the only thing it can do is display this picture. A nifty side effect of this easter egg is now there is an easy way to to generate a cold restart of the machine. Pressing the reset button again will produce the standard Color Computer 3 power on sequence.&lt;br /&gt;
&lt;br /&gt;
==Fertilizing the Egg: Tandy Contemplates a &amp;quot;CoCo 3&amp;quot;==&lt;br /&gt;
For years, Color Computer users pined for a newer Color Computer that would compete with the likes of Amiga and Commodore on a more even footing.  The antiquated 32x16 character screen on the Color Computer and Color Computer 2 was seen as a drawback, as was the limited graphics and color capabilities.&lt;br /&gt;
&lt;br /&gt;
In 1985, the design and development of the Color Computer 3 began in earnest.  It would eventually arrive in Radio Shack stores in August of 1986 and become a worthy competitor in the home computer arena.&lt;br /&gt;
&lt;br /&gt;
But few knew what was lurking inside...&lt;br /&gt;
&lt;br /&gt;
==Microware &amp;quot;Comes Into The Picture&amp;quot;==&lt;br /&gt;
During the design of the Color Computer 3 hardware, Tandy commissioned Microware to extend the internal BASIC interpreter with new commands and functions.   This proved to be somewhat problematic, since the BASIC ROM code was licensed from Microsoft.  While there is no concrete knowledge of why Microsoft wasn&#039;t tasked with revamping their BASIC interpreter to support the features of the new Color Computer 3, there&#039;s conjecture that:&lt;br /&gt;
&lt;br /&gt;
* By that time, Microsoft was too busy and important to do work for the Color Computer 3.&lt;br /&gt;
* Tandy and Microsoft may not have been able to agree on a price.&lt;br /&gt;
* Since Microware was doing OS-9 Level Two for Tandy anyway, a deal may have been cut for Microware to extend the BASIC interpreter as well.&lt;br /&gt;
&lt;br /&gt;
Whatever the reason, in the end Microware was tasked to write code patches which would extend Color BASIC to support the new features of the CoCo 3.  This approach of &amp;quot;patching&amp;quot; was an interesting one, and was specifically employed to prevent any perceived licensing violations between Tandy and Microsoft.&lt;br /&gt;
&lt;br /&gt;
The three people pictured in the &#039;&#039;Easter Egg&#039;&#039; are Mark Hawkins, Tim Harris and Todd Earles (6/26/1960 - 7/9/2007). They were Microware employees who worked on the additional functionality of the internal BASIC interpreter.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Were they the only ones? Why were they included in the picture? Did they work on OS-9 Level 2?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==The Egg is Hatched==&lt;br /&gt;
It didn&#039;t take long for word to get out that the Color Computer 3 contained a cleverly hidden picture of three of its software designers.  Within weeks of the CoCo 3&#039;s release, Radio Shack stores began seeing the picture of the mugateers emblazened on their CoCo 3 systems on display thanks to prankish customers.  In the December 1986 issue of Rainbow Magazine, managing editor Jim Reed dedicated a great deal of his column to the phenomenon, even announcing a contest in which one winner from each state would be rewarded if they could find an alternate way to bring up the &amp;quot;Gang of 3.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The folks at Tandy Towers were not amused at this apparent &amp;quot;undocumented&amp;quot; addition to their new Color Computer 3.  Ex-Tandy employee [http://groups.google.com/group/comp.sys.tandy/msg/eaa2bf487fb3e538?hl=en&amp;amp; Frank Durda IV] put it this way in a message posted to comp.sys.tandy on March 13, 2003:&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: .5em 1em 1em; margin: 3px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:left&amp;quot;&amp;gt; &amp;lt;i&amp;gt;Microware demanded and grudgingly got an 8K ROM budget, then they used 2K for the ordered improvements and almost 6K for the photo. Tandy hardware and R&amp;amp;D management were really, really irritated with Microware over this once it was discovered, as they could have put a cheaper 2K ROM in instead and gotten the wanted fixes. (In those days, the difference in price between the 8K masked ROM and 2K masked ROM was significant.)&amp;lt;br&amp;gt;&lt;br /&gt;
You don&#039;t know how many internal projects got put under the microscope by hardware management after that stunt, looking for what we now call &amp;quot;Easter Eggs&amp;quot; and as part of the witch hunt, killing what hardware management was calling &amp;quot;trivial&amp;quot; or unapproved functionality. A lot of good things died as a result of that stunt.  It probably helped doom the Deluxe CoCo project too.&lt;br /&gt;
&amp;lt;/i&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
While Durda&#039;s information generally seems to be in step with what is &amp;quot;in the know&amp;quot;, there are some inaccuracies in his post.  First, the code enhancements to the CoCo 3 took about 8K, not the 2K that he claims.  Also, the Deluxe CoCo project was cancelled before the CoCo 3 was released, so it is unlikely that Tandy canned that project due to the Easter Egg.&lt;br /&gt;
&lt;br /&gt;
==Fact &amp;amp; Folklore About The Egg==&lt;br /&gt;
It is pretty much established fact that the Easter Egg was put in by Microware employees who, by keeping the egg secret, made Forth Worth quite upset.  What hasn&#039;t been known until recently was the motivation for creating the Easter Egg and exactly how it was done.&lt;br /&gt;
&lt;br /&gt;
The Easter Egg craze reached a frenzy of sorts in March of 1993, when the Mid Iowa &amp;amp; Country CoCo (MI&amp;amp;CC) hosted the one and only Mid-America CoCo Fest in Des Moines, Iowa, the home of Microware.  Terry Simons, president of MI&amp;amp;CC, invited Mark Hawkins and Todd Earles, still Microware employees at the time, to attend the fest.  Seeing an opportunity to make money, Terry offered attendees to take a digitized picture with two of the &amp;quot;Three Amigos&amp;quot; for a fee.  Although the pictures weren&#039;t of the best quality, the promotion proved to be a hit.  Almost all of the attendees stood between Mark and Todd to pose for the mock picture, effectively taking the place of Tim Harris, who had left Microware by then.&lt;br /&gt;
&lt;br /&gt;
Former Microware employee Boisy Pitre states, &amp;quot;Back when I worked for Microware, I asked Mark Hawkins to tell me the story about the picture in the ROM.  From what Mark said, they used a digitizer on the CoCo to take individual pictures, then someone pasted them together into one image.  The logo was added by hand, and he and Todd even had the exact same jacket on.&amp;quot;  The discovery of &amp;quot;The Mugs&amp;quot; Disk&amp;quot; in September 2005 corroborates Mark&#039;s assertion.&lt;br /&gt;
&lt;br /&gt;
Boisy continues, &amp;quot;Mark also said that at the time the CoCo 3 was being developed, Tandy insisted that Microware fill any unused space in the ROMs with &#039;random junk.&#039;  The guys thought that a picture would qualify as random data, and thus the idea of the Easter Egg was born.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mark Hawkins himself attended PennFest 2000, a CoCo Fest held August 19-20th, 2000 in Pittsburgh, Pennsylvania.  During a Q&amp;amp;A session held there, Hawkins answered questions regarding the Easter Egg.&lt;br /&gt;
[[image:MarkHawkins.jpg|right|thumb|320px|Mark Hawkins]]&lt;br /&gt;
:Allen Huffman: &amp;lt;i&amp;gt;What was the picture done on?&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
:Mark Hawkins: &amp;lt;i&amp;gt;Someone was selling a digitizer card at the time and Tim [Harris] got ahold of one. And the digitizing was done in part on a CoCo. Which is kind of neat and kind of unique and kind of interesting. We could never admit what-- how we&#039;d done it. Somehow there was a conflict of interest with Tandy selling it or not. So we could never say it. And we actually got asked a couple of different times: &amp;quot;Did you use this digitizing card.&amp;quot; Well we don&#039;t remember. But now I can tell you, we did. So it was done on the CoCo. But, what&#039;s also interesting is big M behind Tim&#039;s head doesn&#039;t exist. It was built. It was pixeled in later. It actually came from our logo on our business cards at the time. But he actually built it, he didn&#039;t scan it or anything. And then the other thing that is kind of interesting is that there are two people wearing a coat. The same coat. Not the same kind of coat-- the same coat. Which kind of tells you where I was going. They were actually shot individually and Tim pasted them all together one evening in his basement and came in... And that&#039;s the story of the picture. It could have been just a big Microware Logo, It could have been Shakespeare, it could have been who knows what else we could have come up with. We ended up with the picture.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Today, as in the past, the Egg remains a source of humor, curiosity and even criticism.  Many CoCo users have scoffed at the idea of filling the ROM with a picture when more useful features like a full screen editor could have been placed in the unused space.  The truth is, it was Tandy&#039;s specification which drove the features of the CoCo 3, including the idea of filling the unused ROM space with garbage.  Even if there were no picture, the space would have contained no useful code anyways.&lt;br /&gt;
&lt;br /&gt;
==A Fascinating Discovery==&lt;br /&gt;
In August of 2005, a special floppy disk (&amp;quot;The Mugs Disk&amp;quot;) was discovered.  This 5.25&amp;quot; disk was the actual disk used to create the Easter Egg image in all Color Computer 3s, and contained the many raw graphic files.  You can obtain the DSK image of the actual Mugs Disk here: [[Media:mugs.dsk|mugs.dsk]]&lt;br /&gt;
=== Mugateer Source Images ===&lt;br /&gt;
Here are the three pictures that were stitched together:&lt;br /&gt;
[[Image:Mark_Hawkins.png|thumb|left|256px|Mark Hawkins]]&lt;br /&gt;
[[Image:Tim_Harris.png|thumb|left|256px|Tim Harris]]&lt;br /&gt;
[[Image:Todd_Earles.png|thumb|left|256px|Todd Earles]]&lt;br /&gt;
{{Clr}}&lt;br /&gt;
=== Other Unused Images ===&lt;br /&gt;
On the same disk, pictures of other Microware employees were found.  Perhaps some of these were considered  for inclusion in the infamous picture?  We&#039;ll likely never know!&lt;br /&gt;
&lt;br /&gt;
[[Image:Walden_Miller.png|left|thumb|320px|Walden Miller]]&lt;br /&gt;
[[Image:Robert_Dogget.png|left|thumb|320px|Robert Doggett]]&lt;br /&gt;
[[Image:Mary_Marturello_and_Andy_Ball.png|left|thumb|320px|Mary Marturello &amp;amp; Andy Ball]]&lt;br /&gt;
[[Image:Mark_Hawkins_2.png|left|thumb|320px|Mark Hawkins]]&lt;br /&gt;
[[Image:Larry_Crane.png|left|thumb|320px|Larry Crane]]&lt;br /&gt;
[[Image:Ken_Mizuno.png|left|thumb|320px|Ken Mizuno]]&lt;br /&gt;
[[Image:Ken_Kaplan_2.png|left|thumb|320px|Ken Kaplan]]&lt;br /&gt;
[[Image:Eric_Miller.png|left|thumb|320px|Eric Miller]]&lt;br /&gt;
[[Image:Eric_Miller_3.png|left|thumb|320px|Eric Miller]]&lt;br /&gt;
[[Image:Eric_Miller_2.png|left|thumb|320px|Eric Miller]]&lt;br /&gt;
[[Image:Bob_Sorensen.png|left|thumb|320px|Bob Sorensen]]&lt;br /&gt;
[[Image:Bob_Moore.png|left|thumb|320px|Bill Moore]]&lt;br /&gt;
{{Clr}}&lt;br /&gt;
&lt;br /&gt;
==Other Color Computer 3 Easter Eggs==&lt;br /&gt;
[[Image:CLS9.png|right|320px|thumb|CLS 9-255 easter egg]]&lt;br /&gt;
The second Easter Egg is brought up by issuing a CLS (clear screen) command with a parameter from 9 to 255 on the 40 or 80 column screen. (A similar egg exists in the original Color Computer 1/2 modles, though it reads &amp;quot;Microsoft&amp;quot;.)&lt;br /&gt;
[[Image:CLS100.png|right|thumb|320px|CLS 100 hi-res screen easter egg]]&lt;br /&gt;
The third easter egg is brought up by switching to the 40 or 80 column screen and issuing a CLS 100. This only works once, unless the machine is reset. Typing the command again just displays the Microware message.&lt;br /&gt;
[[Category:Articles]]&lt;/div&gt;</description>
			<pubDate>Wed, 11 Jul 2007 21:37:43 GMT</pubDate>
			<dc:creator>Tlindner</dc:creator>
			<comments>https://www.cocopedia.com/wiki/Talk:CoCo3_Easter_Egg</comments>
		</item>
</channel></rss>