Sunday, January 3, 2021

MIKUL 6218 Memory and VIA EXORbus board

I haven't spent much time working on my CMS 9639 SBC because, unlike the CMS 9619, it does not have any usable on-board RAM and does not include a monitor/debugger in ROM. Instead, it is designed to use an external memory board (which I don't have) on a back plane (which I now have) and boot OS-9 from a disk drive (which I don't have). What is nice about the device is the built-in memory manager which uses up to 1MiB of RAM. Unfortunately, EXORbus RAM cards are still prohibitively expensive on eBay and only have 16K to 64K of RAM capacity. Since the components would be far less than the price of those boards, I took a stab at designing a 1MiB SRAM board with a bonus additional I/O expansion.

I had just started to get components inserted into an EXORbus prototype board when I noticed the MIKUL 6218 Memory and VIA boards appearing on eBay at reasonable prices (<$45 shipped). Let's take a look at the board:

Click below for more details...

4 x 32 pin parallel memory sockets

The board has 4 x 32 pin parallel memory sockets connected to address lines up to A17, giving a total apparent maximum of (2^18)*4 or 1MiB RAM. So how does the board address all this RAM with only 16 address lines on the CPU and the bus (max 2^16 or 64K)? The board contains a 74ls273 octal (8-bit) register ("bank register") which acts as storage for the necessary high address bits. Just write a data byte representing the high address lines to a specific memory location, it is stored by the bank register, and the glue logic in the GALs selects the appropriate memory chip and bank. Super simple, but not compatible with the CMS 9639's scheme of memory manager with mapping RAM, task register, and extra address lines to address 4K of RAM for each running task.

3 x 6522 Versatile Interface Adapters (VIAs)

The 6522 VIA is basically an MC6840 PTM combined with a MC6821 PIA and a shift register. It is super 'versatile' and allows connection to many external devices, or prototyping projects that need digital I/O.

MIKUL 6218 Standard Implementation Details

The MIKUL board that I received contained an 8K SRAM ic, an 8K EEPROM, and a 64K(?) EPROM labeled TEMPMATE V3.013. Presumably, in an installed system, the VIAs are connected to temperature probes and heating controls and TEMPMATE monitors the temperatures and saves settings to RAM and backs them up to EEPROM. I scanned the addresses on the board and came up with this basic memory map:

U6 EPROM FFC0-FFFF
FFC0
ECA0
U14 BANK REGISTER EC90-EC9F
U7 6522 VIA EC80-EC8F
U1 6522 VIA EC70-EC7F
U2 6522 VIA EC60-EC6F
EC5F
D800
U4 8K EEPROM
 
MEMORY
D7FF

C000

U6 64K EPROM
 
BFFF
MEMORY
2000
U5 8K SRAM
 
MEMORY
1FFF


0000
Note that the map does not include the bank switched addresses or memory addresses greater than $D7FF because I cannot currently access external addresses higher than that on any of the processor boards I have. The 64K EEPROM in U6 is twice as large as the 32K assigned to it, so it could be bank switched. It doesn't look like U3 is ever addressed. Also, it is likely that this map is specific to the "TEMPMATE" implementation (see GAL markings below). This may be why I can't actually get the U14 BANK REGISTER to be enabled.

These are the programable ICs (GAL):

  • U16 (Marked "30002-R1")- Does the large block address decoding and controls the chip selects for the memory and U10.
  • U13 (Marked "30001-R0")- Interacts with the U11 bank register to generate the high addresses for the memory.
  • U10 (Marked "30003-R0")- Does the address decoding for the VIAs and bank register, and generates some control signals for the memory.

Basic W1, W2, W3, W4 Jumper Settings:

  TEMPMATE 64K EEPROM
   . . . . .
       |
 . . . . . ._.
   |     |
   . . . . .
  
  
  32K RAM
   . . . . .
       |
 ._. . . . . .
         | |
   . . . . . 
  
  
   8K RAM
  
   . . . . .
       | |
 . . . . . . .
           |
   . . . . . 


   8K ROM (OR RO EEPROM)
  
   . . . . .
       | |
 . . . . . ._.
           
   . . . . . 
  

Anticipated Modifications

While the MIKUL 6218 would be a nice memory board on its own, I have slighly different needs than it was designed for. I have to adjust the logic on the board to get it to address the 2x 512K SRAM modules (that I already bought for this project) using the CMS 9639's A16-A19 address lines. For the CMS 9619, I think I could use the PIA to do the same sort of RAM bank selection on the finished card.

Overriding the U13 high address generation should be simple. I just have to remove the IC and strap the actual CPU address to the virtual address, leave the data from the bank latch open, and the high virtual addresses (A16 and A17) pulled high.

Overriding the U16 address decoder is going to be trickier. As you can see from the memory map, the system provides different sized address ranges for the memory chips, expecting an 8K SRAM in U5 starting at $0000 and a large EEPROM in U6 mapped from $2000 up to $BFFF. I think I will need to disable this IC and provide my own address decoding circuit.

Finally, I think I will inject the additional high addresses through a connector on a small daughterboard mounted to the U3 Memory socket.

More to come!

No comments:

Post a Comment