GithubHelp home page GithubHelp logo

pr77 / 68000_relocator_flash_kickstart Goto Github PK

View Code? Open in Web Editor NEW
30.0 6.0 7.0 5.75 MB

68000 Relocator with FLASH Kickstart

License: GNU General Public License v3.0

Verilog 11.26% C 88.36% Makefile 0.38%
amiga kickstart accelerator cpld mc68000

68000_relocator_flash_kickstart's Introduction

68000 Relocator with FLASH based Kickstart

Forked from https://github.com/AwesomeInferno/68000Relocator and modified to support FLASH Kickstart allowing programming in system.

Warning

This design has not been compliance tested and will not be. It may cause damage to your A500. I take no responsibility for this. I accept no responsibility for any damage to any equipment that results from the use of this design and its components. IT IS ENTIRELY AT YOUR OWN RISK!

Overview

To allow for Flash Kickstart images to be mapped in the same address space as existing ROM Kickstart without the need to remove the existing ROM. This design is targeting an accelerated A500(+) system which also require a CPU relocation.

Appearance

Nice 3D model: 3D Model

... this is the final design.

Prototype

Drawing in from the experience and usefulness of my prototyping jig created for my Rev-1 Accelerator (https://github.com/PR77/A500_ACCEL_RAM_IDE-Rev-1), I decided to do the same for this hardware expansion.

So the prototype looks like this:

Jumpered PCB

To keep the prototype simple, instead of using Flash devices (AMD AM29F040B are my target has I have these and experience with the devices) I used simple SRAMs (also from my Accelerator). There was also the learning curve with using VBCC (http://eab.abime.net/showthread.php?t=83113) to develop the software to control the hardware, but with that sorted out I managed to finally get the prototype to work.

Final Hardware

Here is the final hardware loaded and installed with my Rev-2 Accelerator (https://github.com/PR77/A500_ACCEL_RAM_IDE-Rev-2). I was not able to easily source new AMD AM29F040B Flash devices so I changed over to SST39SF0x0A devices. They are JEDEC compliant so no issue with the pinout. Just watch out for the device identification in the SW.

Final PCB

BOM

For those wanting to build their own hardware, here is the BOM;

Reference(s) Value Footprint
C1 10uF Capacitors_Tantalum_SMD:CP_Tantalum_Case-B_EIA-3528-21_Hand
C2 10uF Capacitors_Tantalum_SMD:CP_Tantalum_Case-B_EIA-3528-21_Hand
C3 100nF Capacitors_SMD:C_0805_HandSoldering
C4 100nF Capacitors_SMD:C_0805_HandSoldering
C5 100nF Capacitors_SMD:C_0805_HandSoldering
C6 100nF Capacitors_SMD:C_0805_HandSoldering
J3 BLOCK Pin_Headers:Pin_Header_Straight_1x02_Pitch2.54mm
J4 JTAG Pin_Headers:Pin_Header_Straight_1x06_Pitch2.54mm
R1 10K Resistors_SMD:R_0805_HandSoldering
R2 10K Resistors_SMD:R_0805_HandSoldering
R3 10K Resistors_SMD:R_0805_HandSoldering
U1 68000D Pin_Headers:Pin_Header_Straight_2x32_Pitch2.54mm
U2 68000D Housings_DIP:DIP-64_W22.86mm_Socket_LongPads
U3 SST39SF040 Housings_DIP:DIP-32_W15.24mm_Socket
U4 SST39SF040 Housings_DIP:DIP-32_W15.24mm_Socket
U5 XC9572VQ44 Housings_QFP:TQFP-44_10x10mm_Pitch0.8mm
U6 LM1117-3.3 TO_SOT_Packages_SMD:SOT-223-3_TabPin2

In Operation

My test Amiga 500 has a ROM Kickstart version 1.2, so the boot screen looks like this:

ROM Kickstart 1.2

Then when loading into RAM Kickstart version 3.1 the software will make a simple dump of the RAM to the console to ensure it has been written correctly (data blurred to avoid any potential (C) issues). Essentially some basic debugging which looks like this:

Application Output

... so now, using the magic sequence, I have Kickstart version 3.1 as shown here:

ROM Kickstart 3.1

How It Works

In principle the operation is fairly simple. A CPLD is used to switch between the ROM Kickstart on the Motherboard or the Flash Kickstart on the CPU Relocator. Switching is performed by an active /RESET (CTRL-A-A) without interruption for longer than 1 second. Shorter /RESET durations will simply just reset the Amiga. After a POR (Power On Reset) by default the Flash Kickstart on the CPU Relocator will be used.

ROM based Kickstart

When ROM Kickstart is being used, the hardware simply passed /AS to the Amiga Motherboard to allow GARY perform the address decode and chip select of the internal ROM. During this process, the Flash Kickstart is simply not used - except when programming. A Zorro II space of 512K is requested and allocated by the Amiga which maps to the Flash devices.

When programming the Flash devices, access is via this Zorro II space. Programming of the Flash devices can only be performed when ROM Kickstart is being used.

FLASH based Kickstart

When Flash Kickstart is being used, the hardware simply blocks /AS to the Amiga Motherboard and the CPLD will perform the operation of Flash device control. As /AS is not asserted on the Amiga Motherboard, and therefore no GARY decode, the Relocator CPLD will then also assert the /DTACK after placing data on the bus - this is needed to complete the CPU cycle.

Flash Kickstarts will always be visible from base address 0xF80000. This means, if 256K images would be used, then it will need to be duplicated to populate the entire 512K region size. This is to ensure the correct SP and IP initisation (see Overlay Interception). 256K images generally start from address 0xFC0000 (as opposed to 0xF80000).

Overlay Interception

When Flash Kickstart mode is being used, the CPLD will also intercept the overlay of the Kickstart in the 0x000000 memory space until the first access to the custom chip register is performed. This ensures the correct SP and IP initialisation is performed directly after POR (Power On Reset) as the Flash Kickstart is used by default.

Known Issues And Pending Items

The following items are pending:

  1. Will update the software to not load the entire Kickstart content into RAM before programming; rather will load 64K chunks at a time.
  2. Support for ROMs based at address 0xF00000.

External Contributions

Thanks to the Open Source efforts, here is a list of improvements people have made:

  1. Side Slot expander version and GUI - https://github.com/KaiEmilW/A500-Side-Expansion-Slot-CPU-Relocator

68000_relocator_flash_kickstart's People

Contributors

niklasekstrom avatar pr77 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

68000_relocator_flash_kickstart's Issues

Compatibility with A590?

I'm trying to get a A590 SCSI controller to work on my A500 (with the flash relocator and a TF536 installed).
I can get the system to boot, but it easily runs into a "SCSI bus lockup" with the drive light on and no further activity.
Removing the relocator gets rid of the lockups.

Could this be an autoconfig issue? The A500 doesn't have true autoconfig on the 68k bus, so how does the relocator make its 1mb ram slot visible to the system?

Can't get it to work.

I built the board, programmed the CPLD successfully, but I get no response from the system when turning on the machine.
Probing the address lines and data lines it looks like there's no activity at all. The HALT line is low. I can see that the clock signal reaches the CPLD.
Do you have any tips on how to debug this?
I am using a Rev8a board with a Kickstart 3.1.4 ROM

Gerbers update?

Seems the gerbers here don't work with the current PCB sites - jlc and osh get the network and holes but fail to find the actual PCB or screenprint details. KiCAD6 gets the same. Would it be possible to update/refresh the gerbers zip?

Tantalum vs normal caps

Hi , is it possible to use normal caps 10uF in place of the Tantalum listed on the BOM?
Thanks

Picoelements

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.