SharpKey Interfaccia Multi-HID Guida al Firmware

Panoramica


Un problema importante con i computer Sharp vintage e la mancanza di tastiere. La maggior parte delle macchine MZ-2500/2800/3500/X1/X68000 viene venduta senza tastiera. Senza tastiera la macchina e inutilizzabile.

Sviluppatori giapponesi (classicpc.org, Youkan) e Martin hanno sviluppato interfacce per convertire tastiere PS/2 o USB. Il MZ-2500 utilizza una matrice tastiera simile al MZ-80B, serializzata su un bus a 4 bit tra unita principale e tastiera.

Protocollo tastiera MZ-2500

L’interfaccia hardware comprende 7 segnali, 5V e GND con connettore mini-DIN a 8 pin schermato.

KeyboardPinout

Segnale Direzione Stato logico Descrizione
RTSN
Row Strobe
Main Unit -> Keyboard HIGH (‘1’) Indirizzo riga trasmesso.
    LOW (‘0’) La tastiera trasmette i dati.
KD4
Type Strobe
Main Unit -> Keyboard HIGH (‘1’) Dati matriciali effettivi.
    LOW (‘0’) AND logico di tutti i tasti.
MPX
Nibble MUX Strobe
Main Unit -> Keyboard HIGH (‘1’) Nibble superiore.
    LOW (‘0’) Nibble inferiore.
KD[3:0]
Bi-dir bus
Main Unit -> Keyboard   Numero riga a 4 bit.
  Keyboard -> Main Unit   4 bit dei dati colonna.

Due modalita: STROBEALL e recupero dati tasto. Protocollo dettagliato nella versione inglese.

MZ2500 Keyboard Protocol 1 MZ2500 Keyboard Protocol 2 MZ2500 Keyboard Protocol 3 MZ2500 Keyboard Protocol 5 MZ2500 Keyboard Protocol 6 MZ2500 Keyboard Protocol 4 KeyboardHardware MainUnitKeyboardHardware

Protocollo tastiera MZ-2800

Il MZ-2800 e il successore del MZ-2500 con modalita Z80 8 bit e modalita 80286 16 bit. Protocollo simile ma con timing diversi e aggiunta di una 14a riga.

MZ2800 Keyboard Protocol 2 Timing Key Read MZ2800 Keyboard Protocol 1 KeyboardHardware MainUnitKeyboardHardware


ESP-32S AI Thinker

L'interfaccia e basata su un SoC ESP-32S dual-core con FreeRTOS. Un core e dedicato all'interfaccia MZ-2500 mentre l'altro gestisce i codici PS/2 e costruisce una matrice virtuale.

Schema elettrico

Schematic

Circuito stampato

PCB PCB Top View PCB Bottom View

Interfaccia assemblata

1 1 1 1 1

Interfaccia MZ-2800 assemblata

1 4 8

Firmware

Il firmware e scritto con il sistema di build Espressif IDF (gcc(++), git, CMake, Ninja) in C/C++.

Setup e build automatizzati (consigliato)

Il modo consigliato per compilare il firmware SharpKey e lo script di setup autonomo per la propria piattaforma. Installa la toolchain (ESP-IDF v4.4), clona il repository (con i submodule) e puo compilare il firmware — il tutto in modo interattivo, con valori predefiniti ragionevoli che potete accettare premendo Invio. Ogni script e autonomo: copiate il singolo file relativo alla vostra piattaforma ed eseguitelo.

macOS / Linux / WSL — setup_SharpKey.sh

chmod +x setup_SharpKey.sh
./setup_SharpKey.sh
Lo script rileva automaticamente il sistema operativo e preferisce una build Docker usando l'immagine fissata espressif/idf:v4.4 (~3 GB di download una tantum) — nessuna toolchain sull'host, identica ovunque. Se Docker non e disponibile, ripiega su un'installazione ESP-IDF v4.4 nativa (Python 3.8–3.11, CMake, Ninja, ecc. tramite apt/dnf/pacman o Homebrew su macOS). Su Linux/WSL puo installare Docker Engine per voi.

Windows 10 / 11 — setup_SharpKey_windows.ps1 (nativo — senza WSL, senza Docker). Da un prompt PowerShell (va bene un prompt utente normale; winget potrebbe richiedere l’elevazione):

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\setup_SharpKey_windows.ps1
Lo script Windows usa winget per installare Git e — se il vostro Python predefinito e 3.12+ o assente — Python 3.10 in un venv isolato (il vostro Python resta intatto). Quindi clona e installa la toolchain ESP-IDF v4.4 nativa per Windows di Espressif e compila il firmware. Richiede il Microsoft App Installer (che fornisce winget).

Domande poste dal setup, e cosa fare. Ogni richiesta ha un valore predefinito sicuro tra parentesi — la lettera maiuscola e il valore predefinito, quindi premendo Invio lo si accetta.

macOS / Linux / WSL (setup_SharpKey.sh):

Richiesta Predefinito Cosa fare
Install Docker Engine now? [Y/n] (solo Linux/WSL, se Docker manca) Si Invio per installare Docker (potrebbe servire sudo), oppure n per usare invece la toolchain ESP-IDF nativa.
Install now? [Y/n] (per pacchetti OS / ESP-IDF mancanti) Si Invio — installa gli strumenti mancanti tramite apt/dnf/pacman o Homebrew; potrebbe richiedere sudo.
Repo URL [https://git.eaw.app/eaw/SharpKey.git] repo pubblico Invio per il repo pubblico, oppure incollare un URL diverso (ad es. un repo di sviluppo privato).
Install directory [~/SharpKey] (in fase di clonazione) ~/SharpKey Invio per ~/SharpKey, oppure digitare un percorso.
Remove <dir> and re-clone? [y/N] (solo se quella directory contiene un repo diverso o incompleto) No y solo se siete sicuri; altrimenti N e scegliere un’altra directory.
Build the SharpKey firmware now? [Y/n] Si Invio per compilare subito (verifica l’ambiente).

Windows (setup_SharpKey_windows.ps1):

Richiesta Predefinito Cosa fare
Repo URL [https://git.eaw.app/eaw/SharpKey.git] repo pubblico Invio per il repo pubblico, oppure incollare un URL diverso.
SharpKey checkout directory [%USERPROFILE%\SharpKey] %USERPROFILE%\SharpKey Invio per il valore predefinito, oppure digitare un percorso.
Build the SharpKey firmware now? [Y/n] Si Invio per compilare subito.
Per esecuzioni non presidiate entrambi gli script rispettano le variabili d'ambiente: impostate SHARPKEY_REPO_URL per scegliere il repository senza che venga richiesto, e (macOS/Linux/WSL) impostate SHARPKEY_BUILD su docker o native per forzare il metodo di build.

Output e ricompilazione. Una build riuscita scrive il firmware in build/main.bin (con una copia versionata in release/ su macOS/Linux). Per ricompilare in seguito senza rieseguire lo script di setup:

# Docker (macOS / Linux / WSL)
docker run --rm -it -v "$PWD":/project -w /project espressif/idf:v4.4 idf.py build

# ESP-IDF nativo (macOS / Linux)
. "$IDF_PATH/export.sh" && idf.py build

# Windows (ESP-IDF nativo, da una nuova PowerShell)
& "$HOME\esp\esp-idf-v4.4\export.ps1"; idf.py build

Build con Docker

docker run --rm -v $PWD:/project -w /project espressif/idf:v4.4 idf.py build

Integrazione continua (Jenkins)

Il progetto utilizza Jenkins per build automatici. Vedere la Guida Sviluppatori FusionX.

Utilizzo

MZ-2500 Keyboard Wyse KB-3926 Keyboard

Hot Key Modalita
ALT+F1 Mappatura tastiera MZ-2500
ALT+F2 Mappatura tastiera MZ-2000
ALT+F3 Mappatura tastiera MZ-80B

Prezzi

Vedere la versione inglese per le tabelle dei prezzi.


Ringraziamenti

L'ambiente di sviluppo Espressif IDF e i materiali di riferimento ESP-32S sono stati utilizzati.

Licenze

Questo progetto e sotto licenza GNU Public Licence v3. Nessun uso commerciale senza autorizzazione.

Avviso normative wireless

Questo dispositivo incorpora un modulo ESP32-S pre-certificato nella banda ISM 2,4 GHz. E responsabilita del costruttore garantire la conformita.