Arduino-based Floppy Disk Controller for RC2014-based systems

314 views
Skip to first unread message

Ryan Warner

unread,
Apr 22, 2024, 6:13:12 PM4/22/24
to retro-comp
Hi All-

While there's plenty of support of adding CP/M support to RC2014-based boards using a Compact Flash or SDCARD card through SPI, there doesn't seem to be a lot of support for Floppy Disks on their native interface, and I'm craving an authentic, retro computing experience. There is a small number of kits (ie. Flock V2) that make use of an out-of-production Western Digital WD37C65B chip that could be 30+ years old, but I feel that there should be something that uses parts that can be easily obtained today.

Therefore, I'm in the process of producing an RC2014-compliant PCB and code for an Arduino-based Floppy Disk Controller. I already have a proof of concept that communicates over I2C, but its proven to be way too slow! The next is a RC2014 bus direct interface that should bring up the performance a couple of orders of magnitude (hopefully!).

Anyway, stay tuned for updates!

Thanks,
Ryan W

T Gerbic

unread,
Apr 22, 2024, 6:32:46 PM4/22/24
to retro-comp
Have you considered using a PIC instead of an Atmel processor?

Doug Jackson

unread,
Apr 23, 2024, 1:55:10 AM4/23/24
to Ryan Warner, retro-comp
Hi Ryan,  (sorry for the duplicate - this was accidently sent to you without going to the list)

I would have thought that a single RCBUS WD1793 interface would have been simple.  It was a common disk controller in the Z80 CP/M systems.


A quick look at the Unicorn Electronics web site suggests that the 1793/1797 are still available.  https://www.unicornelectronics.com/IC/CRT.html 

Admittedly, with the advent of the PC, we moved away from the 1793, and towards chips like the 8272.  Unicorn appears to have heaps of them for $5.

Kindest regards,

Doug Jackson
Kindest regards,

Doug Jackson

ph: 0414 986878

Follow my amateur radio adventures at vk1zdj.net



--
You received this message because you are subscribed to the Google Groups "retro-comp" group.
To unsubscribe from this group and stop receiving emails from it, send an email to retro-comp+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/retro-comp/4ba69318-362a-4c61-bd72-2e1885c1454dn%40googlegroups.com.

Alan Cox

unread,
Apr 23, 2024, 5:59:38 AM4/23/24
to retro-comp
On Mon, 22 Apr 2024 at 23:13, Ryan Warner <rygu...@gmail.com> wrote:
>
> Hi All-
>
> While there's plenty of support of adding CP/M support to RC2014-based boards using a Compact Flash or SDCARD card through SPI, there doesn't seem to be a lot of support for Floppy Disks on their native interface, and I'm craving an authentic, retro computing experience. There is a small number of kits (ie. Flock V2) that make use of an out-of-production Western Digital WD37C65B chip that could be 30+ years old, but I feel that there should be something that uses parts that can be easily obtained today.

37C65s were used in vast numbers of PC class devices so are still
pretty easy to get. I have a tray of them here in fact.

Are you interfacing an actual FDC or building a fake one that makes
all the right noises and speed ?

Tom Storey

unread,
Apr 24, 2024, 4:56:19 AM4/24/24
to T Gerbic, retro-comp
On Mon, 22 Apr 2024 at 23:32, T Gerbic <tge...@gmail.com> wrote:
Have you considered using a PIC instead of an Atmel processor?

I suspect an Arduino is going to be easier for most hobbyists to digest. Its pretty easy and "friendly" to work with, largely plug and play.

A PIC is a bit more involved, requiring additional (biiiig, and not entirely "friendly") software, compilers/assemblers, and usually dedicated programming tools.

T Gerbic

unread,
Apr 24, 2024, 8:39:41 PM4/24/24
to retro-comp
I suspect he will not attach an Arduino board to the card but rather put the Atmel processor on the RC-2014 card itself.   Regardless, unless many of the hobbyists are expected to be redeveloping the code for the card in order to use it, the processor should be chosen to get the task done, and people will just use the provided code. The PIC processors have much broader capabilities, with more speed options. This is more like if your 8080 is running out of steam, get a Z80.  An Arduino board is not always the best solution to every problem.

If a person can learn to use the Arduino IDEs they can learn to use the Microchip IDEs (which work with the Atmel processors as well). There is code for the Arduino board to program PICs and some cheap PROM programmers also can be used. 

I would like to see this board be successful.  Just my opinion...

Ryan Warner

unread,
Apr 24, 2024, 11:22:56 PM4/24/24
to retro-comp
Hello again, everyone! Seems there's quite a bit of interest in this project!

Here's some more info about this project. First, a block diagram of the system:

DIY Kaypro Diagrams(1).png

As I mentioned before, I have a version of this project working that uses an I2C interface as the means for a Z80 or 6502-based system to access the floppy drives. However it's VERY slow due to the I2C speeds obtainable, so I wanted to take it to the next level performance-wise by figuring out a way to interface it as directly as possible with the Z80's data bus. The Arduino could directly interface on the RC2014 bus, but it would require access to the WAIT and BUSRQ Z80 pins, which aren't normally on the 40-pin RC2014 pinout, and I wanted to design something that could drop in place in any RC2014-based system. Therefore, I'm using an 82C55A (still available new from Mouser/DigiKey) to serve as the interface between the slower Arduino parallel data bus and the Z80 data bus.

As indicated in the diagram, I'm using David Hansel's amazing ArduinoFDC library (https://github.com/dhansel/ArduinoFDC) for the low-level control and encoding/decoding of the raw floppy drive signals from 3.5" and 5.25" drives. There are some small modifications to allow pin remapping and sector skewing support, but otherwise it's the same. On top of that library, I'm adding an opcode-based control system from the Z80 to the Arduino to perform all drive operations (reading, writing, formatting, drive selection, drive type assignment, etc.).

All of this will be present on a standard-sized (40-pin) RC2014 module (49.86mm tall).

As you can see, this is going to be lots of fun and I can't wait to get started on the hardware prototyping and firmware development phase before creating PCBs! And, of course, this will be released on github as open-source software and hardware.

Stay tuned for the next exciting update! (should hopefully report initial success with high-speed interfacing of the Arduino with the Z80)

Thanks,
Ryan W
Reply all
Reply to author
Forward
0 new messages