Main Restorations Software Audio/Jukebox/MP3 Everything Else Buy/Sell/Trade
Project Announcements Monitor/Video GroovyMAME Merit/JVL Touchscreen Meet Up Retail Vendors
Driving & Racing Woodworking Software Support Forums Consoles Project Arcade Reviews
Automated Projects Artwork Frontend Support Forums Pinball Forum Discussion Old Boards
Raspberry Pi & Dev Board controls.dat Linux Miscellaneous Arcade Wiki Discussion Old Archives
Lightguns Arcade1Up Try the site in https mode Site News

Unread posts | New Replies | Recent posts | Rules | Chatroom | Wiki | File Repository | RSS | Submit news

  

Author Topic: PiFluke Zero - an open source modern 90xx "emulator" using a raspberry pi Zero  (Read 3483 times)

0 Members and 1 Guest are viewing this topic.

itsdanik

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 14
  • Last login:March 11, 2019, 03:36:38 pm
Hey Guys,

I have a lot of Z80-based JAMMA boards around that I want to repair. A Fluke 9010A with a Z80 pod would be sweet, but there's no way I'm giving the kind of money these things have skyrocketed to. I started poking around the web, and I found this:

https://github.com/ArtemioUrbina/GhettoFluke9010A

Based on an Arduino Mega. I had one lying around, so I thought I'd build it:



It has only the most basic features (ROM test, RAM test, read/write to/from I/O ports). I added a BUS test as well, but I still don't like the clunky interface, the small screen, the slow ATMega. Editing start/end addresses on this thing is a nightmare.

Then I thought it could be done with the raspberry pi. I did some web digging again, and, sure enough, I found this:

http://www.smbaker.com/z80-retrocomputing-4-bus-supervisor

it even has a github repo with python scripts to implement almost any feature the Fluke 90xx series has. Sweet!

So, I decided I'll make my own Fluke using a raspberry pi zero. Some key features I'm going to implement are:

-4x20 Character LCD screen
-Shape comparable with the original, but more compact. Less keys, more menus (hence the bigger display)
-Properly sized mechanical keyboard.
-Modular design, so that you could swap one board for another and have a different "pod".
-Open source and hackable. You can design your own boards (pods), make changes in the software and interface with anything!
-The pod design is such that a real CPU is installed in parallel with the I/O expanders.
-USB port. This would enable awesome features like dumping a ROM to USB without taking it off the board (or having reader), or copy savestates from USB to RAM!

(kind of) farfetched features that are not at all impossible, but should be implemented at a later stage:

- Reading roms and checking CRC online (or even uploading entire ROM) and give you the version of the game.
- Fetching memory maps from an online database and include automatic tests for each game. (eg. ROM test @ 0x0000 - x01FFF, then RAM test @ 0x2000 - 2FFF etc.)

First software version will probably suck (I'm no programmer, but I can do same basic stuff), but the PCBs I think will be pretty solid.
I'll upload some draft schematics and renderings later.

Some technical stuff (HW):
- Regarding Dr. Scott M. Baker's implemetation of the "bus supervisor", I will omit the clock controls altogether, since this could be done only in RC2014, as it would replace the original clock.
- All pod control is done via I2C. This means a lot of I/O could be added with more expanders to match bigger chips like the 68000
- The keyboard is a simple 8x4 matrix with anti-ghosting diodes, connected directly to the Pi GPIO pins (they were available, and I want to keep the parts count low, so, no shift reg there).
- Likewise the four leds are directly wired to individual pins on the GPIO (via current limiting resistors).
- Another GPIO is used for the buzzer.

More technical stuff (SW):
- Probably in python
- Need to write a basic matrix decoding routine
- Also a menu system and some UI interface elements like moving the cursor around using arrow keys when editing values etc
- It will call directly Dr. Scott M. Baker's supervisor python scripts. The library might need some kind of expansion for more advanced features.


Any thoughts, ideads?

itsdanik

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 14
  • Last login:March 11, 2019, 03:36:38 pm
Some more quick info about the project.
Here are some rough schematics I made using KiCad. One for each board.



This is the "mainboard". It has only the keyboard and headers for all other boards to connect to (including the Pi Zero). Pin selection the Raspberry Pi GPIO is kinda random at the moment, i'll get to that later.



This is the LCD module which also has some LEDs for various indications and a buzzer for basic beeps.



The first pod, for use with Z80 processors. Basically used exact pinout as Dr. Scott M. Baker's design, as I'll use his scripts.


ark_ader

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 5645
  • Last login:March 02, 2019, 07:35:34 pm
  • I glow in the dark.
Can we get native CP/M to work with the Pi with that?
If I had only one wish, it would be for three more wishes.

itsdanik

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 14
  • Last login:March 11, 2019, 03:36:38 pm
I don't know think I2C is gonna cut it, even at 1MHz, but, then again, I might be wrong.  :dunno

itsdanik

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 14
  • Last login:March 11, 2019, 03:36:38 pm
Quick update: here are some PCB draft designs I did in KiCad to get a general feel about pcb and case size and mounting.



This is the keyboard/"motherboard" (front and back). It has 3 headers for interfacing with the lcd display module and the "pod". The anti-ghosting diodes are a bit huge (wrong footprint) as of now. Also Raspberry Pi pinout is still kinda random until I build a prototype




This is the LCD module. Notice how the 20x4 display is 16x2 (wrong footprint again for now). It also has 4 LEDs and a beeper.
Also all headers for interconnections are on the back. This is to keep a low PCB profile, as there will be plenty of space for cabling on the bottom of the case.




This is the Z80 "pod". Again the 40pin connector is temporary, will probably replace it with a D-SUB connector. Of course, the Z80 is going to be socketed.