Apple2idiot card (ESP32)

16 posts / 0 new
Last post
Offline
Last seen: 2 weeks 1 day ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
Apple2idiot card (ESP32)

While googling I ran across this.  Apparently it was introduced at KansasFest 2022 but since that always seems to be at a time I can't go, I missed it.

 

It is an interesting and different take on interfacing an ESP32 module to an Apple II.  It uses a dual ported SRAM instead of trying to interface the ESP32 to the Apple II bus using something like 74LVC245s or through a parallel chip like a 6522 or 82C55 or through a serial chip like a 6551 or 6850.

https://github.com/equant/apple2idiot

 

I sent an email to the designer of the card, Nathanial Hental, with some questions and suggestions and some ideas for future development.

 

I'm thinking of ordering some boards from JLCPCB and an ESP32 module of the type that it calls for as well as the IDT7132 dual ported SRAM.  Parts count on the card is very minimal.  Basically just the SRAM, the ESP32 module, a capacitor and a couple jumpers.

 

 

Offline
Last seen: 2 weeks 1 day ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
If you are looking at the

If you are looking at the KiCAD project, make sure you look in the "apple2idiot_new" directory to get version 0.2 of the card.  It has a number of fixes/improvements over the original one.

 

CVT
CVT's picture
Offline
Last seen: 2 hours 33 min ago
Joined: Aug 9 2022 - 00:48
Posts: 1015
This project has a very cool

This project has a very cool idea to interface the ESP32 (or a Pico) using a single chip. When I first saw it back in Sep of 2021 I was considering using the same approach for my ESP32 SoftCard, which had 9 chips at the time. However I discovered that this particular SRAM chip is very expensive and at the time it was also very hard to find. Eventually I came up with a simple 3 jelly bean chip interface for my card, but it doesn’t have access to the full Apple II bus.

 

Then of course the Vince Briel version of the Apple II VGA card came out and it showed us how to have access to the full bus with only 3 identical jelly bean chips, which I believe is the best interface approach as of today.

Offline
Last seen: 2 weeks 1 day ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
I think it would be cool to

I think it would be cool to have boh the dual port SRAM and the 74LVC245 if possible.  Possibly also interface the TX and RX pins with a serial chip like a 6551 or 6850.  Send the commands on one channel and use the memory chip to buffer large transfers.  One of the big limiting things on the Apple II is fast devices can over-run it without buffering.  Since I saw this card I have been thinking about what might be possible.  I think the reason this SRAM is expensive is because it is dual ported.

 

 

Offline
Last seen: 2 weeks 1 day ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
If there aren't enough pins

If there aren't enough pins to do both the SRAM and the 74LVC then possibly it could be done using a parallel chip like a 6522 which is common on a lot of cards or 82C55 like the Dan ][ uses.

 

It is interesting to see how each of these different cards that interface to a microcontroller chip do things.  Another one is the A2-IO-RPi card which uses LVC chips similar to the Briel card.

 

 

Offline
Last seen: 2 weeks 1 day ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
I ordered 5 PCBs from JLCPCB

I ordered 5 PCBs from JLCPCB and the ESP32 and IDT7132 dual ported SRAMs and the 48 pin sockets needed for the IDT7132 chips.  Unfortunately I had to order most of that from China so it will be a big wait probably.

 

Despite the low chip count this is a fairly expensive board to build because the ESP32 modules aren't too cheap and the IDT7132 is an expensive chip and 48 pin sockets aren't common or cheap either.

 

It's still such an interesting idea for how to design a card like this that I want to try it out and see how it works.

 

 

Offline
Last seen: 2 weeks 1 day ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
softwarejanitor wrote:If
softwarejanitor wrote:

If there aren't enough pins to do both the SRAM and the 74LVC then possibly it could be done using a parallel chip like a 6522 which is common on a lot of cards or 82C55 like the Dan ][ uses.

 

It is interesting to see how each of these different cards that interface to a microcontroller chip do things.  Another one is the A2-IO-RPi card which uses LVC chips similar to the

 

Interesting...  I have been studying the schematics of these various cards and it turns out the A2-IO-RPi doesn't actually work anything at all like the Briel A2 VGA, even though they use some of the same chips.  They're both very interesting in different ways...

 

I need to start studying how the software for each of these works.  I've got some theories and it will be fascinating to find out if I'm right.

 

I'm definitely learning a lot right now.

 

CVT
CVT's picture
Offline
Last seen: 2 hours 33 min ago
Joined: Aug 9 2022 - 00:48
Posts: 1015
Well, the chips are there

Well, the chips are there just to facilitate communication with the Apple II bus. All these cards (including the Dan ][ Controller) are largely software projects. I can’t speak about the others, but on the ESP32 SoftCard I spent probably more than 95% of the development time on the software so far and that percentage is still going up. As a result all these “software-defined cards” (as Adrian Black likes to call them) have more or less the same hardware, but their capabilities are totally different and it’s even hard to find any overlapping features, which I think is good.

Offline
Last seen: 2 weeks 1 day ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
I agree with all that. 

I agree with all that.  However, I think that the way they are interfaced to the bus is interesting as it facilitates different communication levels for different purposes.  From full on bus snooping like the VGA card to only a shared memory access like the Apple2Idiot card, it's a big differnce.  The other cards are in between.  Your approach with the 374, 245 and 138 on the ESP32 Softcard is a much more traditional method, although using HCT parts to facilitate the different voltage levels is a nice twist.  The difference in communication changes the software.  It must take a lot of CPU power to sniff the bus in real time on the VGA card, so it probably wouldn't work with a processor with less power than the M2 Cortex the Pico has.  The shared memory approach probably uses the least CPU on either side, but it is loosely coupled like using a message bus in software so it probably isn't well suited to applications needing fast real time communications.  It's more of a batch thing.  Anyway, I still find all this fascinating.

 

In a way the Apple II was always a sort of "software defined" system.  Despite being largely acclaimed for being a hardware engineer, one of Woz's things was actually that he designed simiple and often minimalistic hardware that relied on clever software to work around.  Apple II graphics and sound for example.  And the biggest being the Disk II controller system.  So these software defined cards are sort of building on tradition.  It is like we are at a point where there is a whole new birth of things in the vintage community being driven by the mixing of new and old in ways we really haven't seen before.

 

Offline
Last seen: 2 weeks 1 day ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
Boards arrived from China

Boards arrived from China today...

 

 

Other parts still in route, probably another 2-3 weeks.

 

Offline
Last seen: 2 weeks 1 day ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
The parts arrived today...  I

The parts arrived today...  I have one card assembled and I need to program the ESP32 and then test it out.

 

 

Offline
Last seen: 2 weeks 1 day ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
I got a couple more boards

I got a couple more boards assembled.

 

Offline
Last seen: 2 weeks 1 day ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
I made some more progress

I made some more progress today.  I got the Arduino IDE set up to be able to Verify/Compile and Upload code to the ESP32.

 

Next is to get the Apple II side of the software working and run some of the example programs...  Then I will be able to start writing my own test code.

 

CVT
CVT's picture
Offline
Last seen: 2 hours 33 min ago
Joined: Aug 9 2022 - 00:48
Posts: 1015
softwarejanitor wrote:I made
softwarejanitor wrote:

I made some more progress today.  I got the Arduino IDE set up to be able to Verify/Compile and Upload code to the ESP32.

 

Next is to get the Apple II side of the software working and run some of the example programs...  Then I will be able to start writing my own test code.

 

 

This card is a great way to get into ESP32 and CC65 programming at the same time. Much more rewarding than just getting LEDs to flash, as is most often the case when first getting into micro-controller programming.

 

If you have the time and you get tired of sending text back and forth between the Apple II and the ESP32, I can give you one idea for a useful Apple II card that can be done just by software without out any additional hardware modifications. This card has all the hardware to be turned into a Bluetooth mouse card for the Apple II that emulates the Apple Mouse Interface and can work with any modern Bluetooth mouse.

Offline
Last seen: 2 weeks 1 day ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
I have done some with the

I have done some with the older ESP8266 and a bunch of other microcontrollers like the Atmels used in most Arduinos and the ARM processors like the M1 Cortex.  I haven't done a lot with CC65.  I used Aztec C on the Apple II way back in the day, like 1985-1990.

 

A Bluetooth mouse card could be pretty useful since Apple II Mouse Interface Cards and the early style Apple mice that work with them aren't plentiful.

 

 

Offline
Last seen: 2 weeks 1 day ago
Joined: Jul 5 2018 - 09:44
Posts: 2587
I have made some progress

I have made some progress getting the ESP32 and Apple //e to talk to each other.  I will be documenting a few things to make it easier for others to get up to speed with using this board.  Mainly how to set up the Arduino IDE to program this ESP32 module and how to connect a TTL to RS232 adapter to the board and how to connect an RS232 to USB from that to a modern machine to facilitate debugging.  The ESP32 code sends debug messages to its serial port.

 

I will also try to get some completely runnable demo code and examples put together.

 

 

Log in or register to post comments