K&P SFD-800
Uno degli accessori piu necessari per la serie Sharp MZ e il venerabile controller per floppy disk. Questi sono relativamente rari poiche poche persone li utilizzavano, principalmente a causa del costo, durante l'era Sharp MZ.
Sharp commercializzo i propri controller, spesso basati sull'IC MB8866, che richiedeva molti circuiti di supporto. Alcuni produttori terzi svilupparono i propri progetti e uno di questi, realizzato da un'azienda ormai non piu esistente chiamata Kersten & Partners GmbH (K&P), proponeva un design molto piu semplice ma con le stesse funzionalita. Questo progetto utilizzava un IC controller per floppy disk Western Digital piu recente, il WD1773, che integrava gran parte dei circuiti che Sharp, usando l'MB8866, doveva collocare esternamente sulla scheda.
Mi sono imbattuto nella loro scheda SFD-800 quando ho acquistato un MZ-80B che includeva una scheda originale. Possedevo anche un MZ-800 e sono riuscito a scambiare la scheda tra le due macchine senza problemi. Man mano che la mia collezione di macchine Sharp MZ cresceva, avevo bisogno di controller per floppy disk per tutte le macchine e, poiche sono difficili da acquistare, ho deciso di replicare la scheda SFD-800.
Questa pagina illustra lo schema replicato, la logica GAL (WinCUPL), il circuito stampato (PCB) e le informazioni sui costi di produzione.
Schema
Lo schema proviene originariamente dal Manuale K&P SFD800, la cui decifrazione ha richiesto un certo impegno a causa della scarsa qualita della scansione. Questo schema e stato successivamente acquisito in KiCAD ed e mostrato di seguito.

Configurazione e compilazione automatizzate (consigliato)
| Script | Piattaforma | Note |
|---|---|---|
setup_SFD800.sh |
macOS / Linux | Installa Git + DOSBox, quindi clona e compila |
setup_SFD800_windows.cmd |
Windows 10 / 11 | Launcher da doppio clic per l’installer nativo |
setup_SFD800_windows_native.ps1 |
Windows 10 / 11 | winget Git + DOSBox (nativo, senza WSL/Docker) |
macOS / Linux — setup_SFD800.sh
chmod +x setup_SFD800.sh ./setup_SFD800.sh
Windows 10 / 11 — doppio clic su setup_SFD800_windows.cmd, oppure eseguire l’installer nativo da un prompt PowerShell:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass .\setup_SFD800_windows_native.ps1
SFD800.PLD come target g16v8s (GAL16V8) e scrive il file JEDEC in CUPL/SFD800.jed:
./build_cupl.sh # -> CUPL/SFD800.jed
| Variabile | Predefinito | Scopo |
|---|---|---|
SFD800_REPO_URL |
https://git.eaw.app/eaw/SFD800.git |
Repository da clonare |
SFD800_DIR |
(predefinito dello script) | Directory in cui clonare / da cui compilare |
SFD800_ASSUME_YES |
(non impostata) | Impostare a 1 per accettare tutti i prompt in modo non interattivo |
CUPL/SFD800.jed risultante usando un programmatore compatibile come un TL866 / XGecu. La sezione manuale GAL piu sotto documenta il sorgente CUPL e la logica per chiunque voglia compilarla manualmente.
GAL
Il componente originale utilizzato da K&P era un PAL, un dispositivo logico programmabile una sola volta con il fusibile di protezione attivato. Poiche il PAL e un dispositivo semplice – 12 ingressi, 8 uscite – sarebbe stato facile dedurre la logica tramite sondaggio. Dato che il progetto e in realta piuttosto semplice e avendo una vasta esperienza con i floppy disk maturata scrivendo i monitor RFS e TZFS, ho deciso di scrivere la logica da zero, basandomi sulle mie conoscenze.
Ho utilizzato WinCUPL per compilare il codice e ho testato il GAL sulla scheda originale K&P SFD800 per la verifica. Il codice e riportato di seguito e, come si puo vedere, si tratta semplicemente di decodifica degli indirizzi e creazione di linee di selezione.
Name SFD800 ;
PartNo PAL12L6 ;
Date 20/05/2021 ;
Revision 01 ;
Designer Philip Smart ;
Company engineers@work ;
Assembly SFD800 ;
Location ;
Device g16v8a;
/* *************** INPUT PINS *********************/
PIN 1 = A0 ; /* Address bus A0 */
PIN 2 = A1 ; /* A1 */
PIN 3 = A2 ; /* A2 */
PIN 4 = A3 ; /* A3 */
PIN 6 = A4 ; /* A4 */
PIN 7 = A5 ; /* A5 */
PIN 8 = A6 ; /* A6 */
PIN 9 = A7 ; /* A7 */
PIN 19 = IORQn ; /* Z80 IORQ active low */
PIN 11 = WRn ; /* Z80 WR active low */
PIN 12 = RDn ; /* Z80 RD active low */
PIN 5 = RESET ; /* System Reset active high */
/* *************** OUTPUT PINS *********************/
PIN 13 = BUSn ; /* BUS direction, low = read into Z80, high = write to FD IC's */
PIN 18 = FDCn ; /* WD1773 Chip Select active low I/O - Address 0xD8 .. 0xDB */
PIN 14 = DRIVEn ; /* Disk Drive Select active low - Address 0xDC */
PIN 17 = DDENn ; /* Drive Density select active low - Address 0xDE */
PIN 15 = RESn ; /* Peripheral Reset active low */
PIN 16 = SIDEn ; /* Disk Head Select active low - Address 0xDD */
/* Decoder equations. */
FIELD ADDR = [A7..A0];
WD1773SEL = !IORQn & ADDR:[D8..DB];
SIDESEL = !IORQn & !WRn & ADDR:[DD..DD];
DRIVESEL = !IORQn & !WRn & ADDR:[DC..DC];
DDENSEL = !IORQn & !WRn & ADDR:[DE..DE];
BUSREAD = !IORQn & !RDn & ADDR:[D8..DE];
/* Assign output pins based on equations. */
BUSn = !BUSREAD;
RESn = !RESET;
FDCn = !WD1773SEL;
SIDEn = !SIDESEL;
DRIVEn = !DRIVESEL;
DDENn = !DDENSEL;
Circuito stampato/PCB
Il circuito stampato differisce dall’originale in quanto ho utilizzato KiCAD invece di immagini disegnate a mano. Il vantaggio di KiCAD risiede nell’utilizzo di tecniche di routing piu moderne e riempimenti in rame.


Documentazione
Il link sopra permette di scaricare il manuale utente originale di K&P, redatto in tedesco. Il modo migliore per tradurlo e utilizzare lo smartphone, avviare l’app Google Translate, impostare la traduzione in tempo reale tramite fotocamera e selezionare la lingua Tedesco-><la vostra lingua>.
Prezzo
La tabella seguente illustra il costo di produzione di un circuito stampato. I prezzi non sono del tutto precisi poiche spesso bisogna acquistare in multipli di 10/50/100 e ammortizzare sul numero di schede prodotte. Scorrete verso destra per vedere tutti i dettagli della tabella.
| Reference(s) | Value | Qty | Price ea | Price | VAT | Total | LibPart | Footprint | Datasheet | Source |
|---|---|---|---|---|---|---|---|---|---|---|
| C1, C2, C3, C5, C6, C7, C8 | 100nF | 7 | £0.05 | £0.32 | £0.06 | £0.38 | Device:C_Small | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mm | ~ | https://uk.rs-online.com/web/p/mlccs-multilayer-ceramic-capacitors/1816538/ |
| C4 | 4.7uF 50V | 1 | £0.06 | £0.06 | £0.01 | £0.07 | Device:CP_Small | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mm | ~ | https://uk.rs-online.com/web/p/aluminium-capacitors/1766355/ |
| C9 | 15pF | 1 | £0.11 | £0.11 | £0.02 | £0.13 | Device:C_Small | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mm | ~ | https://uk.rs-online.com/web/p/mlccs-multilayer-ceramic-capacitors/1940566/?relevancy-data=7365617263685F636173636164655F6F726465723D31267365617263685F696E746572666163655F6E616D653D4931384E53656172636847656E65726963267365617263685F6C616E67756167655F757365643D656E267365617263685F6D617463685F6D6F64653D6D61746368616C6C7061727469616C267365617263685F7061747465726E5F6D6174636865643D5E5B5C707B4C7D5C707B4E647D2D2C2F255C2E5D2B24267365617263685F7061747465726E5F6F726465723D313333267365617263685F73745F6E6F726D616C697365643D59267365617263685F726573706F6E73655F616374696F6E3D267365617263685F747970653D4B4559574F52445F53494E474C455F414C5048415F4E554D45524943267365617263685F7370656C6C5F636F72726563745F6170706C6965643D59267365617263685F77696C645F63617264696E675F6D6F64653D4E4F4E45267365617263685F6B6579776F72643D4647323843304732413135304A4E543030267365617263685F6B6579776F72645F6170703D4647323843304732413135304A4E543030267365617263685F636F6E6669673D3026&searchHistory=%7B%22enabled%22%3Atrue%7D |
| C10 | 3.3nF | 1 | £0.11 | £0.11 | £0.02 | £0.13 | Device:C_Small | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mm | ~ | https://uk.rs-online.com/web/p/mlccs-multilayer-ceramic-capacitors/1940605/?relevancy-data=7365617263685F636173636164655F6F726465723D31267365617263685F696E746572666163655F6E616D653D4931384E53656172636847656E65726963267365617263685F6C616E67756167655F757365643D656E267365617263685F6D617463685F6D6F64653D6D61746368616C6C7061727469616C267365617263685F7061747465726E5F6D6174636865643D5E5B5C707B4C7D5C707B4E647D2D2C2F255C2E5D2B24267365617263685F7061747465726E5F6F726465723D313333267365617263685F73745F6E6F726D616C697365643D59267365617263685F726573706F6E73655F616374696F6E3D267365617263685F747970653D4B4559574F52445F53494E474C455F414C5048415F4E554D45524943267365617263685F7370656C6C5F636F72726563745F6170706C6965643D59267365617263685F77696C645F63617264696E675F6D6F64653D4E4F4E45267365617263685F6B6579776F72643D4647323858375232413333324B4E543030267365617263685F6B6579776F72645F6170703D4647323858375232413333324B4E543030267365617263685F636F6E6669673D3026&searchHistory=%7B%22enabled%22%3Atrue%7D |
| J1 | MZ-800 Bus | 1 | £0.00 | £0.00 | £0.00 | SFD800:Ext_Bus_MZ800 | Connector_PCBEdge:BUS_MZ800 | https://en.wikipedia.org/wiki/Industry_Standard_Architecture | ||
| J2 | FDC-34 | 1 | £6.13 | £6.13 | £6.13 | Connector_Generic:Conn_02x17_Odd_Even | Connector_IDC:IDC-Header_2x17_P2.54mm_Horizontal_Lock | ~ | https://uk.rs-online.com/web/p/idc-connectors/1625768/ | |
| R1, R2 | 560R | 2 | £0.02 | £0.05 | £0.01 | £0.06 | Device:R_Small | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_Horizontal | ~ | https://uk.rs-online.com/web/p/through-hole-fixed-resistors/7078209/ |
| RN1 | 330R | 1 | £0.15 | £0.15 | £0.03 | £0.17 | Device:R_Network05 | Resistor_THT:R_Array_SIP6 | http://www.vishay.com/docs/31509/csc.pdf | https://uk.rs-online.com/web/p/resistor-networks-resistor-arrays/5223523/ |
| U1 | 74LS06 | 1 | £0.53 | £0.53 | £0.53 | 74xx:74LS06 | Package_DIP:DIP-14_W7.62mm | http://www.ti.com/lit/gpn/sn74LS06 | https://www.ebay.co.uk/itm/164768071881 | |
| U2 | 74LS04 | 1 | £0.60 | £0.60 | £0.60 | 74xx:74LS04 | Package_DIP:DIP-14_W7.62mm | http://www.ti.com/lit/gpn/sn74LS04 | https://www.ebay.co.uk/itm/271156206149 | |
| U3 | PAL12L6 | 1 | £1.29 | £1.29 | £1.29 | SFD800:PAL12L6 | Package_DIP:DIP-20_W7.62mm | https://www.ebay.co.uk/itm/274791322822 | ||
| U4 | 74LS14 | 1 | £0.30 | £0.30 | £0.30 | 74xx:74LS14 | Package_DIP:DIP-14_W7.62mm | http://www.ti.com/lit/gpn/sn74LS14 | https://www.ebay.co.uk/itm/310597511398 | |
| U5, U6 | 74LS74 | 2 | £1.49 | £2.98 | £2.98 | 74xx:74LS74 | Package_DIP:DIP-14_W7.62mm | 74xx/74hc_hct74.pdf | https://www.ebay.co.uk/itm/261370707740 | |
| U7, U8 | 74LS242 | 2 | £0.60 | £1.20 | £1.20 | 74xx:74LS242 | Package_DIP:DIP-14_W7.62mm | http://www.ti.com/lit/gpn/sn74LS242 | https://www.ebay.co.uk/itm/310597509060 | |
| U9 | WD1773 | 1 | £6.29 | £6.29 | £6.29 | MZ80-80CLR:WD1773 | Package_DIP:DIP-28_W15.24mm | https://amaus.net/static/S100/western%20digital/datasheet/Western%20Digital%20FD1771%20Specification%20197710.pdf | https://www.ebay.co.uk/itm/273156696548 | |
| U10 | 74LS175 | 1 | £0.88 | £0.88 | £0.88 | 74xx:74LS175 | Package_DIP:DIP-16_W7.62mm | http://www.ti.com/lit/gpn/sn74LS175 | https://www.ebay.co.uk/itm/261370708352 | |
| U11 | 74LS145 | 1 | £0.61 | £0.61 | £0.61 | 74xx:74LS145 | Package_DIP:DIP-16_W7.62mm | http://www.ti.com/lit/gpn/sn74LS145 | https://www.ebay.co.uk/itm/233948995720 | |
| Y1 | 16MHz | 1 | £0.26 | £0.26 | £0.05 | £0.31 | Device:Crystal_Small | Crystal:Crystal_HC18-U_Horizontal | ~ | https://uk.rs-online.com/web/p/crystal-units/6720299/?relevancy-data=7365617263685F636173636164655F6F726465723D31267365617263685F696E746572666163655F6E616D653D4931384E53656172636847656E65726963267365617263685F6C616E67756167655F757365643D656E267365617263685F6D617463685F6D6F64653D6D61746368616C6C7061727469616C267365617263685F7061747465726E5F6D6174636865643D5E5B5C707B4C7D5C707B4E647D2D2C2F255C2E5D2B24267365617263685F7061747465726E5F6F726465723D313333267365617263685F73745F6E6F726D616C697365643D59267365617263685F726573706F6E73655F616374696F6E3D267365617263685F747970653D4B4559574F52445F53494E474C455F414C5048415F4E554D45524943267365617263685F7370656C6C5F636F72726563745F6170706C6965643D59267365617263685F77696C645F63617264696E675F6D6F64653D4E4F4E45267365617263685F6B6579776F72643D4855532D31362E3030302D31382D33302F35302F34303835267365617263685F6B6579776F72645F6170703D4855532D31362E3030302D31382D33302F35302F34303835267365617263685F636F6E6669673D3026&searchHistory=%7B%22enabled%22%3Atrue%7D |
| Socket 1 | 28 pin | 1 | £0.35 | £0.35 | £0.07 | £0.42 | 28 Pin Socket | https://uk.rs-online.com/web/p/dil-sockets/6742454 | ||
| Socket 2 | 20 pin | 1 | £0.24 | £0.24 | £0.05 | £0.28 | 20 Pin Socket | https://uk.rs-online.com/web/p/dil-sockets/6742444 | ||
| PCB | 1 | £4.93 | £4.93 | £4.93 | ||||||
| Total | £27.68 |
File
Consultate Gitea per tutti i file del progetto.
Riconoscimenti
La nuova scheda e elettricamente equivalente all'originale, differendo solo nel posizionamento dei componenti (due IC scambiati), nel layout del circuito stampato e nell'uso di un GAL16V8 al posto del PAL12L6 originale. Le equazioni logiche del GAL sono state scritte da zero sulla base della conoscenza dell'interfaccia FDC WD1773.
Licenze
La licenza pubblica generale GNU v3
I file sorgente sono distribuiti nella speranza che siano utili, ma SENZA ALCUNA GARANZIA; senza neppure la garanzia implicita di COMMERCIABILITA o IDONEITA PER UN PARTICOLARE SCOPO. Consultate la Licenza Pubblica Generale GNU per maggiori dettagli.
Dovreste aver ricevuto una copia della Licenza Pubblica Generale GNU insieme a questo programma. In caso contrario, consultate http://www.gnu.org/licenses/.