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.

Schema

Configurazione e compilazione automatizzate (consigliato)

La logica GAL dell'SFD-800 puo essere compilata da un unico script di configurazione autonomo per la propria piattaforma. Lo script installa gli strumenti richiesti — Git e DOSBox — clona il repository se necessario e puo eseguire la compilazione per voi, con valori predefiniti sensati che si possono accettare premendo Enter. La scheda utilizza un singolo Lattice GAL16V8 la cui logica viene compilata da CUPL 4.0a in esecuzione sotto DOSBox; non c'e alcuna VM, container o toolchain ospitata da installare. Questo e il modo piu semplice per compilare; la sezione manuale GAL piu sotto e mantenuta come riferimento e per chi desidera compilare o modificare la logica manualmente.
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
Una volta installati gli strumenti, si puo ricompilare in qualsiasi momento eseguendo direttamente la build CUPL. Compila SFD800.PLD come target g16v8s (GAL16V8) e scrive il file JEDEC in CUPL/SFD800.jed:
./build_cupl.sh      # -> CUPL/SFD800.jed
Le seguenti variabili d'ambiente sovrascrivono i valori predefiniti se occorre compilare in modo non interattivo o da un fork:
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
Programmare un GAL16V8 con il file 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.

Schema Schema

PCB lato superiore PCB lato inferiore

Documentazione

Manuale K&P SFD800

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)ValueQtyPrice eaPriceVATTotalLibPartFootprintDatasheetSource
C1, C2, C3, C5, C6, C7, C8100nF7£0.05£0.32£0.06£0.38Device:C_SmallCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mm~https://uk.rs-online.com/web/p/mlccs-multilayer-ceramic-capacitors/1816538/
C44.7uF 50V1£0.06£0.06£0.01£0.07Device:CP_SmallCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mm~https://uk.rs-online.com/web/p/aluminium-capacitors/1766355/
C915pF1£0.11£0.11£0.02£0.13Device:C_SmallCapacitor_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
C103.3nF1£0.11£0.11£0.02£0.13Device:C_SmallCapacitor_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
J1MZ-800 Bus1£0.00£0.00 £0.00SFD800:Ext_Bus_MZ800Connector_PCBEdge:BUS_MZ800https://en.wikipedia.org/wiki/Industry_Standard_Architecture 
J2FDC-341£6.13£6.13 £6.13Connector_Generic:Conn_02x17_Odd_EvenConnector_IDC:IDC-Header_2x17_P2.54mm_Horizontal_Lock~https://uk.rs-online.com/web/p/idc-connectors/1625768/
R1, R2560R2£0.02£0.05£0.01£0.06Device:R_SmallResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_Horizontal~https://uk.rs-online.com/web/p/through-hole-fixed-resistors/7078209/
RN1330R1£0.15£0.15£0.03£0.17Device:R_Network05Resistor_THT:R_Array_SIP6http://www.vishay.com/docs/31509/csc.pdfhttps://uk.rs-online.com/web/p/resistor-networks-resistor-arrays/5223523/
U174LS061£0.53£0.53 £0.5374xx:74LS06Package_DIP:DIP-14_W7.62mmhttp://www.ti.com/lit/gpn/sn74LS06https://www.ebay.co.uk/itm/164768071881
U274LS041£0.60£0.60 £0.6074xx:74LS04Package_DIP:DIP-14_W7.62mmhttp://www.ti.com/lit/gpn/sn74LS04https://www.ebay.co.uk/itm/271156206149
U3PAL12L61£1.29£1.29 £1.29SFD800:PAL12L6Package_DIP:DIP-20_W7.62mm https://www.ebay.co.uk/itm/274791322822
U474LS141£0.30£0.30 £0.3074xx:74LS14Package_DIP:DIP-14_W7.62mmhttp://www.ti.com/lit/gpn/sn74LS14https://www.ebay.co.uk/itm/310597511398
U5, U674LS742£1.49£2.98 £2.9874xx:74LS74Package_DIP:DIP-14_W7.62mm74xx/74hc_hct74.pdfhttps://www.ebay.co.uk/itm/261370707740
U7, U874LS2422£0.60£1.20 £1.2074xx:74LS242Package_DIP:DIP-14_W7.62mmhttp://www.ti.com/lit/gpn/sn74LS242https://www.ebay.co.uk/itm/310597509060
U9WD17731£6.29£6.29 £6.29MZ80-80CLR:WD1773Package_DIP:DIP-28_W15.24mmhttps://amaus.net/static/S100/western%20digital/datasheet/Western%20Digital%20FD1771%20Specification%20197710.pdfhttps://www.ebay.co.uk/itm/273156696548
U1074LS1751£0.88£0.88 £0.8874xx:74LS175Package_DIP:DIP-16_W7.62mmhttp://www.ti.com/lit/gpn/sn74LS175https://www.ebay.co.uk/itm/261370708352
U1174LS1451£0.61£0.61 £0.6174xx:74LS145Package_DIP:DIP-16_W7.62mmhttp://www.ti.com/lit/gpn/sn74LS145https://www.ebay.co.uk/itm/233948995720
Y116MHz1£0.26£0.26£0.05£0.31Device:Crystal_SmallCrystal:Crystal_HC18-U_Horizontal~https://uk.rs-online.com/web/p/crystal-units/6720299/?relevancy-data=7365617263685F636173636164655F6F726465723D31267365617263685F696E746572666163655F6E616D653D4931384E53656172636847656E65726963267365617263685F6C616E67756167655F757365643D656E267365617263685F6D617463685F6D6F64653D6D61746368616C6C7061727469616C267365617263685F7061747465726E5F6D6174636865643D5E5B5C707B4C7D5C707B4E647D2D2C2F255C2E5D2B24267365617263685F7061747465726E5F6F726465723D313333267365617263685F73745F6E6F726D616C697365643D59267365617263685F726573706F6E73655F616374696F6E3D267365617263685F747970653D4B4559574F52445F53494E474C455F414C5048415F4E554D45524943267365617263685F7370656C6C5F636F72726563745F6170706C6965643D59267365617263685F77696C645F63617264696E675F6D6F64653D4E4F4E45267365617263685F6B6579776F72643D4855532D31362E3030302D31382D33302F35302F34303835267365617263685F6B6579776F72645F6170703D4855532D31362E3030302D31382D33302F35302F34303835267365617263685F636F6E6669673D3026&searchHistory=%7B%22enabled%22%3Atrue%7D
Socket 128 pin1£0.35£0.35£0.07£0.4228 Pin Socket  https://uk.rs-online.com/web/p/dil-sockets/6742454
Socket 220 pin1£0.24£0.24£0.05£0.2820 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

Il design e la scheda originali sono copyright 1985 Kersten & Partners GmbH di Aquisgrana, Germania, un'azienda che ha da allora cessato l'attivita. Sono stati fatti tentativi per contattarli al loro ultimo indirizzo conosciuto per ottenere il permesso di riproduzione, ma non e stata ricevuta alcuna risposta.

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

Questo design, hardware e software, e concesso in licenza sotto la GNU Public Licence v3.

La licenza pubblica generale GNU v3

I file sorgente e binari in questo progetto contrassegnati come GPL v3 sono software libero: potete redistribuirli e/o modificarli secondo i termini della Licenza Pubblica Generale GNU come pubblicata dalla Free Software Foundation, sia la versione 3 della Licenza, sia (a vostra scelta) qualsiasi versione successiva.

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/.