KIM-1 Mod a portable KIM-1 made by Voyageur

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 the 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 (which is 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 KIM-1 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 KIM-1 MOD current used is less than 175 mA
  • the NE555 has the same function as half the 556 in the KIM-1 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  |
  |                      and 6502 vectors     |
  |                                           |
  |  $6000...$DFFF       not used       32 K  |  
  |                                           |
  |  $2000...$5FFF       RAM3           16 K  |
  |                                           |    
  |  $1800...$1FFF       ROM Monitor     2 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  |  
  |                                           |  
  ---------------------------------------------

Software

The ROM part of the KIM-1 MOD in the FM1808 consist of the KIM ROM (in the 6530-002), and wozmon adapted for the KIM-1, placed at the empty space of the 6530-003 audio tape routines.

You find wozmon at $1AA0 and the KIM monitor at $1C00.
Also the 6502 vectors at $FFFC-$FFFF are set to the KIM-1 -002 ROM.
There is enough space in $E000-$FFFB for other software.

To write to the FM1808, use the TL 866-II Plus or the XGecu T48.
Attached the complete dumb of the FM1808 in binary.

The KIM ROM has a small modification

 747                  ;       ** INITIALIZATION FOR SIGMA **
 748  1E88  A2 01     INITS   LDX   #$01      SET KB MODE TO ADDR           1E88
 749  1E8A  86 FF             STX   MODE
 750  1E8C  A2 00     INIT1   LDX   #$00      
 751  1E8E  8E 41 17          STX   PADD      FOR SIGMA USE SADD
 752  1E91  A2 FF             LDX   #$FF      was #$3F PB0..PB5 output, PB6 & PB7 input
 753  1E93  8E 43 17          STX   PBDD      FOR SIGMA USE SBDD now PB0..PB7 output
 754  1E96  A2 07             LDX   #$07      ENABLE DATA IN
 755  1E98  8E 42 17          STX   SBD       OUTPUT
 756  1E9B  D8                CLD    
 757  1E9C  78                SEI    
 758  1E9D  60                RTS

to manage the outputs to speaker (PB7) and the white Led (PB6).
The white Led is off during normal use of the board, except for RESET or High level to PB6

The Woz Monitor starts at $1AA0. (2400 or 4800 Bauds are OK for me).

Download here the 32K contents of the FM1008

PLD file
Download 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 ;