• Please review our updated Terms and Rules here

PicoMEM Project : Pi Pico on an ISA Board.

Hi,

My PicoMEM Board si progressing, even if I face multiple challenges.
what is new:
- BIOS Menu working for disk image, started for Memory detection and configuration.
- Selection of HDD image and Boot, working on images up to 4GB
- Selection of Floppy image and Boot, was able to Boot DOS 3, 3.31,6.22 and FreeDOS from Floppy images

Challenges:
- Still tested on a PC with 4MHz ISA Clock only.
- Still need to support the Disk read to a buffer in RAM emulated on the PSRAM (As PSRAM and SD share the same BUS)
- I am sometimes slow to add basic code in C, as I have a really low experience in C coding
- I have regularly things stoppin to work and need to go back and debug..
> Example : Checkit3 Memory test "High Addr Lines" Does not work anymore (For EMS only) and I don't know since when as the last time It pass this test successfully was in december..."
And I don't know what this test means.
- I can't add any new type of memory as it slow down everything (To have a separated and faster Disk memory buffer) so there are problems due to the Pi Pico compiler that are difficult to understand/Correct
- It may take time to have it working on 8MHz ISA Bus as the timings are short at 4MHz.

Anyway, each tme there si a problem or a bug, there sia leson learnt and I it is an opportunity to work on more robust code.
Globally, I am happy with what is working and the board potential, even if the road is long....
Code this on a "relatively" slow microcontroller is a challenge and is interesting at the same time.

The best is still to follow me on Twitter I post updates regularly.
 
- 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.

Out of curiosity, what kind of performance hit do these additional wait states entail? Have you benchmarked software running exclusively from this emulated RAM? If you had one of these installed in a machine with 256k of memory on the motherboard you could use one of those "eatram" programs to block out the motherboard RAM so you can force Topbench (if necessary you could use the stub version of Topbench that'll run in less than 128k) to run off the emulated memory. I'll just toss out there that, for instance, in the Tandy 1000 EX/HX running at 7.16mhz the wait states you get from running from the shared VRAM (which uses the same memory timing as the original 4.77mhz T1000 and is therefore essentially locked into running no faster than that) cut the performance by about a third. (IE, an unexpanded 1000EX/HX is hardly any faster than a 4.77mhz PC, the wait states almost completely negate the faster CPU clock.)
 
Use this board on a tandy 1000HX will of course need lot of test to compare it vs the tandy 4 in 1 for example.
 
Use this board on a tandy 1000HX will of course need lot of test to compare it vs the tandy 4 in 1 for example.

I just used the Tandy 1000 EX/HX of examples of machines that have additional wait states accessing certain parts of memory. (IE, I've built my own SRAM-based memory expansions for my machines and, like I said, they run about 30% faster running from that memory than the video memory, which is approximately 50% contended by design.)

The point was to ask whether you'd done any testing to determine the practical effect of those additional "6/8" wait states that your method of using the SPI PSRAM for memory has on performance. Considering a normal 8088 memory access is, what, three or four? T-states this actually seems like it would be really expensive.
 
I just used the Tandy 1000 EX/HX of examples of machines that have additional wait states accessing certain parts of memory. (IE, I've built my own SRAM-based memory expansions for my machines and, like I said, they run about 30% faster running from that memory than the video memory, which is approximately 50% contended by design.)

The point was to ask whether you'd done any testing to determine the practical effect of those additional "6/8" wait states that your method of using the SPI PSRAM for memory has on performance. Considering a normal 8088 memory access is, what, three or four? T-states this actually seems like it would be really expensive.
I did not mesure for the moment as I did not start the memory speed optimisation yet. I plan to add a small cache for the memory access.
 
I did not mesure for the moment as I did not start the memory speed optimisation yet. I plan to add a small cache for the memory access.
Your board seems like a nice solution for adding 128 kB to my Tandy 1000SL to get to full 640 kB that is not shared as video RAM. Adding memory to my 8086 system with an 8-bit ISA card will be slow, but for some programs slow is better than not running at all, so that's not an issue for me.
I looked at the Monotech MicroRAM / Lo-tech 1MB RAM cards, but that's a single purpose solution. I like the flexibility of your design.
 
Your board seems like a nice solution for adding 128 kB to my Tandy 1000SL to get to full 640 kB that is not shared as video RAM. Adding memory to my 8086 system with an 8-bit ISA card will be slow, but for some programs slow is better than not running at all, so that's not an issue for me.
I looked at the Monotech MicroRAM / Lo-tech 1MB RAM cards, but that's a single purpose solution. I like the flexibility of your design.
Hi,

Yes, of course, it is designed for this.
The RAM on ISA is slow, but generally, the applicaiton itself is already loaded on the PC RAM, the additional portion (512 to 640) is more for Data, so it work really well.
RAM Emulation is also used for communication between the PC and the Pi Pico, plus Disk access (On MicroSD)

I have multiple Tandy 1000 : SX, EX, HX and TL/2 so I will be able to test on them.
Also, My Board may cost lower than the MicroRAM board.
 
Your board seems like a nice solution for adding 128 kB to my Tandy 1000SL to get to full 640 kB that is not shared as video RAM

Has anyone actually done that and had it work? IE, does the BIOS actually test for and accept add-on RAM in the 512-640k window in the SL before configuring the video controlled RAM to reside in that space? I’ve never heard of success doing so.
 
Has anyone actually done that and had it work? IE, does the BIOS actually test for and accept add-on RAM in the 512-640k window in the SL before configuring the video controlled RAM to reside in that space? I’ve never heard of success doing so.
I've not tried on real hardware, but I'm running 86box with a dump of my 1000 SL BIOS and it works with that. After adding 128 kB at the 512-640k window, the BIOS reports 'Memory Size = 768k' instead of 640k.

ms.com output with normal 640k:
589824 bytes total memory
534896 bytes free
534688 bytes in largest free block
ms.com output with added 128k (64k gained in DOS 3.3):
655360 bytes total memory
600432 bytes free
600224 bytes in largest free block
 
I've not tried on real hardware, but I'm running 86box with a dump of my 1000 SL BIOS and it works with that. After adding 128 kB at the 512-640k window, the BIOS reports 'Memory Size = 768k' instead of 640k.

Sure... the tech manual for those machines in fact details that 768k was envisioned as an option on the custom IC that runs the system but sockets for it weren't implemented, so I'm not surprised the BIOS can "understand" it. But the real hardware might make your life harder, here. I'm pretty sure in fact there was a thread a few years ago where someone tried to do the exact same backfill with a lo-tech card and it didn't work, but since the search function of this forum generally defeats me I don't think I want to try to find it.

TL;DR, the big reason to be concerned is the system controller in the SL actually has two completely separate data busses coming out of it, a 16 bit one that goes to the onboard RAM and an 8 bit one that goes to the onboard peripherals and expansion slots. Said system controller decides whether the 8086's word-aligned bus accesses go through as one 16 bit operation or get broken into two 8 bit ones, and that's the chip that decides whether a memory request is even seen by the 8-bit portions of the system. If the BIOS actually checks the 8-bit bus for RAM before deciding how to program that thing (along with the registers in the Tandy video chip that tell *it* where to map itself) then, well, you're fine, but if it doesn't you're not going to be hanging backfill RAM in the expansion slots. Unless you know for sure that 86box accurately models the hardware behavior I wouldn't make assumptions that what works in the emulator works on the real thing.
 
Unless you know for sure that 86box accurately models the hardware behavior I wouldn't make assumptions that what works in the emulator works on the real thing.
I know for sure that 86box does not accurately model the hardware behaviour. That's why I like FreddyV's PicoMEM. If the backfill doesn't work and I didn't blow up my SL, I can use it for other purposes.
86box does not have SL support (only for SL/2, which is probably incorrect, but I don't have hardware to test). I'm slowly modifying it to behave like my real SL. Handling of ROM0 and ROM1 (which does not exist) is correct now and I added smartwatch support. Still lots of other issues with keyboard, video (e.g. 8x9 characters in 225 line mode), sound.
 
Hi,

I know that to add memory in to the Tandy 1000 EX/HX, we need to have it decoding from the @ 0
I have no idea if the memory chip detect the new RAM "Alone" or done if it is software by the BIOS

In the first case, the @ decoding need to be harcoded and start really fast. I will see when I will test....
 
Hi,

I know that to add memory in to the Tandy 1000 EX/HX, we need to have it decoding from the @ 0
I have no idea if the memory chip detect the new RAM "Alone" or done if it is software by the BIOS

In the first case, the @ decoding need to be harcoded and start really fast. I will see when I will test....
The SL and TL technical references have some useful information, so I'll give the SL a try if/when your boards can be ordered.
 
I have no idea if the memory chip detect the new RAM "Alone" or done if it is software by the BIOS

The BIOS in the old Tandy 1000s that in their base configurations *only* have memory connected to the video chip (original/A/EX/HX) on power-up sets the mapping register for the video hardware so the onboard RAM is page-switched in the Bxxxx page (like where it resides in the TX/TL with “768k”, coincidentally), and after programming the DMA chip to provide refresh any “standard” expansion RAM they do a simple “count the fingers” memory test starting at 00000h and counting up to see if any RAM answers. The granularity of this test is 128k pages, and my recollection is it stops counting at the 512k boundary in a “plain” 1000 with 128k on the video bus, and at 384k on the EX/HX which have 256k. The video registers are then programmed to place the video memory after the top of the expansion memory so you end up with a contiguous block from zero up to whatever is reserved for graphics, which comes off the end.

That they supposedly stop counting at 384k/512k is why you can’t expand them to act like a TX/TL, even though technically their hardware would support it. (I’ve fiddled with programming the HW registers in an EX to the TX configuration and it works.) If anyone who’s a wiz at BIOS hacking ever wants to try patching together a hybrid BIOS for these machines based on the TX’s I’d happily chuck together a memory card that does 640k from zero to try it on, I’ve already figured out how to override the built-in BIOS of the EX/HX from a card. (No need to pull the onboard ROM.)
 
… The SL, on the other hand, well, I’ve never owned one. They do have a much “smarter” system controller that appears to have a register relating to installed RAM, so I have no idea what the BIOS does with that, and whether it actually scans to see if there are “alternative“ sources for conventional memory before deciding where video lives.
 
I did receive 10 Boards I will be able to sell/send to "Youtubers" / Testers.
 

Attachments

  • PicoMEMV1.jpg
    PicoMEMV1.jpg
    196.8 KB · Views: 23
I would love to test it in my Olivetti Prodest PC-1 (Nec V40, 512 kB RAM) but I doubt that it would fit in the ISA slot at the right side of this keyboard-PC. The ISA slots are a bit deeper in the housing so an ISA card would require to have a bit longer contacts as usual ISA cards.

pc1xtcf.jpg

This is an example of modified XT/CF from an italian vendor for Prodest PC-1, he cuts out the red marked corner to be able to plug the card deeper in the right side ISA slot of that computer.


pc1isa.jpg
Here you can see the ISA slot of that neat PC. Olivetti offered an expansion box fitting here in good old times, having 128 kB extra mem, XTA harddisk and one ISA slot.

Question: Can I disable the floppy emulation function of your card, or can it be moved tó alternative FDC adress. On alternative adess it still could be used to load disk images and copy them to real diskettes using some special copy programs which support secondary floppy controler...
 
Back
Top