FreddyVRetro / ISA-PicoMEM

PicoMEM Doc and Firmware
199 stars 13 forks source link

ISA PicoMEM Extension board (For 8086/8088 PC)

Introduction

The PicoMEM is designed as a way to run Emulated ISA boards on a real PC.
The PicoMEM Board currently connect the full 8Bit Memory and I/O Bus plus an IRQ to a Raspberry Pi Pico, through some multiplexor/Level shifter chip.
The Pi Pico also has a 8Mbyte PSRAM connected in SPI and a MicroSD Slot.

The PicoMEM Board can be seen as both a working PC extention board as well as a Development platform.

This GitHub Repository does not contains the Firmware for the moment.
However, PMMOUSE, PMEMM and PM2000 Source are available.

To follow the PicoMEM news, see it in action on multiple machines you can follow me on X: FreddyV on X

To see my other projects, here is my Youtube Channel: FreddyV Retro Zone

How to get a PicoMEM ?

The PicoMEM is available at Texelec ! (Mainly for the USA) Texelec PicoMEM link

NEW: The PicoMEM at Serdahop (Mainly for the Europe) Serdashop PicoMEM

NEW: The PicoMEM at Flamelily Shop (For the UK) Flamelily PicoMEM link

You can have one from me (Mainly for Europe, with wait time), on my form: FreddyV PicoMEM Form

Gerber and full sources are not available for the moment. The source code will be released soon.

How to use the PicoMEM ?

Please go to the Wiki page : https://github.com/FreddyVRetro/ISA-PicoMEM/wiki

Board description

The PicoMEM exist in 3 Releases : 1.0, 1.1 and 1.11

Hardware :

Software :

Current Functionality

- Memory emulation with 16Kb Address granularity:

128Kb of RAM can be emulated from the Pi Pico internal RAM with No Wait State. We can emulate the whole 1Mb of RAM address space from the PSRAM. (With 6 Wait Stated minimum added) EMS Emulation of Up to 6/7 Mb. (Only 4Mb for the moment as using the LoTech EMS Driver) Memory emulation is used to add 4Kb of "Private" memory for the PicoMEM BIOS Usage. 4Kb of RAM is also added for disk access (Or other) 512b only is used for the moment.

Future Functionality

Compatibility/Limitations

The Board can't be used for Video emulation, as it require a way for the Pico to actually display something, and only 3 pins are "Free". The Pi Pico is limmited in its speed, this is excellent and bad at the same time:

Memory emulation

As the PicoMEM is an 8Bit ISA Card, the RAM Emulation may be slower than the PC own RAM. The PicoMEM is then more suitable to extend a 512Kb PC to 640K, Add some UMB (For Driver) than extend an IBM PC With 128Kb of RAM. (RAM Card for 5150/5160 is still recommended)

Memory emulation capabilities :

Memory emulation limitations :

Disk "emulation"

The PicoMEM can add 4 disks to the BIOS, Disk up to 4Gb.
It can also mount Floppy image as A: or B:

The PicoMEM does not emulate disk, it send the BIOS Disk access commands to the Pi Pico.
Then, it is more a "Disk BIOS" emulator than a Disk emulator.

Another particularity is that it use Memory to perform the Data transfer, this allow for the maximum possible transfer speed, even on 8088 CPU.
Anyway, single sector read is slower than multiple sector reas as the PicoMEM need to read the sector from the SD, then send the data to the PC Memory.
With multiple sector Read, the Pico read the next sector while the data is copied to the PC Memory.

It is highly recommended to use reasonable disk image size, below 500Mb.
100 or 200Mb are ideal size, as it will be recognized and usable by DOS 6 and DOS 3.31
As you can add 4 Disk with 4 partitions, you can create diferent disk images for different usage, like a partition with games, another with music ...

Warning : You may have compatibility problem with some uSD, even if the compatibility has been greatly improved in the November 2023 firmware.

ne2000 emulation via Wifi

The PicoMEM can emulate a ne2000 network card via Wifi.
The wifi code is preliminary, the PicoMEM can't see if the access point is connected or not, code improvement in progress.

How to use it :

Tested machines :

Failing Machines :

License

Hardware and Software are currently closed.

As the PicoMEM contains various public source, I Will publish it as well as Public.
Anyway, I consider it not ready to be opened yet, as I am not sure about the License to use and how to manage it.
If you want to participate, You can ask me access to the source on demand.

Contributors / External Libraries