Close
0%
0%

PFBDK - EPSP floppy drive emulator

There are multiple ways to add floppy-sized storage to the Epson PX-8 or PX-4 computers. PFBDK offers a cheap, easy D.I.Y. solution.

Similar projects worth following
This project is a fork of Willam Cooke' s PFBDK project (http://wrcooke.net/projects/pfbdk/pfbdk.html). It runs the PFBDK firmware on an Arduino Mega 2560 and anArduino Micro Pro (with custom PCB).
PFBDK simulates four floppy disk drives for the Epson PX-8 and PX-4 CP/M-80 based computers over the SERIAL port using the EPSP-protocol (https://electrickery.nl/comp/hx20/epsp.html).

The PFBDK firmware supports both the PX-8 (Geneva) and PX-4, and four disks are usable on the PX-8, PX-4 (default D:, E:, F: and G:) and HX-20 (A:, B:, C, D:).

This firmware version supports custom PX-4 and PX-8 native programs for rudimentary SD-card management. Epson used a sub-set/extension of the CP/M NET protocol for communication between portable computers and peripherials like floppy-disk terminals and video interfaces. The implementation is the EPSP protocol.

The case is an implementation of my parametric Unibox design (https://www.printables.com/model/472419-unibox)

The SD-card management functionality is available from the PFBDK debug port (Arduino console or programming interface) and via custom EPSP-functions from the PX-4 (using native CP/M programs).

The management functions are (named by program):

  • PFDIR4 - List a directory of the SD-card root directory
  • PFMNT4 - Mount image files on the disk drives C:, D:, F:, G:)
  • PFWP4 - Set/reset a drive Write protect flag
  • PFNEW4 - Create a new, empty disk image.

The project is ongoing. Several items are on the ToDo list:

  • Support for PX-8 SD-card management,
  • Awareness for multiple slave devices; PFBDK now assumes to be the only device on the 'RS-232c bus', it should respond only to the addressed devices (one or two floppy terminals),
  • The board should support a chain function, allowing multiple options on the 'RS-232c bus'.

Power is supplied from a computer (allowing debug logging via the serial port) or an USB charger/power bank. There is no battery charge or  management on the PCB.

A planned new version of the PCB should include support for a proper CP/M NET RS232c bus. This means an extra chained RS-232c port.

PFBDK_promicro.kicad_sch_v1.1.pdf

An updated schema. The on-board RS-232c interface was never tested, but the ground is incorrectly connected to pin 1. The 1.0 version of the board has this fault. The correct pin is 5.

Adobe Portable Document Format - 63.18 kB - 12/20/2023 at 17:49

Preview

PFBDK_promicro.kicad_sch.pdf

This is a first production version. A PCB is created for this schema. This applies to the version 1.0 of the board. Note it has a problem with the RS232c ground pin, easy to correct during assembly.

Adobe Portable Document Format - 62.53 kB - 12/08/2023 at 20:54

Preview

PxDiskMega.kicad_sch.pdf

This is the prototype / development version. There is no PCB.

Adobe Portable Document Format - 61.96 kB - 12/08/2023 at 20:51

Preview

  • First version of the PX-8 tools

    fjkraan05/27/2026 at 06:40 0 comments

    The git repository (now at https://codeberg.org/electrickery/pfbdk) now has the sources for PX-8 PFBDK-management programs. Still rough and certainly not bug-free, but workable. These new programs use some simple library routines to keep the code relatively clean. And they use BDOS routines wherever possible. The idea is still to merge the programs with the PX-4 variants, but that is for later. There might be some spin-off programs later.

    Reading the ToDo-list, it is nice to see some progress is made. Apart from the PX-8 programs, the PFBDK-firmware now can used to emulate one or two disk terminals. This allows to use it with a real disk terminal (PF-10, TF-15, TF20) or a PC-based program (vfloppy) to make file transfers between media simpler.

    The daisy chain circuit is now also realized and tested. I do not plan to make a separate board for this, but integrate it into the next version of the PFBDK-Aurduino-micro board.

    The default configuration issue is still unrealized.


  • PFBDK and device chaining

    fjkraan04/12/2026 at 09:47 0 comments

    PX multi device serial interface in circuit

    For some time now I wanted to make native PX-4 and PX-8 programs to control the PFBDK devices, like listing and mounting different floppy-image selection, creating new ones and write protect images. There are some simple variants for the PX-4, but nut very user friendly or robust. The development cycle is too elaborate and fragile for my style of coding. It involves moving the SD-card between the PC and a PFBDK device. You have to have a PFBDK device connected to test software for it. This meand you cannot use a PC-based alternative like vfloppy to transfer programs between PC and the PX.

    The problem boiled down to two sub-problems; PFBDK and vfloppy simulating all four floppy drives in the two units, instead of just two drives in one unit. In this latter case, one could use an one-unit PFBDK for testing and a vfloppy based unit for file transfer. The other sub-problem is that neither PFBDK and the vfloppy serial cable supports device chaining as it is found on the original TF-20, TF-15 and PF-10 drive units.

    There is now a solution for both problems. On the software side new versions of PFBDK and vfloppy can be configured to respond to commands for just one device. On the hardware side, there is now a standalone device chain circuit allowing multiple devices on one serial port.
    The hardware part of the solution is temporary, as a future version of PFBDK will include an optional device chaining circuit. 
     
    CPM/NET

    The serial protocol used between PX-4/PX-8 and floppy devices is EPSP, a simplified version of CPM/NET. It involves a header message with a command, device selection and the size of the data to be transferred and a text message containing the actual data. Despite the name 'text message', the protocol is binary. So there are no unique characters signaling a specific stage in the protocol. Each device in the chain has to monitor the traffic to detect a new message directed to itself.

    The new software feature allows a device to be a passive monitor for messages directed to other devices.

    Serial chaining circuit.

    logicDeviceChaining.png

    The circuit is quite simple, but somewhat more complicated than an one-to-one connection. The output of the host PX-4 or PX-8 is received by all devices in the chain. The signal is bufferred and relayed to the next device. The output of each device is 
    ANDed with the output of the next device and forwarded to the host. This ANDing involves converting from RS-232c voltage levels to TTL, anding the two signals and converting the result back to RS-232c levels.

    Device selection

    Another modification made to PFBDK and vfloppy is the device selection. For PFBDK this means two internal jumpers control which of the two disk devices is active. For vfloppy this is realized with omitting the arguments for the disk images for the other device.

    PX-multiDeviceSerialInterfaceInside.jpg


    Note that this solution is only needed if you wan to connect multiple devices. For just a single PFBDK emulating four floppy drives it is not needed.

  • HX-20 support added

    fjkraan05/06/2025 at 18:09 0 comments

    Thanks to Robert Offner (https://forum.classic-computing.de/forum/index.php?thread/35779-epson-epsp-emulator-mit-arduino-tester-gesucht/&postID=540779#post540779, in German), PFBDK now also supports the HX-20 commands from Disk-BASIC. See the Github repository. This bumped the version to 2.0.0.

  • The ToDo list

    fjkraan12/10/2023 at 16:32 0 comments

    • Create PX-8 management tools. And maybe later universal tools for both. The PX-8 has a weird architecture with a main CPU, slave CPU and sub-CPU, but in the end it is just an other BIOS call.
    • Modify the PFBDK firmware to be selectable for one or two disk terminals. Each terminal has one (PF-10) or two (TF-20, TF-15) disk drives. Now PFBDK claims all four disk drives. Unknown is how it responds to other functions than floppy related.
    • Modify the hardware for a second serial port to daisy-chain to another device. Useful when the actual video   interface (Oval UD-80) becomes available. How the extra serial port is wired is visible in the PF-10 schema. The EPSP interface is an implementation of CP/M-NET, so historical relevant there too.
    • Change the program set to integrate the PFPW4 functionality into the PFMNT4 program.
    • The default configuration is having the four images D.IMG to G.IMG mounted. My idea/plan is to make a submit file changing this configuration on the default drive A:, but it didn't happen yet. The advantage is that no changes are needed to PFBDK and it uses standard CP/M tools.

View all 4 project logs

Enjoy this project?

Share

Discussions

Fezzler61 wrote 03/06/2024 at 17:05 point

I built one modeling Mr. Cooke's design too.  My friend theFugu improved it and it does all that plus load and saves individual files and can swap disk images.  That said, the BACKPACK Device (BPD+) now supports the EPSON PX-8 and HX-20.  Great stuff.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates