cknave / c64-pico-ram-interface Goto Github PK
View Code? Open in Web Editor NEWLet your Raspberry Pi Pico pretend to be a Commodore 64 ROM cartridge
License: BSD 3-Clause "New" or "Revised" License
Let your Raspberry Pi Pico pretend to be a Commodore 64 ROM cartridge
License: BSD 3-Clause "New" or "Revised" License
https://www.c64-wiki.com/wiki/Expansion_Port
https://rr.pokefinder.org/rrwiki/images/9/90/1750_1764_Service_Schematics.pdf
Afaik _ROML/_ROMH are just address decode helpers to ease cartridge development, and can be swapped for A14/A15.
For complete emulation we will need D0-7, A0-15, R/_W, PHI2, BA, _DMA. 28 IOs. Then we need two more for Data and Address bus level translator (SN74LVC8T245/SN74LVC16T245) direction control.
PICO has 26 IO on edge connector, but you could potentially steal GPIO29/GPIO25 https://peppe8o.com/raspberry-pi-pico-pinout/, still two short :( Chip itself https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf has 30. https://proto-pic.co.uk/wp-content/uploads/2021/03/RPI-PICO-R3-PUBLIC-SCHEMATIC.pdf
I dont know how viable is stealing GPIO24/GPIO23, but if its possible then we would have all the IO needed for full REU emulation.
I was thinking roml,romh are some simple logic helpers to tell that address ranges are 8000-9f, a000-bf and e000-ff in single bits, if pico could match all address lines to determine those adress ranges it may not need those romh/roml signal inputs and match 8,9,a,b,e,f directly? then by having all 16 address bits it could also match other address ranges to emulate other features like ram expansion? or even emulate vic/sid to provide better audio/video?
EDIT:
the assumption here is that you are limited on number of total GPIOs so you can't have both.
And BTW there is another generic RP2040 board available on aliexpress - the WeAct RP204 board https://www.aliexpress.com/item/1005003708090298.html which also has GPIOs 24 and 29 available (and extra button on 23) https://forums.raspberrypi.com/viewtopic.php?p=1955110#p1955110
Would it be possible for alternate usage of this hardware?
For example:
I guess it is a question of: Free I/O's, Free Pico memory and performance..
Your idea of use the pico as a Commodore ROM and in some way as a co-processor is exacly I was looking for a long time.
Mi idea is to bring new software for the c128 as cheap, and painless possible, and Your project have so much potencial por this.
There is a way to make it work on a c128 (on c128 mode)?
I am really interested in this project and have just ordered a set of boards so that I can build 1 for myself. I would have preferred to order the boards populated but I can order the parts separately and solder the surface mount components. A BOM would help with ordering the boards. Also I was having a hard time finding the actual components on the JLCPCB site so I decided to just get the boards and then order the parts later if I didn't have the resistors and capacitors already.
I was also wanting to reach out and see what I can do to contribute to this project. I have recently gotten back into retro computing and have obtained both an actual C64 and C128 that I have been doing some assembly development on. I had the idea earlier to see about using a Raspberry Pi to interface to a C64 and started to do some research into what existing projects there were and ran across your use of the Pico. I have done some development with the Pico and it is a brilliant solution to the interface that I am thinking about.
Also, I saw the 2 Pico solution that would allow for more capabilities, and I am interested in that also. I also saw another project where a Raspberry Pi was used to generate HDMI directly from a cartridge port.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.