• Please review our updated Terms and Rules here

PicoMEM Project : Pi Pico on an ISA Board.

Have you considered converting this to a Teensy 4.1? You would get more RAM, ROM, and speed which could be used to do interesting things between ISA bus cycles. (Or actually a fraction of an ISA bus cycle as the Teensy would only need to react to the bus cycle by either outputting the read data or latching write data.) Most of the time the 600-800 Mhz microcontroller would be free.

I know you are focused on the Pico at the moment so it might be hard to justify the effort. I ask because I have achieved some decent results using Teensy's recently :)
 
Have you considered converting this to a Teensy 4.1? You would get more RAM, ROM, and speed which could be used to do interesting things between ISA bus cycles. (Or actually a fraction of an ISA bus cycle as the Teensy would only need to react to the bus cycle by either outputting the read data or latching write data.) Most of the time the 600-800 Mhz microcontroller would be free.

I know you are focused on the Pico at the moment so it might be hard to justify the effort. I ask because I have achieved some decent results using Teensy's recently :)
This you? :)


Really cool.

I've been tinkering with a few Teensys myself and they're impressive devices. One project I had in the works (in very early stages) was a teensy-based CGA card, interfacing with a Motorola MC6845. I've gotten a bit bogged down with figuring out the whole level-shifter situation, though. What level shifters are you using or what is your strategy for dealing with 5V logic levels?

I dream of 5v breakout boards for all popular microcontrollers...
 
Yes, thats me! :) The Teensy 4.1 is fast enough to emulate a 8Mhz 68000 and its bus interface, so I was thinking it could also fill the role for this PicoMem project.
 
I think the thing is that the Book8088 still had a spirit of "purity" somewhat, sure the FPGA's stretched it but there is joy in having the original chips.

Did this reply end up in the wrong thread? I was specifically wondering about the Teensy "CGA card" project.

The specific reason I'm asking is because the 6845 actually isn't a particularly "profound" device; it's just a set of programmable counters and triggers that spit out RAM addresses and sync signals. If the Teensy is emulating the rest of the CGA card then using the 6845 is going to make your life a *lot* harder. (IE, in addition to having to monitor the ISA bus address/data lines you'll need to keep a synchronous watch on the 6845's address outputs, which means at the very least you'll need a ton of pin multiplexing, and if the Teensy isn't actually outputting CGA, if you've built this thing to output VGA or DVI or whatever, the 6845's address outputs *effectively won't even matter* in terms of what's actually being thrown out the back door of the card because a 6845 programmed for CGA frequencies isn't going to be outputting at the correct cadence for the output device...) Again, I'm just wondering what the Teensy would actually be doing in this specific project.

Anyway, seems to me the the comparison to the Book8088 is pretty tenuous here. The CPLD in that device is effectively just glue. It uses an ATF1508, a fairly old and kind of awkward device with only 128 Macrocells, it doesn't have enough resources to fully emulate a 6845(*), let alone the 16K of CGA RAM or the character generator ROM, so "all" it's doing is emulating the pile of TTL logic a real CGA card needs to interface to the ISA bus and do the pixel generation. (A detail that's sometimes lost when discussing the 6845 is it is *not* a full-fledged video generator chip like a TI 9918A or Commodore VIC-II; all a 6845 knows about is "characters" corresponding to RAM addresses, it's entirely up to supporting hardware to turn the RAM addresses it spits out into actual pixels.) Using a Teensy or other MCU as "Glue" like this probably wouldn't make a ton of sense.

(* FWIW, it *might* have enough inside to be a 6845, but probably not enough to do that plus the rest of what it's doing... accurately, at least.)
 
This you? :)


Really cool.
Cool? Look at the PiStorm... That is RaspberyPi 3+ or 4, much smaller than Teensy and it does not only emulate, 68000, but also 68020 (configureable as 68030, 68040 as well) plus graphics card, plus network card, etc. It's currently running in Commodore Amiga 500, 600, 1000, 2000 ...and ATARI ST / STE.


There is also already a version for Amiga 1200 which is already 68020 based.

It is really impressive what can be done in our old computers with RasperryPi today. Drive emulation, any expansion card emulation, network / graphics card emulation, CPU emulation, etc. or the whole historic computer just in software. Let's wait what they'll do with the RaPi 5 which just has been released.
 
I believe PiStorm uses an FPGA to handle the local bus interface while the MCL68+ uses high-speed bit-banging and just a few level shifters. Also, I wrote the 68K core myself - and it can be cycle accurate. :)

But back to PicoEM, I really think it could be an easy job to port it over to the Teensy 4.1 and bit-bang the ISA bus. They cost a bit more than the Pico but maybe offer enough additional power to make it worth the upgrade.
 
Last edited:
Just out of curiosity, why keep the 6845? I'd think that would be one of the easier parts to let the Teensy emulate.

The 6845 has some surprisingly complex behavior. The Amstrad CPC CRTC compendium by Logon System (which to be fair covers all 4 CRTC variations used by Amstrad) is 284 pages long. The goal was as much to investigate the chip to improve my emulator as it was to have a neat project to do. In fact, the plan was for the Teensy to have a port of my 6845 emulation running simultaneously, as another form of hardware validation. Then we can do things like fuzzing the CRTC registers.
 
I believe PiStorm uses an FPGA to handle the local bus interface while the MCL68+ uses high-speed bit-banging and just a few level shifters. Also, I wrote the 68K core myself - and it can be cycle accurate. :)

But back to PicoEM, I really think it could be an easy job to port it over to the Teensy 4.1 and bit-bang the ISA bus. They cost a bit more than the Pico but maybe offer enough additional power to make it worth the upgrade.

Can I beg of you again, what level shifters are you using?
 
Sorry :). Just a few 74HCT574’s. Nothing exotic. I use them to shift out a byte to expand to the 68000's 24-bit address and 16-bit data bus outputs.
 
Did this reply end up in the wrong thread? I was specifically wondering about the Teensy "CGA card" project.

The specific reason I'm asking is because the 6845 actually isn't a particularly "profound" device; it's just a set of programmable counters and triggers that spit out RAM addresses and sync signals.

It's more complicated than it appears. Interesting stuff happens when you overflow these counters, or intentionally suppress the expected behavior with clever programming.

If the Teensy is emulating the rest of the CGA card then using the 6845 is going to make your life a *lot* harder. (IE, in addition to having to monitor the ISA bus address/data lines you'll need to keep a synchronous watch on the 6845's address outputs, which means at the very least you'll need a ton of pin multiplexing

We only really have to read the CRTC address outputs once every character clock. That gives us a lot of time to do other things. There are challenges, sure, but I don't think anything was insurmountable.

, and if the Teensy isn't actually outputting CGA, if you've built this thing to output VGA or DVI or whatever, the 6845's address outputs *effectively won't even matter* in terms of what's actually being thrown out the back door of the card because a 6845 programmed for CGA frequencies isn't going to be outputting at the correct cadence for the output device...)

The display was going to be somewhat abstracted as the teensy was going to render into an internal 912x262 framebuffer representing an NTSC field. It has plenty of memory to do so. Then we output some aperture into that field. It's the same method my emulator uses, after all. What matters is where the host computer thinks the virtual raster is, not the ultimate display latency.

In any case, the long story short is I managed to get Area 5150 emulated without needing to do any unique CRTC research, so the project went on the back burner. It did get me to start thinking about a general Teensy-on-an-ISA card design, which is why this thread piqued my interest.
 
Cool? Look at the PiStorm... That is RaspberyPi 3+ or 4, much smaller than Teensy and it does not only emulate, 68000, but also 68020 (configureable as 68030, 68040 as well) plus graphics card, plus network card, etc. It's currently running in Commodore Amiga

I'm very familiar with PiStorm, very cool project. But the Teensy is much smaller than the Pi 3. It's the size of a DIP48 socket.
 
I believe PiStorm uses an FPGA to handle the local bus interface while the MCL68+ uses high-speed bit-banging and just a few level shifters. Also, I wrote the 68K core myself - and it can be cycle accurate. :)
What woul₫be the benefit to be cycle acurate on an accelerator? What would be the advantage to replace the 68000 chip (or any other CPU) by such a huge board to have the same speed?
 
What woul₫be the benefit to be cycle acurate on an accelerator? What would be the advantage to replace the 68000 chip (or any other CPU) by such a huge board to have the same speed?
These are fun and challenging projects to see how modern technology can be combined with vintage machines.
 
Have you considered converting this to a Teensy 4.1? You would get more RAM, ROM, and speed which could be used to do interesting things between ISA bus cycles. (Or actually a fraction of an ISA bus cycle as the Teensy would only need to react to the bus cycle by either outputting the read data or latching write data.) Most of the time the 600-800 Mhz microcontroller would be free.

I know you are focused on the Pico at the moment so it might be hard to justify the effort. I ask because I have achieved some decent results using Teensy's recently :)
Hi,

I am more looking forward to a new Pico revision (With more RAM) than porting it to something else.

A Teensy board is more expensive than my full board plus the Pico.
And what is excellent in the Pico is that there are 2 core plus the PIO.

The ISA is much more demanding than emulating a CPU, because it is a Slave, not the bus Master...
ISA on 5150 is even much more demanding. I had to overclock the CPU to 280MHz to be able to answer fast enaught (And the critical code is only 5 CPU instruction/Cycles, can't be optimized more...)
> My Board use then 2x280MHz core, not a single 600MHz

What can help is that the ARM core in the teensy is surely faster to react to IRQ, so one core is dedicated to do the ISA bus sniffing in a loop (4 Instructions loop)

Also, for my curent "Low skills" in ARM coding, I am much more confortable to have one core dealing with the ISA BUS and the other doing everything else. That may not be simple to do with a Teensy.

So : Cost is higher, I even doubt it is possible...

What is the more "Complex" in term of time is obviously the software, and as most of it is in C/C++, this is surely portable to something else.
 
Hi,

Some of the person who recently posted here will soon receive a PicoMEM Rev 1.11

I am anywas not sure if the post here will be a good place to discuss the PicoMEM as it is not really active, we have a Discord server that is much more active.

So, it anyobdy here would like to have access to the Discord, or is looking at more activity here, tell me :)
 
Forums are good for ensuring the information discussed can be found by search engines. Google etc. cannot archive the information discussed in a discord server. When using google to search for "picomem", the top results are forums.

So, you might want to post regular updates somewhere that isn't discord.
 
Back
Top