[Coladam] Reversing AdamNET

geoffrey oltmans oltmansg at bellsouth.net
Wed Sep 21 23:20:52 CEST 2011

Have you had a look at the 6801 MCU source code? Also the 6801 MCU datasheet is 
fairly illuminating about the SCI interface that's used to implement AdamNET. I 
had thought to do the same type of project for interfacing with the emulator, 
but never seem to have enough time. ;)

From: Dale Wick <dmwick at yahoo.com>
To: Coleco AdamMailing List <coladam at adamcon.org>
Sent: Wed, September 21, 2011 4:09:24 PM
Subject: [Coladam] Reversing AdamNET


Since AdamCon I've felt inspired to start reversing the AdamNET protocol.  The 
only documents I have on the protocol are from the various versions of the Adam 
Technical Manual.  So I used that as a starting point.

The protocol is based on a 62.5k baud serial half duplex protocol.  So in the 6 
wire modular cable, there are 4 wires used:
1 (white). +5V power
2 (black). ground (logic)

3 (green). ground

4 (red). ground

5 (yellow). AdamNET reset (active low)

6 (blue). AdamNET bidirectional serial(inverted from TTL serial)

So when the AdamNET is reset, the pin 5 goes low briefly, then remains high the 
rest of the time.  

The strange thing about this is that although the ATM document mentions the 
signals several times, it never actually shows the pinout for the AdamNET 
connector.  I reverse engineered the pin out by taking apart one of my AdamNET 
keyboards to trace out what the keyboard logic board was up to.  And once I 
hooked it up to an oscilloscope I found what it was doing exactly.  It is 
actually pretty similar to i2c 4 wire protocol that I use at work, except that 
it runs at a fixed baud rate (and is inverted).

I've been working away on using an Arduino Uno to help be debug the parts of the 
protocol that are documented and are not documented.  Basically when the Adam 
boots up, it does a reset, then does a roll call on all of the 15 peripheral 
IDs, and the ones which respond are set up in EOS for use.

I'll post more details of the protocol in my next post.  But I have an Arduino 
Uno "sketch" (small program) that is build on the NewSoftSerial library for 
listening in on the AdamNET chatter.  It works fairly well, and all of the data 
shown corresponds perfectly to the spec from the Adam Technical Manual except 
for the checksum byte at the end of the extended packets.

I am currently working on a test of my understanding by creating a sketch that 
replaces the AdamNET keyboard, to see if I understand things correctly.  If I 
get that working, then I'll be one step closer to my goal of an AdamNET/USB 
gateway device.  It uses an enhanced version of NewSoftSerial that adds the 
ability to support half-duplex protocols.

Coladam mailing list
Coladam at adamcon.org

More information about the Coladam mailing list