Retro Tech

Here you will find updates, information, and download links to various Tandy Color Computer projects i’m working on as well as other retro-computer related content. Feel free to check the “About Me” section for contact info if you have any questions, comments, or requests! Thanks and enjoy!

My Current CoCo Projects

My Current CoCo Projects

This is a list with links to all my current and past projects where you can find download links to the programs and/or source code. Feel free to reach out if anything is incorrect or missing. Enjoy!

  • CoCoIRC v0.9 BETA
    • A native IRC (Internet Relay Chat) client running under NitrOS-9 and utilizing DriveWire to access the internet. NOTE: This is a BETA so I can’t guarantee it will be 100% stable.
  • CoCo Chiptunes Player v1.3
    • NitrOS-9 sound chip player for FM-synth style music files such as CCT and VGM. Currently the player only supports the sound chip inside Ed Snider’s Mega-Mini MPI addon.
  • CoCo WX v1.0
    • A simple command-line live weather data program I wrote for NitrOS-9. It uses DriveWire and the free web service wttr.in to grab current conditions for almost any city in the world!
  • DOSFORMAT v1.1
    • A tool for NitrOS-9 that lets you format a 3.5in 720KB Double-sided Double-density floppy disk using a Color Computer into a standard MS-DOS compatible FAT12 one.
  • DOSDIR v1.1
    • A directory listing command for NitrOS-9 using an MS-DOS style layout with file size and free space presented in decimal comma-separated numbers. The free space calculation time is dramatically improved over the stock DIR command.
  • SysInfo v1.2
    • A hardware detection tool for the Color Computer 3 inspired by the linux script NeoFetch.
    • Version 1.2 update includes improved memory detection algorithm and recognizes additional ROM variants.
  • Custom Keyboard Polling Routine

CoCo Chiptunes Player v1.6 Released! GMC and CocoPSG Support!

This update has been long in the making, but I finally feel like it’s ready for the wild! ALOT has changed since my last update of the player. For one thing, I completely restructured the code to make things more modular in order to more easily support other hardware while reusing some of the same routines (more on this shortly). I pretty much had this new version finished a few months ago, but I discovered a bug in the OPL code where it wouldn’t silence all the instruments in a song when you would abruptly stop playback, and I wanted to fix that before releasing it. Then I got sidetracked with boring life stuff, but I finally had time to find the bug and squash it! Sooo on to the good stuff!

The first new feature I’ve added is VGM Loop support. Some VGM files include embedded instructions to loop certain sections of the song, usually so you can have a unique intro separate from the main looping section, and these are now supported natively. I also added a flag to allow the user to customize how many iterations the loop should go through before finishing. The default is 1 loop, but you can select between 0 and 9, or have it loop forever.

The next major change is new hardware support! For one thing, I have added code for users using native GIME-X NitrOS-9 builds that will force it out of turbo speed mode into normal high-speed mode in order for my timing loops to work correctly. NitrOS-9 automatically returns the GIME-X back into turbo mode periodically on its own so this shouldn’t affect anything after playback is done. Maybe I can find a more elegant solution in the future. But now, the BIG news.

I had explored the possibility in the past of adding support for devices other than the Mega Mini-MPI, but I lacked any way to experiment and test code to see if I could get them working. A few months ago though, I learned that MAME can actually emulate most of them! I had been talking with someone on IRC who was excited to receive his new CocoPSG and was asking if it was supported in my player, so I started tinkering. One device supported became TWO! At the same time, I started poking into how the Game Master Cartridge worked as well, and in short order, two became THREE! During my testing using MAME, it became apparent that addressing these sound carts if more than one were connected at the same time could make things tricky. So I decided on implementing some new flags that allow the user to specify an MPI slot for both the GMC and PSG (OPL uses “virtual” slots so flags aren’t needed for it). This means that you could potentially have a Mega Mini-MPI with both a Game Master Cartridge AND a CocoPSG connected to it, and be able to play song files made for any one of them at any time. For example, you could create a playlist mix that has OPL, PSG, and GMC music files that automatically route sound to the appropriate device!

Speaking of playlists, that is another significant change from the previous version of my player. In the past, playlists were just pathnames to files separated by carriage returns and the only way for the player to recognize one was for you to use the -p flag. This new version supports proper M3U playlist files which are automatically detected regardless of the file extension and without the need of any flags! You can easily make one with any CoCo text editor and instructions are including in the help section of the program.

I’m super proud of how this player has evolved and hope to add more support in the future as well. I do warn you though that all my testing has been done inside an emulation environment and so I can’t guarantee it will work perfectly on real hardware as I don’t own any (yet). Please let me know if you have any problems so I can troubleshoot! Feel free to check out my demo video below and use the download link to try it for yourself. The VHD disk image contains sample music for all the new devices as well as the previous OPL ones so you can experiment. Have fun!

Download CoCo ChipTunes Player v1.6

CoCoIRC v0.9 BETA is Released!

CoCoIRC is a native Internet Relay Chat client written from scratch in 6809 assembly language for the NitrOS-9 operating system. I started on this project a little under a full year ago and it has been, by far, the most complicated CoCo program I’ve ever written. It currently requires DriveWire in order to make the TCP connections to IRC servers, however I do plan to support other coco networking solutions in the future provided there are SCF drivers for it. Also, it only currently will run a Color Computer 3 since it is hardcoded to use the built-in 80-column text mode. Again, in the future I may be able to add support for other text modes allowing it to potentially run on a CoCo 2 as well. It also DOES work on MAME as long as you have the Becker interface setup with a DriveWire Server to talk to. NOTE: This release is very much BETA and I’m sure there will be bugs or things missing, but the best way for me to discover them is for others to mess with it. Please reach out to me if and when you find any of them so I can squash them.

I have been active on various IRC networks on and off since I was in high school in the 90s, and in fact, it helped get me through one of the toughest times in my life. It allowed me to connect and socialize with people in the mid 2000s when I was too ill to go out and see people in person. I really love to dream up ways in which our CoCos can be used not just for games or retro nostalgia, but also be useful in modern everyday life. We use our PCs/Macs/Phones/Tablets all the time to chat with fellow CoCo enthusiasts, but what if you could do the same thing using the CoCo ITSELF?! Well, you see where this is going. Now you can! Of course, by no means are you limited to just chatting about CoCo stuff. There are practically an infinite amount of channels you can join to talk about anything and everything.

I put together a quick demo video showing CoCoIRC in action which you can watch below. There are also links to download it for yourself and give it a try. If enough people are interested, I could perhaps make a tutorial video in the future where I walk people through process of setting everything up and connecting to a server, etc. Enjoy!

Download CoCoIRC v0.9 BETA

Updated Coco Chip Tunes Player To Version 1.3!

Hey all, so I just put together a new version of my OPL2/OPL3 FM synth chiptune player for NitrOS-9. I’ve heard a few people asking why my player requires the CoCo to be locked/frozen during playback, and the reason is this. Despite the fact that it is not ACTUALLY playing sampled audio, the VGM file format still structures the soundchip data according to the same sort of timing that regular sampled audio uses. This means that every CPU cycle is still significant and I need carefully crafted timing loops to play it accurately. I did look into ways to get around this and allow for OS9 multitasking to continue, but I just can’t think of a viable way. It would be no problem if it was custom music written specifically to run on CoCo hardware, but converting a VGM into a multitasking-friendly format would be very difficult. Soooo instead, I had an idea on how to make the player able to stop playback at anytime. To do this, I squeezed a few instructions to poll the keyboard for the BREAK key into my main timing loop and adjusted my cycle counts, and voila, you can now interrupt the “frozen” CoCo whenever you want and resume your NitrOS-9 shenanigans! 😀 An unexpected feature of this, is that for playlists, you can essentially skip a song whenever you want and move on to the next one immediately without having to wait for the current song to finish playing. Anyways, below the video is a link to a zip file containing my updated player and a few disk images that include some sample music for you to play with. (Pun INTENDED) 😛 Have fun!

CoCo Chiptunes Player v1.3 For NitrOS-9

New Weather App “CoCo WX v1.0” is Released!

So ever since I discovered DriveWire’s ability to let you make TCP connections via serial port, I’ve been trying to dream up “apps” to bring the CoCo into the Internet Age. I’m still putting the finishing touches on my upcoming IRC chat client, but in the meantime, I wrote CoCo WX which is a simple command line program that leverages the awesome live-weather data site wttr.in to grab current condition info for nearly any city in the world. I’m a bit of a weather geek (see the posts I’ve made about my own weather station for proof), so I thought it would be a useful and fun little tool to make. As usual, if you’d like to give it a try yourself, the link to download the program and source code will be below!

CoCo WX v1.0 Download

The Release of DOSFORMAT for NitrOS-9!

While there are readily available tools for copying files to/from a DOS-compatible floppy disk with OS-9, there aren’t alot of options to FORMAT a raw/blank/non-dos 3.5 inch DS DD disk for use with DOS/Windows machines. There is a suite of 3rd party modules that can do it and more, but they are a pain to setup and some of the modules are hard to track down. Sooo I made this. 😀 I called it DOSFORMAT because MSFORMAT was already taken. 🙁 It doesn’t depend on ANY 3rd party solutions and works with any standard NitrOS-9 install (including Ease Of Use editions). Currently, it only supports 3.5 inch Double-Sided Double-Density disks (720K), but I’d like to add support for 5.25 disks too when I get some kind of device that lets me hook one of them up to my PC for testing. Below is a download link to a zip file which contains the DOSFORMAT command program and the source code (messy as it is). Feel free to play around with it and let me know you think. My contact info is over HERE. I hope you find it useful, or just neat to play with. Enjoy!

Download Link: dosformat10.zip

CoCo Chiptunes Player for NitrOS-9 is Released!

So I finally have a working chiptunes player for OS-9! “Chiptunes” are FM synthesizer-based song files often found in video games, etc. This player currently only supports the OPL sound chip inside the Mega-Mini MPI, but I plan to hopefully support more hardware like the GMC and the Speech Sound Pak in the future. Give it a try and feel free to let me know what you think or what additional sound chips you’d like me to support later on. Below is a link to a ZIP file containing disk images of my program in various forms, and a demo video of my showing it off on my system. The VHD is a hard drive image that also has many CCT and VGM song files to try. The DSK file is a 720KB image with just a few song tracks I could fit for those who don’t have hardware supporting large disk images. I encourage you to try your own VGM files too and let me know if any of them give you trouble. A HUGE thank you to everyone that helped me put this together.

Download Link: cctplayer.zip

SysInfo: My New Tool For CoCo 3 Hardware Detection

I had some inspiration the other day when a friend showed me a linux script called “Neofetch” that collects information about your system and then displays it in the terminal in a snazzy way. I thought it would be cool to be able to do something similar on the CoCo 3, and so I started looking into it. I know there have been other programs written that detect which version of GIME you have, or how much RAM is in the system, but I wanted to combine all those ideas into one program for fun. In addition, this tool I wrote also tries to figure out what Disk ROM variant you are using by doing a checksum on it. If it doesn’t recognize the value, it will just print the 3 byte checksum value in hex instead. I would love it to be able recognize as many ROMs as possible, so please send me an email with the unknown values it gives you and the type of ROM you are using so I can add it to the database for future versions. 🙂

I had tons of fun writing this and a huge thanks to everyone who helped me puzzle out how to implement this stuff, especially the people I mention in the credits of the program 😁 I’m sure there will be some bugs and auto-detection is a tricky process, so please let me know if it gets things wrong so I can try and correct it. Unfortunately for the time being, it is a CoCo 3 only program though I do have plans to support CoCo 1 and 2 in the future! You can watch a demo video of my program in action below. If you want to try it out for yourself, there will be a download link as well. Just extract the DSK image from the zip file, mount it (or write it to your favorite storage medium) and then type LOADM”SYSINFO” and EXEC it. (UPDATE: For the new version 1.2, use LOADM”SYSNFO12″ instead). Have fun!

Download Links:

Download SysInfo v1.0 (Original)
Download SysInfo v1.2

My Custom CoCo Keyboard Polling Routine (Initial Release)

Some people seemed interested in checking out the custom keyboard polling routines I wrote for the CoCo from scratch. It does not depend on BASIC in any way. It does depend on a little bit of code being put inside an interrupt. It’s a work in progress and not complete by any means, but maybe it will help someone 🙂 Feel free to reach out with questions or suggestions using my Contact Info!

Download Link: lorddragon_keyboard.asm

My Disk Utility Project for the Tandy Color Computer

So I thought I’d start documenting my CoCo programming projects on my website. (Inspired by Nick Marentes’s development blog of his cool upcoming game Gunstar). My main project is a disk utility that I am currently calling “RS09” (I may change it in the future). You may think “ANOTHER disk utility after all the ones made over the years?! Why?”. Well the main reason is because I’ve always been fascinated with disk formats and this project is the perfect way to learn all the ins and outs of CoCo hardware and 6809 assembly language.

Intro screen to my disk utility. Shows the default format/device for the drives.

The other reason is because this utility will support devices both old and new, physical floppy drives to CocoSDC, and it will support both DECB formatted disks and OS9 formatted ones. You’ll be able to copy files directly from one format to another, whether they are on an actual 5.25 inch floppy disk or a DSK image on the CocoSDC. There is an awesome tool that does the same kind of thing (and more) called MShell by Bill Pierce complete with a fancy GUI, but it requires you to be running OS9. My utility is completely STANDALONE. Everything is completely custom and written from scratch that talks directly to all the hardware. It doesn’t even use BASIC calls for things like keyboard. It uses a command-line oriented interface that will be customizable at some point. I originally started writing the code in C and compiling it with CMOC developed by Pierre Sarrazin, but as I got closer and closer to the hardware, it got more and more difficult. So I started re-writing everything I had so far in pure 6809 assembly. The CoCo development community has been a huge part of my endeavors, answering my endless questions about 6809 ASM and giving all kinds of great advice. They will all be getting a HUGE thank you in my credits when I finish the program. Anyways, here is a snapshot of my progress so far:

Here you can see both disk formats in action at the same time.

So far, in terms of functionality, I have directory listing, changing directories on OS9 disks, and various commands for controlling which disk format a drive number should use and which device to use for each. I’m currently working on the file copy part. I did a short demo video of this in action if you want to check it out. Thanks for reading. 🙂

Quick demo of my program accessing various disk hardware devices. Also, my accent is Boston as hell. LOL.