Skip to content

Repository files navigation

The RAMpager: a 1MB banked RAM expansion for the KIM-1

DISCLAIMER

Any use of this project is under your own responsibility. You will be responsible of checking the correct construction and functionality of your board. By using this project You will agree that I cannot be held responsible if it will destroy any of your devices, damage your computer, burn down your house or whatever.

This board was tested with a KIM-1 clone designed by Eduardo Casino, plus the MTU motherboard by the same author.

Sponsorship

PCBWay_logo

This project is sponsored by PCBWay!

PCBWay specializes in manufacturing high-quality PCBs and makes them affordable to hobbyist and professionals alike.

The range of services they offer include PCB prototyping, assembly, instant quotes for your order, a verification process by a team of experts and an easy to use, hassle-free order process.

I am extremely grateful to them, as they sponsor most of my projects, and allow me to move them forward at a pace I wouldn't be able to sustain otherwise!

Introduction

Rev. 1 board assembled

The RAMpager is a MTU banked RAM expansion for the KIM-1: the board supports up to 1MB (that's three orders of magnitude above more than the original 1152 bytes!) of memory and maps it to a 4KB window placed between 2000h and FFFFh. The window can be mapped to different banks for read and write operations via two control ports.

It supports an optional internal/external backup battery to keep the data in the SRAMs valid across power cycles.

Configuration

Memory and control port address

Placement of the memory window is selected via the J2 header. A jumper placed on that header chooses the address range (in 4KB jumps) of the banked memory. Make sure it does not conflict with other expansions.

The control ports placement in the address space is done via the J1 header and the SW1 switch bank. J1 selects the 4KB space where the control ports will reside (again, between 2000h and FFFFh) and SW1 will provide a fine grained control of 16 addresses blocks within that bank.

Please note that you can overlap the control port address and memory bank address: the control port access will take precedence.

Control ports can be both read and written.

Port Effect
Base+0 Read bank: read access to the memory range will go into the bank selected by this port
Base+1 Write bank: write access to the memory range will go into the bank selected by this port

Both control ports will be set to 00h upon reset. Also note that the two ports will be mirrored 8 times across the 16 addresses space.

The board pictured in the introduction is jumpered to present the memory window in the B000h-BFFFh range, and the control ports in the C000h-C00Fh range.

Single expansion mode

This board can be used as a solitary expansion on the MTU bus. To work in this configuration, the K7 and /DECEN signals must be correctly triggered when the internal KIM-1 memory decoding needs to be enabled.

Close the JP1 and JP2 jumpers and populate U15.

RAMpager installed on MTU motherboard

☕ Support ☕

If you wish to support me in building new hardware and software for old machines, throw a few euros in my direction via Ko-Fi !

Ordering the boards

You can order the board for this project at PCBWay and support me or download the gerbers and have them printed wherever you like!!!

💰 Selling these boards 💰

I you want to contact me about selling this project, you can reach me via email at 0hkzUNDERSCOREprojects6ATposteoDOTnet after properly fixing the email address by removing the digits and replacing the uppercase words with the proper characters.

Contacts via other channels will be ignored, as it means you did not read this document thoroughly.

"Collaborations" will boil down to the following:

  • If you wish to produce and share this project at a loss or at cost, go for it. I am only asking for attribution and to let me know via email.
  • If you want to do it for profit, let's discuss it. I'll probably settle for a rough 5% of the profit. Importing components is getting more expensive by the day, so this will contribute to me making future projects available for free.
  • I will NOT do customer assistance for you or your customers. This is a hobby, not my job.

If this is not OK for you, you're cordially invited to go bother someone else :)

Authorized sellers will be listed in this README. If you find someone selling my boards without being listed here, it means they're stealing other people's work.

Hardware

The board was designed with KiCad EDA.

Bill of Materials

Component Qty Type / Value Notes
BT1 1 MYOUNG BS-07-A1BJ001 or compatible CR2032 battery holder OPTIONAL: No need to install if you're not planning to use an onboard battery
C1-14, C17 15 100nF/16+V MLCC THT capacitor, 5.0mm spacing
C15 1 47uF/25+V electrolytic capacitor, 2.50mm spacing
C16 1 22uF/25+V electrolytic capacitor, 2.50mm spacing
D1-5 5 THT LED, 5.0mm pitch Suit yourself, but I usually choose a different color for each one.
D6, D9 2 BAT86 diode D9 can be omitted if this board does not need to work standalone on the bus.
D7 1 Either a PMEG2010ER (SMD) or 1N5817 THT diode OPTIONAL: Required only if battery functionality is desired. Use the PMEG diode for a lower leakage current
J1, J2 2 2x14 2.54mm vertical pin header
J3 1 1x03 2.54m vertical pin header OPTIONAL: If you don't wish to switch between internal and external battery, you can close the jumper permanently with wire and solder.
J4 1 1x02 2.54mm horizontal pin header OPTIONAL: If you don't want the option of an external battery, no need to solder this.
JP1, JP2 2 1x02 2.54mm vertical pin header OPTIONAL: Required only if this board needs to work standalone on the bus.
Q1, Q2 2 2N7000 TO-92 FET
R1, R2 2 10K 1/4W resistor, 10.16mm pitch
R3-7, R10 6 1K 1/4W resistor, 10.16mm pitch
R8, R9 2 100K 1/4W resistor, 10.16mm pitch
RN1-4 4 3.3K bussed resistor, 9 pin
SW1 1 16pin (8 switches) DIP switch
U1 1 74HCT245, DIP20
U2, U3, U4, U10 4 74HCT541, DIP20
U5, U6 2 74LS145, DIP16
U7 1 74HCT688, DIP20
U8, U9 2 74HCT573, DIP20
U11, U12 2 AS6C4008-55, DIP32 You can omit U11 if you're fine with 512KB only.
U13 1 GAL22V10, DIP24 Tested with an ATF22V10C-10PU. This needs to be programmed with this file
U14 1 74HCT240, DIP20
U15 1 74LS133, DIP16 OPTIONAL: Required only if this board needs to work standalone on the bus.

Remember to program U15 with the provided JED!

TODO

  • Evaluate the discharge rate of the CR2032 cell and see if there is something that can be done to reduce it

CREDITS

About

This repository is a mirror of https://codeberg.org/hkzlab/KIM-1_RAMpager , go there for the latest updates.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Contributors