• Please review our updated Terms and Rules here

PicoMEM Project : Pi Pico on an ISA Board.

FreddyV

Experienced Member
Joined
Sep 23, 2020
Messages
235
Hi there !

I am known (Or not) so far for my Mod Master XT MOD Player and the CH375 ISA to USB Board driver optimization.

Months ago (Almost one year), had the idea to do a board like the PiStorm, but instead of emulation the CPU, pit a Pi on the ISA BUS.
I did not know where to start for it, but after seeing the PiGUS and after, the PicoGUS project from polpo, I finally decided to start my project.

The Idea was to put a Raspberry pi on ISA to be able to emulate anything.
Unfortunately, as the Pi are difficult to find and expensive, I started first with the Pi Pico.

And Here it is :

316114594_3336806029979847_8986930138617514485_n.jpg

On this board, I did put:
- Connection to the full Memory and I/O BUS
- One IRQ
- No DMA
- MicroSD Connector
- 8Mb of PSRAM

After some weeks (representing like 4 days full time), The board is able to do this:
- Emulate 128Kb of RAM from the Pico internal RAM (Full speed, no wait states)
- Emulate memory (Blocks of 64k anywhere) and EMS (Up to 4Mb) with 6/8 wait states.
- Emulated ROM (I did run the CH37x BIOS on it)
- Execute commands from the 2nd core.
- Memory and IO Address decoding to redirect the access to different types of Memory/Emulated device

I just start to work on the Compact flash part (2 Pins are reversed so I have to rewrite the SPI in PIO) and the Board BIOS.

The Idea (If and When the SDCard will work will be to:
- Have an auto configuration BIOS able to detect the machine memory and expand it automatically.
- Simulate multiple HDD using DOSBOX Int13h code (The PC CPU will not do anything)
- MAP Disk images (.IMG) and why not all the DOSBOX supported floppy images from the SDCard
- Have 4Kb of RAM in the ROM @ space, so that the BIOS can use RAM for its internal config, plus for fast "Disk" access.
- I already think about lot of speed optimisation/Tricks to have the disk access close to the memory access speed.
- With the Pico W : Network card emulation and so on...

After this prototype, multiple boards versions are possible, even to add sound (Soundcards) support.
Video will not be possible.... but why not doing a PicoVGA or something else based on the Pine64 Ox64 board (Pin compatible with the Pi Pico)

This board can also be used as a base for Diagnostic, code/BIOS debug, real time ISA communication capture (music in .VGM, ...), Co processor....

If you want to follow the project and help me, I did something like minute by minute diary of what I did so far in a Discord server.
This Discord is about the PicoMEM, PicoGUS and PicoPCMCIA projects.

I may not comment/give lot of news here, it is better to follow me in Twitter, or come to the discord. (Full english if you are afraid by french)

Regards,
FreddyV :)
316093638_3336805986646518_3702225553978515029_n.jpg
 
I love the idea of auto-filling memory so that no user configuration is necessary! Could also detect if there is MDA/CGA, and continue filling up to B000/B800.

If it can truly bank memory, then true EMS is possible, no copying. Nice.

You may want to post a link/invite to your discord server?
 
I love the idea of auto-filling memory so that no user configuration is necessary! Could also detect if there is MDA/CGA, and continue filling up to B000/B800.

If it can truly bank memory, then true EMS is possible, no copying. Nice.

You may want to post a link/invite to your discord server?
Yes, it is of course based on bank. And it is like 20 lines of code. This is sooo fun to code.

Yes, fill 32kb is simple, I will go down to 16k memory Block.
The potential for development and to study the machines will be huge.
 
I also saw the picogus and wanted a complete pi to isa interface. I'm glad to see one coming now.
 
Yes !!!

The PicoMEM is now able to read the MicroSD Catalog using FatFS_SPI modified to use the PIO.
It can also Read /modify/Write data in a file.

The goal is of course to add support of multiple disk images (HDD and Floppy) through the DOSBOX BIOS implementation.
Also, to read configuration files and save the settings.

I also started to work on the board BIOS
 

Attachments

  • SDFS.png
    SDFS.png
    16.5 KB · Views: 53
Hi,

Small update.

As the SD and PSRAM share the same bus, I had a little challenge to have both working (Alternatively)
It is all Ok now, so the real huge job can begin.
For who know me ;) when I say huge, it will be.

The board is not only to extend machine, but have functionality really usefull to preserve the machines, and learn more about them.

Now working on its BIOS:
 

Attachments

  • PicoMEMBUIS.jpg
    PicoMEMBUIS.jpg
    308.7 KB · Views: 46
On an Amstrad PC200:

PicoMEM BIOS Start on its BIOS, use its own RAM (8Kb mapped just after the BIOS, shared with the Pi PICO with 0 Wait States) to increment a Boot counter.
The PC200 BIOS See 128Kb extension RAM (0 Wait state as well) so 640Kb in total
XTIDE Start
LTEMM Test the Emulated EMS (2MB, LTEMM Compatible) It does emulate 4Mb of EMS but I need to patch the LTEMM Driver to detect 4Mb

So, the Pi Pico BIOS Share 8Kb of RAM with the Pi Pico, at Full ISA BUS Speed (At least on this machine, with a 4MHz ISA Clock)
The Pi Pico can access a MicroSD, in FAT32.
 

Attachments

  • 20221226_185812.jpg
    20221226_185812.jpg
    563.2 KB · Views: 60
Last edited:
Hi,

Happy new year to all :)

The PC is now able to read a "Virtual disk" sectors that is a .IMG disk image file, through the DOSBOX Int13h emulation code.
The PC Save its registers to the shared memory, and the Pi Pico can see the registers as simple variables.
The complete Int13h is not re written at the PC side, I am working on it.

I hope to have functional/Bootable Disk on MicroSD working by the end of the week.
 
Hi,

Happy new year to all :)

The PC is now able to read a "Virtual disk" sectors that is a .IMG disk image file, through the DOSBOX Int13h emulation code.
The PC Save its registers to the shared memory, and the Pi Pico can see the registers as simple variables.
The complete Int13h is not re written at the PC side, I am working on it.

I hope to have functional/Bootable Disk on MicroSD working by the end of the week.
Freddy,

What are your total build plans here? Like you could go in hundreds of directions having a general use PI Pico on an ISA card. If you were to list out your current v 1.0 desired feature set what would it be? Certainly getting a hard drive/floppy emulator seems to be in the cards - I think you said memory expansion. Is that the list?

Chris
 
@chjmartin2
There are 3 component, the hardware, the firmware and the BIOS each of them will have their revision number.... :)

Software:
----------

What is already working:
- Memory and EMS Function already working.
- MicroSD is now accessible from the Pi Pico (in FAT32)
- BIOS with BIOS RAM and Disk buffer (Shared memory with the Pico)
- The PicoMEM Can execute command asked by the PC. (Read a disk sector working)

What I want working before showing it in a Video:
- RAM/EMS automatically detected and configured
- Multiple virtual HDD Loading, with a first disk cache support and multiple sector read/Write
- BIOS With some parameters configurable in the menu
- The Pico can "Take the control" of the PC and send various commands to it (Started to code it already)

What is best to have:
- The board respond to multiple port, the BIOS select and configure the first one detected (Auto Port config)
- Configuration file allowing the definition of default disk image
- BIOS/ROM Loading from the SD, and configuration in the config file
- Main/Critical error log to the SDCard.
- USB Keyboard ans Mouse support.
- Floppy disk image/Creation from the BIOS
- HDD Clone from the BIOS
- "Terminal mode" from the PC, to run interactive commands to the Pico, like Copy a file from the MicroSD (FAT32) to a disk
- The BIOS enter in a diagnostic mode if it does not detect the start of its BIOS (Check the PC, reconfigure the internal timings....) and write a log.

Hardware:
-----------
I want to go much further in the software part to be able to demonstrate something with a "wow" effect.
Then, I will work on a new PCB, without the test pins, corrected errors and smaller board (To fit in a PC200 if I can)
Build at least 10 of them to sent some of them to peoples around that can help to develop it.

It can't really be released to the public as it is quite complexe for the moment, and not tested on multiple machines.
I will need multiple "Beta" testers who agree to spend time testing things, and help develop new functions first.

Then, multiple variant can be done, like :
- Tandy 1000 HX/EX Format
- Added Audio connection for soundcard emulation
- Directly solder the RP2040, for smaller board with more functions (4 more GPIO)

But Ok, I wrote too much, I want to keep some surprises, but it is difficult for me to not explain this.

I think nobody understood so far the potential of this board and what we can do with it.
Then, I need to rush to have more things working :)
 
I think nobody understood so far the potential of this board and what we can do with it.
I believe I understand the potential of this board - I think it could be an anything board. A full Rasp PI would have more functionality for sure but this has huge potential. I, for one, am excited to see what you come up with.

  • I think you could make it a fully featured sound card with a full MPU-401 emulator. You could even wire up MIDI connectors and emulate a midi interface.
  • I think you could make it a hard core video card with CGA/EGA/VGA/MDA/etc and output HDMI - if you used the DOSBOX CGA emulation core you might be able to support VGA, Composite CGA and Tandy/PCJR all on one card with HDMI output - wow
  • I think you could make it a multifunction card galore - Realtime Clock, EMS, Serial port, Parallel Port, max system memory
  • CPU Accelerator - so use the GPIOs and tap into the 8088 processor port, emulate a 486+ and Turbo Boost an old XT (like an Inboard/386 all souped up to the 5x86)
  • If you are using a WiFi enabled PICO then it could be a wireless network card!
  • Overlay Video player - wire up to a VESA connector and play ANY modern video format on your classic computer, MPEG, AVI, MP4, etc, etc
I am sure there are even more. I would have no idea how to implement any of the above, but like I said, I can't wait to see what you do with it.
 
I believe I understand the potential of this board - I think it could be an anything board. A full Rasp PI would have more functionality for sure but this has huge potential. I, for one, am excited to see what you come up with.

  • I think you could make it a fully featured sound card with a full MPU-401 emulator. You could even wire up MIDI connectors and emulate a midi interface.
  • I think you could make it a hard core video card with CGA/EGA/VGA/MDA/etc and output HDMI - if you used the DOSBOX CGA emulation core you might be able to support VGA, Composite CGA and Tandy/PCJR all on one card with HDMI output - wow
  • I think you could make it a multifunction card galore - Realtime Clock, EMS, Serial port, Parallel Port, max system memory
  • CPU Accelerator - so use the GPIOs and tap into the 8088 processor port, emulate a 486+ and Turbo Boost an old XT (like an Inboard/386 all souped up to the 5x86)
  • If you are using a WiFi enabled PICO then it could be a wireless network card!
  • Overlay Video player - wire up to a VESA connector and play ANY modern video format on your classic computer, MPEG, AVI, MP4, etc, etc
I am sure there are even more. I would have no idea how to implement any of the above, but like I said, I can't wait to see what you do with it.

1) Sound card with midi Out already exist, it is the PicoGUS. The PicoGUS convinded me to work on the PicoMEM.
SDCard and memory access take too many resources to have a correct GUS emulation. Then, for the moment, the PioMEM is Dedicated for everything around "Data".

2) Video is not possible on the Pi Pico, it is too light in resources. Anyway, Somebody (Me why not) should work on a board like this with a Pi Zero 2 (It was nto possible with a Pi Zero as mono core)
> The Ox64 can also be a good alternative for this, I focus on the Pi Pico first :)

3) RTC, EMS, RTC are already planned... Serial and Parallel: Useless, as most of the PC already have them and this board can do USB....
(RTC using NTP on the Pico W)

4) It is impossible through the ISA Port. A "PiStorm" like board is needed for this, but I decided to not do it, as have a Fast 8086 is named pentium and more...
The PiStorm is well in the Amiga scene to haver a faster Amiga. 8086 replacement with a Pi has been done already.

5) Wifi : It is in the plan :)

6) This board is more for CPU < 386, BUT with the commands system I an putting in place, Stream video on CGA/EGA/VGA will be possible and easy to do.
 
1) Sound card with midi Out already exist, it is the PicoGUS. The PicoGUS convinded me to work on the PicoMEM.
SDCard and memory access take too many resources to have a correct GUS emulation. Then, for the moment, the PioMEM is Dedicated for everything around "Data".
Didn't know - I will have to look it up!

2) Video is not possible on the Pi Pico, it is too light in resources. Anyway, Somebody (Me why not) should work on a board like this with a Pi Zero 2 (It was nto possible with a Pi Zero as mono core)
> The Ox64 can also be a good alternative for this, I focus on the Pi Pico first :)
Of course!

3) RTC, EMS, RTC are already planned... Serial and Parallel: Useless, as most of the PC already have them and this board can do USB....
(RTC using NTP on the Pico W)
I only thought serial and parallel if somebody is trying to free up a slot - on my machine they are built into the backplane, so for me you are correct they are useless.

4) It is impossible through the ISA Port. A "PiStorm" like board is needed for this, but I decided to not do it, as have a Fast 8086 is named pentium and more...
The PiStorm is well in the Amiga scene to haver a faster Amiga. 8086 replacement with a Pi has been done already.
Right - I knew you would need to go through the 8088 connector. Didn't know there was an 8086 replacement with a PI that has been done. Will try to find it and read about it. For me I like the idea of the computer of my youth being as tricked out as possible - understanding I could just get a 486 or pentium, etc.

5) Wifi : It is in the plan :)
Amazing - this alone would be huge!!!!

6) This board is more for CPU < 386, BUT with the commands system I an putting in place, Stream video on CGA/EGA/VGA will be possible and easy to do.
I have a VGA card in my XT with a VESA connector, but if you had DMA and could source video from the sd card direct to video ram super fast there would be really cool things you could do with it. Bypassing the core CPU for movement from storage to Video Ram would be really cool.

I look forward to watching this develop Freddy.
 
416Kb of RAM Added (every single slot of free @ taken, except the one decoded by the XTIDE Board...)
2Mb of EMS
Disk emulation based on .IMG files stored in a MicroSD. (Possible to add 4 x 4Gb disk then)

Add the memory is configurable in software.
 

Attachments

  • 20230110_203914.jpg
    20230110_203914.jpg
    942.3 KB · Views: 51
  • MEMTable.JPG
    MEMTable.JPG
    110.8 KB · Views: 50
Back
Top