# ZX-EQ Nemo-bus Edition (Universal CPLD)

## Spectrolyzer Cartridge for ZX Spectrum. Based on the RBSC architecture.

> [English](README.en.md) | [Русский](README.md)  

**ZX-EQ** is a hardware audio spectrum analyzer (expansion cartridge) designed for the ZX Spectrum computer family, heavily inspired by the original hardware design developed by the **RBSC** team. The device visualizes music frequencies and notes in real time during games and demo-scene playbacks using multi-segment LED bars.

The core processor of the cartridge is an Altera/Intel MAX CPLD chip housed in a **TQFP-100** package.

*Important Note:* This repository is based on the official [RBSC/ZX-EQ](https://github.com/RBSC/ZX-EQ) project documentation. All enhancements, structural modifications, and edge-connector changes have been executed with strict respect to the original authors.

***

## Key Hardware Upgrades

1. **Nemo-bus Form Factor:** The printed circuit board is designed to plug directly into the standard Nemo-bus expansion slots found on modern clones and upgraded vintage motherboards (such as the ZX-Evolution, Scorpion ZS-256, Kay, and ZXM-Phoenix).
2. **Multi-CPLD Architecture:** The PCB power distribution lines and logic paths have been redesigned to be multi-voltage tolerant. This allows you to choose between two different generations of Altera/Intel CPLD chips in the TQFP-100 package:
    *   **Altera MAX 7000S:** EPM7128STC100 / EPM7160STC100 (Native +5V core logic).
    *   **Altera MAX 3000A:** EPM3128ATC100 (+3.3V core logic, featuring 5V-tolerant input pins perfectly safe for the Nemo-bus lines).

***

## Bill of Materials (BOM) & Jumper Configuration

Depending on which CPLD chip family you choose to solder, you must adjust the onboard power circuitry configuration:

### Option A: Using the EPM3128ATC100 (+3.3V CPLD)
*   **Voltage Regulator:** You **MUST** solder a 3.3V LDO regulator chip (such as the LT1117-3.3) onto the board to feed the low-voltage CPLD core.
*   **Power Jumper (JP1):** Must be left completely **OPEN** (un-soldered).
*   **Firmware:** Use a `.pof` or `.jed` binary compiled specifically for the MAX3000A family.

### Option B: Using the EPM7128STC100 / EPM7160STC100 (+5V CPLD)
*   **Voltage Regulator:** Not required. You can safely skip soldering the LDO regulator along with its input/output filter capacitors `C3` and `C4`.
*   **Power Jumper (JP1):** Must be **SHORTED** (soldered closed) to route raw 5V power straight to the CPLD power pins.
*   **Firmware:** Flash the original RBSC `.pof` binary compiled for the MAX7000S family.

***

## CPLD Firmware Programming

Thanks to the universal power distribution layout, this project natively supports firmware code targeting different Altera/Intel CPLD generations. 

This repository includes custom modifications and provides full, seamless integration with the **alternative firmware repository by [andykarpov/zx-eq-firmware](https://github.com/andykarpov/zx-eq-firmware)**. This third-party code branch vastly broadens the choice of compatible LED bar components and pin polarities.

### Available Firmware Binaries
Please browse the [/Firmware](Firmware) folder of this repository. Select the specific `.pof`/`.jed` file that exactly matches your soldered CPLD model, your specific LED segment bar configuration, and desired polarity.

### JTAG Programming Steps
1. Connect an **Altera USB Blaster** (or equivalent hardware programmer) to the onboard 10-pin JTAG header.
2. Provide power to the cartridge either by plugging it into a powered Nemo-bus slot or using an external +5V desktop power supply.
3. Open the **Quartus Programmer** software tool, scan for the JTAG chain, select your chosen `.pof` file, check the `Program/Configure` option, and press **Start**.

---

## 🎨 Hardware Gallery & PCB Renders

Visual project documentation, high-definition photographs of assembled devices, and 3D PCB renders can be found inside the [/Foto](Foto) directory.

---

## 👥 Credits & Acknowledgments

*   **RBSC (Retro-Computers Breeding Society)** — Authors of the original circuit diagram, Core Spectrum analyzer hardware logic, and general cartridge concept.
*   **Andrey Karpov (andykarpov)** — Author of the excellent alternative firmware optimization branch featuring robust 8-bit scale controls and flexible LED pin polarity configuration.

---

## 📜 Disclaimer and Licensing Terms

In absolute accordance with the open-source distribution rules established by the original authors (RBSC):
*   This project files are provided **"AS IS"**, without any warranties of any kind, explicit or implied.
*   ⚠️ **STRICTLY NOT FOR COMMERCIAL USE!** Fabricating a small batch of PCBs and selling the excess unpopulated blank boards to local hobbyists solely to cover your manufacturing costs is perfectly fine. However, any large-scale, automated commercial production or commercial kit distribution **requires explicit, prior written approval** from the RBSC team.
