📢 If you’ve ever wanted one of the legendary Micro Innovations multi-purpose expansion cards (MIB2/3) for your #ColecoADAM, here is your chance! John Lundy has built a small run of MIB238 cards (based on Eric Pearson’s design) and is selling them via the ADAM Facebook group. GO!

UPDATE: All sold! 👐🏻

🔵🔴 #ColecoADAM

Learning more about the VDP and how to move data between RAM and VRAM using SmartBASIC and machine code. The Nibbles & Bits newsletter “Hacker’s Delight” section is always interesting! 🔰 #ColecoADAM

Playing with SmartLOGO… it’s surprisingly powerful. Lots of learning to do! Found out that I can dump the byte data of a LOGO shape and use it in SmartBASIC 2.0 for a sprite. 🐢

Serial (Port) Killer

This week I killed my ADAM. 💀

I was trying to fix a new issue I’m having where any software that tries to access the serial port is just echoing a series of “D” characters onto the screen. The problem is present in ADAMLink V (EOS) and Qterm (CP/M). My serial port device is an Orphanware/HLM-GLK model which attaches to ADAM’s side expansion port. However I figured out that it wasn’t a problem with my serial port because the behaviour persisted even when I had nothing attached to the expansion port.

I posted about the problem on the ADAM Facebook Group and it was suggested by James Notini that I try connecting my Atari 2600 adapter (ColecoVision Expansion Module #1) to see if its a problem with my expansion port. The Atari adapter worked just fine so I had a bit of fun playing Asteroids while I decided on my next course of action.

I tried removing my memory expansion card. No difference. I tried disconnecting each of my data drives. No difference. I tried using the printer power instead of my new external power supply. No change. Milli suggested disconnecting the keyboard while the “D” stream was appearing to see if it was a keyboard glitch. It wasn’t. At a loss, I decided I would dismantle ADAM to clean out any dust as well as inspect the boards and see if any wires or chips were loose.

This was the first time I had taken ADAM completely apart, removing all the metal shielding (of which there is a lot) and getting right down to the boards. It was kinda fun but a little nerve-wracking as I started to panic that I wouldn’t be able to put it back together again. After all, this is my one and only ADAM computer! 😬 Inside ADAM level 1 - ColecoVision Board Inside ADAM level 2 - ADAM Board ADAM's Brain - The Z80 CPU

After cleaning out the dust with compressed air and inspecting the boards I put ADAM back together again and booted up… to a blank screen. A blank screen with a steady sound being emitted to be exact. 😱 What had I done wrong? I must’ve missed reconnecting something. I didn’t have time to take it all apart so I had to leave it for a couple of days until this morning when I made my attempt to bring ADAM back from the dead.

I was methodical. After each part I disconnected I would try to power up ADAM and see if the screen stayed blank. It was when I removed the top metal shielding from the ColecoVision board and powered up that I was finally greeted by ADAM’s familiar word processor. 🎉 I breathed a huge sigh of relief! I discovered that one of the screws was making contact with the shielding above and the shielding below the CV board which was causing the problem. I removed the top shielding, re-assembled, and I was back in business! Did a RAM test and diagnostic and everything looks good.

Unfortunately the orginal “D” stream serial port problem that started this misadventure still haunts my ADAM 👻 but for now I am just happy to have him alive and functional again!

Homebrew Hardware from the ADAM Community

Some new ADAM hardware goodies arrived this week!

I am thrilled to be one of the first people in Canada to get my hands on the awesome new ADAM SD-DDP drive! The SD-DDP drive uses SD cards and .DDP (Digital Data Pack) files (readily available on the ADAM Archive) to perfectly emulate an original ADAM Digital Data Drive. ADAM treats it just like a real DDP drive so it doesn’t need any software drivers… a true thing of beauty!

The SD-DDP project was originally created by Eric Pearson who generously shared all of the details on GitHub. Hardware guru John Lundy was able to use Eric’s plans and code to produce a beautiful professional-quality, user-installable device which he then made available for sale to all members of the ADAM community via the Coleco ADAM Facebook Group.

The second piece of hardware that arrived at my door this week was built by none other than ADAM legend James Walters (of Walters Software Co). It is an external power supply that negates the need to keep my aging SmartWRITER printer connected. The power supply is well built and looks fantastic as it perfectly complements ADAM’s memory console.

Check out the pictures! The ADAM community is very fortunate to have such incredibly knowledgeable, generous, and talented folks in its ranks.

The ADAM SD-DDP prior to installation.The SD-DDP installed in my ADAM and powered up.The Walters external power supply for the Coleco ADAM.The power supply and SD-DDP fully integrated into my ADAM system! Also pictured is my ADE Lite drive.

Reading the Nibbles & Bits newsletter and learning about the #ColecoADAM VDP (Video Display Processor) by mixing some machine language with SmartBASIC! 🤓⌨️

Here’s your chance to support the indispensible ADAM archive and get a free car window sticker to show your ❤️ for the #ColecoADAM. Act now, limited quantities available! #RetroComputing ➡ http://adamarchive.org/donate.php

60-Column Text Demo

I was checking out some of the demo programs on DEI’s FontPower disk and I came across one that featured 60-column text. It uses the shape table to store the characters which is a really cool technique. Seeing how legible it was made me think it’d be great for a communications program so I modified the demo program and came up with this. Not sure if I’ll finish it but it sure would be nice to have.

Turtle Talk with SmartLOGO

Believe it or not I’ve never tried SmartLOGO before! I vaguely remember being at a friend’s house back in the 80s when he showed it to me and said he could make games with it. I’ve got the manual here so I’m going to have some fun going through the tutorials and see what I can do with it. 🐢 Turtle Power!

SmartLOGO for Coleco ADAM

🚨New hardware alert! Got a 🖲 ColecoVision Roller Controller in great condition from my new friend James at crt-international.com. I love it! Definitely adds some arcade authenticity to games. Took me right back to playing Centipede in the arcade. Good times! 🎮🕹 #ColecoADAM

ColecoVision Roller Controller

🌈 Spent time this morning in BASIC trying to produce “rainbow” text (a string with each character having a different colour all appearing on the same line). It’s not as trivial a task as it would seem to be! More experimentation is required. Excellent. 😄 #ColecoADAM

A New Coleco ADAM Book!

I recently got a new book called “Programming Games For The ColecoVision and ADAM in Assembler” by Tony Cruise. Yes, it is still 2020 and yes, there is a new book about ADAM programming! Of course I preordered this book as soon as I heard about it and it was released at the end of August as a digital Kindle book. You can get it on Amazon now or if you prefer a printed physical version you can preorder it here.

I’m already nine chapters into it and I’ve been enjoying it so far. The only unfortunate thing (for me) is that the workflow described in the book is Windows-centric and these days I use a Mac (when I’m not using my ADAM 🙂). This didn’t slow me down too much though as I already had a working virtualized Windows 10 installation on my Mac using VirtualBox before I started the book.

If you’re interested in creating games for ColecoVision or ADAM or maybe just interested in learning some Z-80 Assembler then I highly recommend checking out Tony’s book! There is a thread on the AtariAge forum where the author is active so you can discuss the book and ask any questions you may have.

Cover for Programming Games For The ColecoVision and ADAM in Assembler book.

Tweeting from ADAM?!

Yes, it is possible to send a tweet from the ADAM! I did it this morning with the help of the RetroBattleStations Level29 BBS. Check out my tweet on Twitter.

Screenshot of posting to Twitter from my Coleco ADAM!

BASIC SmartWriter File Viewer

I’m happy to announce that this weekend I was able to complete and release my SmartWriter File Viewer BASIC program.

This has been a really fun project and the end result is a utility that I will personally get a lot of use from. One of the main reasons this project was so fun was that it involved disassembling SmartBASIC’s BLOAD routine and modifying it to do what I needed. I haven’t had much experience with assembly language so this gave me a chance to dig in and learn. I used the disassembler included with the legendary Hacker’s Guide To The ADAM. The Hacker’s Guide Volume 2 was also incredibly helpful as a reference for this project. Without its section on Tape Routines I don’t think I would’ve been able to do this at all. Huge shout-out to Peter and Ben Hinkle for writing these awesome guides back in 1985/86. The other book I used as a reference was “Programming the Z80” by Rodney Zaks which I’m sure I’ll be returning to again and again.

As I mentioned in a previous post the main thing I needed to do was get the BLOAD routine to accept SmartWriter files. After reading through the assembly code I found what I was looking for here at 21083:

21083 525B  3A9641  LD   A,(nn)    4196
21086 525E  FE02    CP   n
21088 5260  C2255F  JP   NZ,nn    5F25

Just before these instructions the routine loads the file header into memory location $4194. So the first line above is looking at the 3rd byte of the header (the file type) and the second line is comparing it to the value 02. If it doesn’t equal 2, the third line jumps to an error display routine (File Type Mismatch). In ADAM’s EOS, binary files have a file type of 2 whereas SmartWriter files have a file type of 1. Therefore all I had to do was modify memory location 21087 to contain the value of 1 like this:

POKE 21087, 1

Eureka! That was enough to get BLOAD to accept SmartWriter files. As a bonus, the routine would now neatly reject other binary files that would obviously be incompatible with my viewer program. Once I had this in place I started to figure out more of the routine and how it worked. There are some other modifications I had to make before I was done but this one was definitely the key. You can check out the rest of the changes and the entire code if you’d like by downloading the disk image over at the SmartBASIC Forum.

Just a BASIC Saturday morning! 🤓 #ColecoADAM

Connection Established

I finally have a serial port for my ADAM! A special thanks to rietveld and adamcon over at the AtariAge forum for helping me find one. I got an external unit that connects to the memory console’s side expansion port.

I’ve had a WiModem232 ready and waiting for this day. Got it all set up and working perfectly using the awesome ADAMLink V terminal software and within minutes I was connected to a BBS just like the old days.

This is incredibly cool. It just blows my mind that my computer that was made way back in 1983 is now connected to the internet via WiFi. I highly recommend the WiModem232!

I printed out a disassembly of the BLOAD routine [$5201] and spent some time studying it last night. Despite my limited assembly knowledge I’ve been able to figure out most of it including the key to making BLOAD accept SmartWriter files. 🎉 Progress! #ColecoADAM #Z80

Beginning With BLOAD

I’m planning to write a BASIC program to view SmartWriter documents. It would come in really handy since many program disks include their documentation in this format and it’s inconvenient to reboot into the word processor just to read them. At first glance this seemed like a pretty simple program to write however the BLOAD command refuses to load SmartWriter files (although they are cataloged as type “H” binary files) for some unknown reason. The OPEN command only works with text files so that won’t work either.

One solution I’m considering is modifying the BLOAD routine in memory so it will accept SmartWriter files and load them like any other binary file. This will take me in a bit over my head as I’m not comfortable in machine code or assembly language (yet) but it does turn this into a pretty interesting project. Stay tuned!

Double Fail

Didn’t have such a great morning with ADAM today. First, I unsuccessfully tried to customize RamBOOT by copying FILEMANAGER onto its disk and renaming it as ADAMCALC. It wasn’t having it and simply refused to load File Manager when I hit the key for ADAM Calc. Just a blank screen. I still haven’t given up on customizing RamBOOT though. I’d love to be able to quickly jump in and out of programs of my choosing instead of its default SmartBASIC 1 and 2, ADAM Calc, and SmartWRITER options. There’s got to be a way.

After failing to customize RamBOOT I decided to change gears and try to install the ZDE programmer’s editor for CP/M. However, somewhere along the path of downloading the required files to my Mac, using WRDISK to copy them to an EOS disk image, and finally bringing them over to ADAM CP/M using the ADAM.COM tool it seems like the zde16.pma archive file got corrupted and it refused to fully extract. Sigh.

There’s a new sticker on my laptop. 👍

NEWCCP - Better than New Coke!

I managed to get “NEWCCP” installed and working in CP/M 2.2. I think NEWCCP may have actually been the origins of T-DOS as it is written by the same programmer. As the name suggests it is a replacement for the standard CCP that adds a few benefits like ditching the USER command in favour of the standard “A0>” style prompts and paths. It also adds paging to the TYPE command and includes frequently used commands (like COPY) as resident commands so they can be run from anywhere. You can read more about NEWCCP in Issue #36/#37 of the NIAD Newsletter.

What is really nice is that I was able to get this working on top of my ABP25-patched CP/M installation so now I’ve got a really decent CP/M environment that is somewhat comparable to T-DOS. Why not just use T-DOS? I do use it (and like it) however as I mentioned in a previous post, T-DOS’s video memory usage prevents me from running any software that makes use of ADAM’s graphics capabilities (like this cool Turbo Pascal bitmap library).

ADAM High Speed Digital Data Pack

Super BASIC Plus is pretty awesome! There are a lot of SmartBASIC enhancements out there but this one is by far my favourite.

Sprites and Spaceships

I’ve been having a bit of fun with sprites and SmartBASIC this weekend. First I loaded up SpritePOWER which is a very nice sprite editor for ADAM that was created by Digital Express Inc. Digital Express created a lot of great software for the ADAM. SpritePOWER is really nice because it gives you the option of exporting your sprites as binary (so you can BLOAD them in BASIC), Z80 code (for use in assembly), or as an ASCII file of SmartBASIC code consisting of many DATA statements. For the BASIC code option it even lets you specify the starting line number and line increment value. Pretty slick.

I wanted to create a spaceship that I would later be able to fly with the joystick, so I’d need to create it facing in at least 4 different directions (I didn’t do the diagonal variants). I first created it facing east. SpritePOWER has a handy “flip grid” feature which made it easy to create the west-facing version. Unfortunately it doesn’t have a “rotate grid” feature.

To create the north/south facing sprites what I did was take a picture of the TV screen with my iPhone and then rotate the photo. This made it much easier for me to put the pixels in the right locations. Before long I had all 4 variations of my spaceship ready to fly! I opted to save my sprites in a binary format.

SpritePOWER Spaceship sprites

Coleco SmartBASIC 1.0 doesn’t offer any syntax support for sprites so using them involves knowing what and where to POKE. Thankfully, the SpritePOWER disk included a SmartBASIC program called “SpriteDemo” which showed me how to load and use my sprites. Part of the code even demonstrates how you can move a sprite onscreen using the joystick! I pulled this section of the code into its own program and modified it so that it would use my sprites. The original code would move the same sprite in any of the 4 directions. However, I wanted my program to change the sprite depending on which direction the ship was flying so I made those modifications too. If you’d like to see the SmartBASIC code, you can download it here.

There is something pretty satisfying about flying your own custom 8-bit spacecraft around the screen. Obviously there is a lot more I could do to enhance this code and possibly even use it as the foundation for a game. I may eventually do just that!