Sunday, March 27, 2022

MIKUL 6809-5 Keypad

I received some membrane keypads in the mail today. Unfortunately, I neglected to order the 4x5 Keypads I hoped to use and only ordered 4x4 and (accidentally) 3x4 keypads. No problem. The 4x4 keypad will work fine to navigate the menus, with: * as clear; # as enter; D as Main Menu. You can't quite set the clock though because it is missing the keys to select year/month/day as they are on the missing row.

Here is the pinout, which requires a small jumper board to connect to either a 4x4 or 5x4 keypad, as the P3 header is not arranged in a very logical way:

  MIKUL 6809-5        eBay    |   Alltronics
   P3 HEADER       4x4 Keypad |   5x4 Keypad
        ___ 
COL1   |1     ->   3 - ROW3   |   6 - ROW3
ROW1  ||2     ->   5 - COL1   |   5 - COL3
COL2  ||3     ->   2 - ROW2   |   2 - ROW2				
ROW2  ||4     ->   6 - COL2   |   7 - COL4
ROW3  ||5     ->   7 - COL3   |   9 - COL5
ROW4  ||6     ->   x - N/C    |   3 - COL2
COL3  ||7     ->   1 - ROW1   |   8 - ROW1
ROW5  ||8     ->   8 - COL4   |   1 - COL1
COL4   |9     ->   4 - ROW4   |   4 - ROW4
       |___      

I think these are the orignial keypads that came with the TEMPMATE and CASEMATE firmware (pics from various auction sites):

Unfortunately, I think the cheap ebay 4x5 keypads I hoped to use will not work because they have 5 rows when the MIKUL's TEMPMATE software is written to use a keypad with 5 columns.

I found a keypad at Alltronics that has the right layout for only a few dollars. That keypad only has the flat flexible cable without a PCB connector, so I had to source that too. Also, it does not have the nice clicky metal domes in it so it feels mushy, but it works, and I can finally set the clock!:

Saturday, March 19, 2022

MIKUL 6809-5 Memory Map

By using the HCF instruction and a cheap logic analyzer, I was able to make a memory map of the MIKUL 6809-5:


External
 
FFFF


MEMORY OR I/O

EC00
EXTERNAL I/0 EBFF
EB10
U21 6821 PIA EB00-EB0F
EXTERNAL I/0 EAFF
EA10
U20 SIO/2 EA00-EA0F
U25 VRAM

MEMORY?
E9FF




E800

External
E7FF




MEMORY



0000

Of course, this lines up well with the MIKUL 6218 memory and VIA board. I need to update that memory map using the HCF technique.

Reverse Engineering MC6809 SBC... The Easy Way!

I previously documented my ultimately successful attempt to reverse engineer the CMS 9619 Advanced Single Board Computer. The main goal was to get a memory map of the system, including I/O addresses. Having this memory map makes disassembling the firmware on these boards much easier. The process I used prevously was labor intensive, and required me to:

  1. figure out what each of the pins on the PAL IC (that decodes the addresses) connects to;
  2. lookup datasheets to see if it is an input or output pin;
  3. build a small circuit to increment through all of the possible inputs;
  4. write a program to display all of the actual outputs for those inputs.
This took a lot of work and most of it is will only apply to the particular address decoder I was working on.

Ideally, I would want to just keep everything connected in circuit and just have the processor increment through all of the address lines for me, like a 16 bit binary counter. Hmm... Fortunately, the MC6809 has just such a feature built in! The "HCF" (Halt and Catch Fire!) instruction will halt the processor and increment the MC6809 address lines while holding R/W' high, causing it to output every possible address, and select every I/O chip on the board. This is perfect to build a memory map. Even better, since just one instruction does all of this, all I need to do is wire up that one instruction on the data bus and let the processor do the rest. I don't even need to program an EEPROM! Then, I can just observe the addresses and I/O enable lines using a cheap (under $10) logic analyzer. I could even use an Apple II (or another 6809 SBC) with a MC6821 PIA (or MC6522 VIA) to track the signal changes.

In the end, I decided to just program an EEPROM with a lot of HCF instructions: % touch HCF.bin % os9 padrom -c=205 8192 ./HCF.bin % minipro -p AT28C64 -w ./HCF.bin % xxd -s $((16#1FF0)) ./HCF.bin

00001ff0: cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd
and I used my cheap logic analyzer to check the addresses and the chip select pins on the various I/O ICs on the board. Although this took a couple of steps (A15-A9 addresses, then A8-A2 addresses, before settling on A11-A8 with 4 chip select lines), I think it was probably faster than building a cable to connect to the Apple II APIO (MC6821) card, and I am pretty sure the Apple II could not have polled the lines fast enough.
Note channels 3-7 (A11-A7)incrementing nicely with HCF instruction

Wednesday, March 16, 2022

MIKUL 6809-5 Processor and Video Board

I recently procured another EXORbus processor board, the MIKUL 6809-5, for a reasonable price. Let's take a look...

Notable ICs:

  • Motorola MC6809 processor
  • MC6821 Peripheral Interface Adapter (PIA)
  • MC6847 Video Display Generator (VDG)
  • Z0844206 SERIAL INPUT/OUTPUT CONTROLLER (SIO/2)
  • MM74C923 20 Key Keyboard Encoder

Ports:

  1. EXORbus card edge
  2. RS232 and RS485 / multidrop LAN port?
  3. 20 key matrix keypad
  4. LED indicator ?
  5. video output
  6. composite video

It is interesting that the board uses the MC6809 CPU with a MC6847 VDG like the Radio Shack Color Computer (CoCo). Unike the CoCo, it does not have an MC6883 SAM, making it similar to the Radio Shack TRS-80 MC-10 (which uses an MC6803, rather than the MC6809). So the basic CPU and video chipset places it somewhere between those two computers.

Notably, the board does not have any provision for ROM or application RAM on it. As a result, it needs another memory board on the bus to function properly. The MIKUL 6218 would make a perfect companion for it, but I already modified my 6218 board to work with the my CMS processor boards...whoops. So, with the price of these MIKUL boards dropping due to an apparent glut of them, I picked up a fresh MIKUL 6218 for ~$35 and installed them both in my EXORbus MULTI-PLANE backplane.

Despite the interesting video output, I am not in love with the features. The MC6821 PIA is dedicated to running the keypad encoder and baud rate dip switches, so it can't be used for much. Really the MIKUL 6809-4 or 6809-6 (Motorola MicroModule clone?) would be a better choice as a all-in-one SBC. However, the 6809-5s are definitely more pentiful and far cheaper right now, so maybe somebody else can make use of any info I publish about it.

More details below...