KIM1Mod a portable KIM-1 made by Voyageur

KIM1Mod. A real KIM-1 in portable format!

Small enough to take with you traveling, battery powered and thanks to the FRAM the contents of RAM are kept when powered off.
The FM1808 used is a non-volatile RAM (32Kx8), used here for ROM and RAM. Datasheet here.

This design appeared in the Google group devoted to the PAL-1 and PAL-1 (and the KIM-1 of course).

And this is how Voyageur describes it:


A modified replica, created for travel and easy to use. The acrylic case is supposed to protect the plate…
Board format 10 x 15 cm, 32 KB of RAM and/or ROM, an expansion connector for daughter-boards, a speaker and a white LED for debugging purpose.

Some other explanations :
The original casing comes from a ‘Schumann wave generator’ sold on eBay as is.
I therefore decided to use this casing for my KIM1 travel project. It had to be cut down a bit to allow access to the keyboard.

. My version of Memory Map (see below) or here ‘MemoryMap.txt’
. the GAL manages all addresses between RAM, ROM and I/O (from $0000 to $FFFF).
See here the ‘KIM1mod.pld’
and it’s easy to change the addresses with WinCUPL and to adapt to any need…
. the FRAM RAMTRON FM1808 can keep out of power all the contents of the ROM and the RAM
(here is a 32 KB capacity).
. the speaker is linked to PB7 of the RIOT 6532 (not used for Tape).
. the white LED is linked to PB6 of the RIOT 6532.
. the Monitor location (ROM as specified in KIM1mod.pld) has the KIM1 6530-002 (I don’t plan to use the TAPE storage) and the WozMon.
. the small USB TTL is a CH340E module, non expensive and easy to find a place on a board. I use a USB C retractable cable.
. the portable power supply is fit with a 5V Step-Up/Step-Down small module from Pololu and can accept four rechargeable or Alkaline batteries.
. the KIM1mod’s current is less than 175 mA
. the NE555 has the same function as half the 556 in the KIM1 circuit diagram (about the \NMI STOP switch).
. the 20 pin expansion connector accepts any daughter-board equipped with 65(C)22, 6821, 82C55, 6850, or ….
. the RESET circuit is a DS1813-10.

Here the circuit diagram

Memory map

  ---------------------------------------------
  |                MEMORY MAP                 |
  |				                              |
  |  $E000...$FFFF       ROM User        8 K  |
  |                                           |
  |  $6000...$DFFF       not used       32 K  |  
  |                                           |
  |  $2000...$5FFF       RAM3           16 K  |
  |                                           |    
  |  $1800...$1FFF       ROM Monitor     1 K  |
  |                                           |  
  |  $1780...$17FF       RAM2          128 B  |
  |                                           |  
  |  $1740...$177F       \CS RIOT       64 B  |
  |  $1720...$173F       \CS EXT2       32 B  |
  |  $1700...$171F       \CS EXT1       32 B  |
  |                                           |  
  |  $0000...$16FF       RAM           < 6 K  |  
  |                                           |  
  ---------------------------------------------

PLD file
Dwonload here the ‘KIM1mod.pld’



Name     KIM1mod ;
PartNo   00 ;
Date     22/01/2026 ;
Revision 01 ;
Designer Engineer Voyageur;
Company  dC ;
Assembly None ;
Location Australia ;
Device   g22v10 ;


/*  for NEW SBC KIM_1_mod                 */ 
/*                                        */ 
/*                      compiles   OK     */
/*                      works      OK     */




/* *************** INPUT PINS *********************/
PIN 1   =  PHI2                   ; /*                                 */ 
PIN 2   =  ERW                    ; /*                                 */ 
PIN 3   =  A5                     ; /*                                 */ 
PIN 4   =  A6                     ; /*                                 */ 
PIN 5   =  A7                     ; /*                                 */ 
PIN 6   =  A8                     ; /*                                 */ 
PIN 7   =  A15                    ; /*                                 */ 
PIN 8   =  A14                    ; /*                                 */ 
PIN 9   =  A13                    ; /*                                 */ 
PIN 10  =  A12                    ; /*                                 */ 
PIN 11  =  A11                    ; /*                                 */ 
PIN 13  =  A10                    ; /*                                 */ 
PIN 14  =  A9                     ; /*                                 */ 
PIN 18  =  SYNC                   ; /*                                 */ 

/* *************** OUTPUT PINS *********************/
PIN 15  = !SBS                    ; /*                                 */ 
PIN 19  = !CSROAM                 ; /*                                 */
PIN 20  = !WERAM                  ; /*                                 */ 
PIN 21  = !CS6532                 ; /*    $1740 - $177F      64 B      */ 
PIN 22  = !CSEXT1                 ; /*    $1700 - $171F      32 B      */ 
PIN 23  = !CSEXT2                 ; /*    $1720 - $173F      32 B      */ 

/*  DECLARATIONS AND INTERMEDIATE VARIABLES DEFS  */

field ioaddr = [A15..5] ;
RAM_eqn = (ioaddr:[0000..16FF]) ;
EXT1_eqn = (ioaddr:[1700..171F]) ;
EXT2_eqn = (ioaddr:[1720..173F]) ;
RIOT_eqn = (ioaddr:[1740..177F]) ;
RAM2_eqn = (ioaddr:[1780..17FF]) ;
ROM_eqn = (ioaddr:[1800..1FFF]) ;
RAM3_eqn = (ioaddr:[2000..5FFF]) ;
ROM2_eqn = (ioaddr:[E000..FFFF]) ;

ROAM_eqn = RAM_eqn # RAM2_eqn # RAM3_eqn # ROM_eqn # ROM2_eqn ;
TOTRAM_eqn = RAM_eqn # RAM2_eqn # RAM3_eqn ;
SBS_eqn = TOTRAM_eqn & SYNC ;


/*   LOGIC EQUATIONS   */

CSROAM = ROAM_eqn & PHI2 ;
WERAM = TOTRAM_eqn & (!ERW & PHI2 ) ;
CS6532 = RIOT_eqn ;
CSEXT1 = EXT1_eqn ;
CSEXT2 = EXT2_eqn ;
SBS = SBS_eqn ;