{"id":11551,"date":"2026-11-04T17:26:30","date_gmt":"2026-11-04T16:26:30","guid":{"rendered":"https:\/\/retrofixer.it\/?page_id=11551"},"modified":"2026-11-04T17:26:30","modified_gmt":"2026-11-04T16:26:30","slug":"riparazione-drive-commodore","status":"publish","type":"page","link":"https:\/\/retrofixer.it\/en\/riparazione-drive-commodore\/","title":{"rendered":"Commodore floppy drive repair"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"11551\" class=\"elementor elementor-11551\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-daef116 e-con-full e-flex e-con e-parent\" data-id=\"daef116\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ee67012 elementor-widget elementor-widget-html\" data-id=\"ee67012\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<!--\n  RETRO FIXER - Riparare i floppy drive Commodore (PET, 1541, 1541-II, 1571, 1581)\n  File generato da drive\/build.py: modificare drive\/template.html o drive\/dati.js, non questo file.\n  Bilingue: i testi sono coppie [italiano, english] e la lingua segue <html lang>.\n-->\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Press+Start+2P&family=VT323&family=Inter:wght@400;500;600;700&display=swap\" rel=\"stylesheet\">\n\n<style>\n.rfd{\n  --bg:#0f0c24; --bg2:#171338; --panel:#1d1846; --line:#342c74; --text:#eceaff; --muted:#aaa5d8;\n  --c64:#3e31a2; --c64l:#7c70da; --ink:#b3abff; --mag:#e0398a; --yel:#ffd23f; --grn:#5ad15f; --cya:#3fd8ff; --ora:#f8961e; --red:#f94144;\n  font-family:'Inter',system-ui,-apple-system,Segoe UI,Roboto,sans-serif; color:var(--text); background:var(--bg); line-height:1.55;\n  position:relative; padding:44px 0 70px; overflow:hidden;\n}\n.rfd *,.rfd *::before,.rfd *::after{box-sizing:border-box}\n.rfd h2,.rfd h3,.rfd h4,.rfd p,.rfd ul,.rfd ol{margin:0;padding:0}\n.rfd h2,.rfd h3,.rfd h4{font-family:'Inter',system-ui,sans-serif!important;letter-spacing:0;text-transform:none;font-weight:700}\n.rfd a{color:inherit;text-decoration:none}\n.rfd button,.rfd input,.rfd select{font:inherit;color:inherit}\n.rfd button{cursor:pointer}\n.rfd .opt,.rfd .res,.rfd .sym,.rfd .acc>button{justify-content:flex-start!important;text-align:left!important}\n.rfd .ic{display:block!important;text-align:left!important;height:auto!important;line-height:1.3!important}\n.rfd [hidden]{display:none!important}\n.rfd .wrap{max-width:1200px;margin:0 auto;padding:0 20px}\n.rfd .stripe{height:6px;background:linear-gradient(90deg,var(--red) 0 16.6%,var(--ora) 0 33.3%,var(--yel) 0 50%,var(--grn) 0 66.6%,var(--cya) 0 83.3%,var(--c64l) 0);position:absolute;left:0;right:0;top:0}\n.rfd .kicker{display:inline-block;font-family:'Press Start 2P',monospace;font-size:10px;color:var(--yel);letter-spacing:.06em;margin-bottom:12px}\n.rfd .h2{font-family:'Press Start 2P',monospace!important;font-size:clamp(17px,2.4vw,26px);line-height:1.45;color:#fff;text-shadow:3px 3px 0 #000;margin-bottom:10px;font-weight:400}\n.rfd .h3{font-family:'Press Start 2P',monospace!important;font-size:clamp(13px,1.6vw,16px);line-height:1.5;color:#fff;margin-bottom:8px;font-weight:400}\n.rfd .sub{color:var(--muted);font-size:15.5px;max-width:760px}\n.rfd .sub b{color:#fff}\n.rfd section{margin-top:56px;scroll-margin-top:90px}\n.rfd .head{margin-bottom:20px}\n\n\/* intestazione *\/\n.rfd .top{display:flex;gap:24px;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;margin-bottom:22px}\n.rfd .lcd{font-family:'VT323',monospace;font-size:24px;line-height:1.05;color:var(--grn);background:#05040f;border:2px solid #000;border-radius:8px;padding:10px 14px;text-shadow:0 0 6px rgba(90,209,95,.6);white-space:nowrap}\n.rfd .lcd small{font-size:17px;color:#3f8f43;display:block}\n.rfd .nav{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}\n.rfd .nav a{font-size:13px;font-weight:600;color:var(--muted);border:2px solid var(--line);background:var(--panel);border-radius:999px;padding:6px 12px;transition:color .15s,border-color .15s}\n.rfd .nav a:hover{color:#fff;border-color:var(--c64l)}\n\n\/* scelta del drive *\/\n.rfd .mach{display:flex;flex-wrap:wrap;align-items:center;gap:10px 12px;margin-bottom:26px;padding:12px 14px;background:var(--bg2);border:2px solid var(--line);border-radius:14px}\n.rfd .mach-t{font-family:'Press Start 2P',monospace;font-size:9px;line-height:1.6;color:var(--yel);width:100%}\n.rfd .mach-l{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;width:100%}\n.rfd .mach button{display:flex;flex-direction:column;align-items:center;gap:6px;background:var(--panel);border:2px solid var(--line);border-radius:10px;padding:10px 6px 9px;text-align:center;transition:transform .15s,border-color .15s,box-shadow .15s}\n.rfd .mach button:hover,.rfd .mach button:focus-visible{transform:translateY(-2px);border-color:var(--c64l);outline:0}\n.rfd .mach button.on{border-color:var(--yel);background:#2a2350;box-shadow:0 0 0 2px rgba(255,210,63,.25)}\n.rfd .mach svg{width:100%;max-width:120px;height:46px;filter:drop-shadow(0 2px 0 #000)}\n.rfd .mach b{display:block;font-family:'Press Start 2P',monospace;font-size:9.5px;color:#fff;font-weight:400;line-height:1.4}\n.rfd .mach small{display:block;font-size:11px;color:var(--muted);line-height:1.3}\n.rfd .dinfo{margin:-12px 0 24px;background:var(--panel);border:2px solid var(--line);border-left:6px solid var(--yel);border-radius:12px;padding:12px 16px;font-size:14.5px;color:#dcd8f6}\n.rfd .dinfo b{color:#fff}\n\n\/* ricerca *\/\n.rfd .term{background:var(--c64);border:10px solid var(--c64l);border-radius:12px;padding:12px 16px;box-shadow:0 0 0 3px #000,0 18px 40px rgba(0,0,0,.45);position:relative}\n.rfd .term::after{content:\"\";position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,rgba(0,0,0,.14) 0 1px,transparent 1px 3px)}\n.rfd .term label{display:block;font-family:'VT323',monospace;font-size:20px;color:var(--ink)}\n.rfd .qrow{display:flex;align-items:center;gap:10px}\n.rfd .qrow span{font-family:'VT323',monospace;font-size:28px;color:#fff}\n.rfd .q{flex:1;min-width:0;background:transparent;border:0;outline:0;font-family:'VT323',monospace!important;font-size:28px;color:#fff;caret-color:#fff;padding:2px 0;text-transform:uppercase}\n.rfd .q::placeholder{color:#8e86e0;text-transform:none}\n.rfd .results{display:grid;gap:6px;margin-top:10px}\n.rfd .res{display:flex;gap:10px;align-items:center;background:var(--panel);border:2px solid var(--line);border-radius:10px;padding:10px 12px;color:#fff;font-size:14px}\n.rfd .res:hover,.rfd .res:focus-visible{border-color:var(--yel);outline:0}\n.rfd .res .tp{font-family:'Press Start 2P',monospace;font-size:7px;padding:4px 6px;border-radius:4px;background:var(--c64l);color:#15102e;flex:none}\n.rfd .res .tp.c{background:var(--grn)}\n.rfd .res .tp.g{background:var(--cya)}\n\n\/* LED all'accensione *\/\n.rfd .leds{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}\n.rfd .lcard{display:flex;flex-direction:column;gap:10px;background:var(--panel);border:2px solid var(--line);border-radius:12px;padding:12px;transition:transform .18s,border-color .18s}\n.rfd .lcard:hover,.rfd .lcard:focus-visible{transform:translateY(-4px);border-color:var(--yel);outline:0}\n.rfd .front{position:relative;height:74px;border-radius:8px;background:linear-gradient(#cfc6ae,#b5ab90);box-shadow:inset 0 -6px 0 rgba(0,0,0,.18),0 3px 0 #000;overflow:hidden}\n.rfd .front.dark{background:linear-gradient(#5d5a52,#46443e)}\n.rfd .front .slot{position:absolute;left:12%;right:12%;top:30px;height:7px;border-radius:3px;background:#1a1712;box-shadow:inset 0 2px 0 #000}\n.rfd .front .door{position:absolute;left:46%;top:16px;width:8%;height:34px;border-radius:3px;background:rgba(0,0,0,.22)}\n.rfd .front .lamp{position:absolute;top:56px;width:16px;height:7px;border-radius:2px;background:#3a0a0a;box-shadow:inset 0 0 0 1px #000}\n.rfd .front .lamp.g{left:12%}\n.rfd .front .lamp.r{left:calc(12% + 26px)}\n.rfd .front .lamp.cg{background:#0a3a0f}\n.rfd .front .lamp.cr{background:#3a0a0a}\n.rfd .front .lamp.on.cg{background:#5aff63;box-shadow:0 0 10px #5aff63}\n.rfd .front .lamp.on.cr{background:#ff3b30;box-shadow:0 0 10px #ff3b30}\n.rfd .front .lamp.on.lo{opacity:.4;box-shadow:none}\n.rfd .front .lamp.on.dim{opacity:.45;box-shadow:none;animation:rfd-flick .23s steps(2) infinite}\n@keyframes rfd-flick{50%{opacity:.2}}\n.rfd .front .spin{position:absolute;right:12%;top:51px;font-family:'VT323',monospace;font-size:15px;color:#2b241b}\n.rfd .front .spin i{display:inline-block;font-style:normal}\n.rfd .front .spin.on i{animation:rfd-rot .5s linear infinite}\n@keyframes rfd-rot{to{transform:rotate(360deg)}}\n.rfd .lcard b{font-size:14px;color:#fff;line-height:1.3}\n.rfd .lcard small{font-size:12.5px;color:var(--muted);line-height:1.4}\n.rfd .lcard .go{font-family:'Press Start 2P',monospace;font-size:8px;color:var(--yel);margin-top:auto}\n\n\/* schermate *\/\n.rfd .screens{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}\n.rfd .scard{display:flex;flex-direction:column;align-items:stretch!important;gap:10px;text-align:left;background:var(--panel);border:2px solid var(--line);border-radius:12px;padding:12px;transition:transform .18s,border-color .18s,box-shadow .18s}\n.rfd .scard:hover,.rfd .scard:focus-visible{transform:translateY(-4px);border-color:var(--yel);box-shadow:0 12px 28px rgba(0,0,0,.45);outline:0}\n.rfd .tv{position:relative;width:100%;aspect-ratio:4\/3;border-radius:10px;background:#111;box-shadow:inset 0 0 0 3px #000;container-type:inline-size;overflow:hidden}\n.rfd .tv::after{content:\"\";position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,rgba(0,0,0,.18) 0 1px,transparent 1px 3px),radial-gradient(ellipse at center,transparent 60%,rgba(0,0,0,.45) 100%)}\n.rfd .scr{position:absolute;inset:0;background:#7c70da;padding:9% 7%}\n.rfd .scr .in{width:100%;height:100%;background:#3e31a2;color:#b3abff;font-family:'VT323',monospace;font-size:4.15cqw;line-height:1.02;white-space:pre;overflow:hidden;padding:1% 1.5%}\n.rfd .scard b{font-size:14px;color:#fff;line-height:1.3}\n.rfd .scard small{font-size:12.5px;color:var(--muted);line-height:1.4}\n.rfd .scard .go{font-family:'Press Start 2P',monospace;font-size:8px;color:var(--yel);margin-top:auto}\n\n\/* sintomi e chip *\/\n.rfd .tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}\n.rfd .tab{border:2px solid var(--line);background:var(--panel);border-radius:10px;padding:9px 14px;font-size:13.5px;font-weight:600;color:var(--muted)}\n.rfd .tab.on{border-color:var(--yel);color:#fff;background:#2a2350}\n.rfd .sx{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:16px;align-items:start}\n.rfd .syms{display:grid;gap:12px}\n.rfd .scat b{display:block;font-family:'Press Start 2P',monospace;font-size:8px;color:var(--cya);margin:4px 0 8px}\n.rfd .scat div{display:grid;gap:6px}\n.rfd .sym{display:flex;gap:10px;align-items:baseline;background:var(--panel);border:2px solid var(--line);border-radius:10px;padding:9px 12px;font-size:13.5px;color:#e6e3fb;line-height:1.35;transition:border-color .12s,background .12s}\n.rfd .sym:hover{border-color:var(--c64l)}\n.rfd .sym.on{border-color:var(--yel);background:#2a2350;color:#fff}\n.rfd .sym .n{flex:none;font-family:'VT323',monospace;font-size:17px;color:var(--grn);min-width:22px}\n.rfd .board{background:#0b3d1f;background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px);background-size:18px 18px;border:3px solid #062612;border-radius:14px;padding:16px;display:grid;gap:14px}\n.rfd .board .bt{font-size:12.5px;color:#cfeed6;line-height:1.45}\n.rfd .board .bt b{color:#fff}\n.rfd .grp b{display:block;font-family:'Press Start 2P',monospace;font-size:8px;color:#a8f0b8;margin-bottom:8px}\n.rfd .grp .row{display:flex;flex-wrap:wrap;gap:10px}\n.rfd .ic{position:relative;min-width:104px;flex:1 1 104px;max-width:180px;background:#151515;border:2px solid #000;border-radius:4px;padding:9px 9px 9px 14px;color:#e8e8e8;box-shadow:0 3px 0 #000;transition:transform .15s,box-shadow .15s,outline-color .15s,opacity .15s;outline:3px solid transparent;outline-offset:2px}\n.rfd .ic::before{content:\"\";position:absolute;left:5px;top:50%;width:5px;height:5px;margin-top:-2.5px;border-radius:50%;background:#444}\n.rfd .ic::after{content:\"\";position:absolute;left:0;right:0;top:-5px;height:4px;background:repeating-linear-gradient(90deg,#c9c9c9 0 4px,transparent 4px 9px)}\n.rfd .ic .u{font-family:'VT323',monospace;font-size:20px;color:var(--grn);line-height:1}\n.rfd .ic .p{display:block;font-size:12px;font-weight:700;color:#fff;margin-top:2px;word-break:break-word}\n.rfd .ic .r{display:block;font-size:11px;color:#9a9a9a}\n.rfd .ic:hover{transform:translateY(-2px)}\n.rfd .ic.hot{outline-color:var(--yel);box-shadow:0 0 0 2px var(--yel),0 0 18px rgba(255,210,63,.55);animation:rfd-hot 1.2s ease-in-out infinite}\n.rfd .ic.also{outline-color:#c09bff;box-shadow:0 0 0 2px #c09bff}\n.rfd .ic.sel{outline-color:var(--cya);box-shadow:0 0 0 2px var(--cya)}\n.rfd .board.dim .ic:not(.hot):not(.also):not(.sel){opacity:.45}\n@keyframes rfd-hot{50%{box-shadow:0 0 0 2px var(--yel),0 0 6px rgba(255,210,63,.2)}}\n.rfd .legend{display:flex;flex-wrap:wrap;gap:14px;font-size:12px;color:#cfeed6}\n.rfd .legend i{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:6px;vertical-align:-1px}\n.rfd .detail{margin-bottom:14px;background:var(--panel);border:2px solid var(--line);border-radius:12px;padding:16px 18px;font-size:14.5px;color:#dcd8f6;min-height:70px}\n.rfd .detail h4{font-size:17px;color:#fff;margin-bottom:6px}\n.rfd .detail .k{font-family:'Press Start 2P',monospace;font-size:8px;color:var(--yel);display:block;margin:12px 0 6px}\n.rfd .detail ul{list-style:none;display:grid;gap:6px}\n.rfd .detail li{padding-left:18px;position:relative}\n.rfd .detail li::before{content:\"\u25b8\";position:absolute;left:0;color:var(--cya)}\n.rfd .detail .cl{display:flex;flex-wrap:wrap;gap:8px}\n.rfd .chip{display:inline-flex;align-items:center;gap:6px;border:2px solid var(--line);background:#15113a;border-radius:8px;padding:5px 9px;font-size:12.5px;font-weight:600;color:#fff;transition:border-color .15s}\n.rfd .chip:hover{border-color:var(--yel)}\n.rfd .chip .u{font-family:'VT323',monospace;font-size:17px;color:var(--grn)}\n.rfd .chip.also .u{color:#c09bff}\n.rfd .detail a.lk,.rfd .box a.lk,.rfd .card a.lk{color:var(--cya);text-decoration:underline}\n\n\/* procedure (fisarmonica) *\/\n.rfd .acc{display:grid;gap:10px}\n.rfd .acc>div{background:var(--panel);border:2px solid var(--line);border-radius:12px;overflow:hidden}\n.rfd .acc>div.open{border-color:var(--c64l)}\n.rfd .acc>div>button{display:flex;gap:14px;align-items:center;width:100%;background:none;border:0;padding:14px 16px;color:#fff;font-weight:700;font-size:15.5px}\n.rfd .acc>div>button .n{flex:none;font-family:'Press Start 2P',monospace;font-size:10px;color:#15102e;background:var(--acc,var(--yel));border-radius:6px;padding:7px 8px}\n.rfd .acc>div>button small{display:block;font-weight:500;font-size:12.5px;color:var(--muted)}\n.rfd .acc>div>button::after{content:\"\u25bc\";margin-left:auto;font-size:11px;color:var(--muted);transition:transform .2s}\n.rfd .acc>div.open>button::after{transform:rotate(180deg)}\n.rfd .acc .bd{padding:0 18px 18px;display:none}\n.rfd .acc>div.open .bd{display:block}\n.rfd .bd p{font-size:14.5px;color:#dcd8f6;margin-bottom:10px}\n.rfd .bd p b,.rfd .bd li b{color:#fff}\n.rfd .bd ol,.rfd .bd ul{display:grid;gap:7px;margin:0 0 12px;padding-left:22px}\n.rfd .bd li{font-size:14.5px;color:#dcd8f6}\n.rfd .bd ol li::marker{color:var(--yel);font-weight:700}\n.rfd .bd ul li::marker{color:var(--cya)}\n.rfd .bd h5{font-size:13px;color:var(--yel);text-transform:uppercase;letter-spacing:.05em;margin:14px 0 8px}\n.rfd pre.code{font-family:'VT323',monospace;font-size:19px;line-height:1.15;color:#b3abff;background:#3e31a2;border:6px solid #7c70da;border-radius:8px;padding:10px 12px;margin:0 0 12px;white-space:pre;overflow-x:auto}\n.rfd .tbl{width:100%;border-collapse:collapse;font-size:13.5px;margin:0 0 12px}\n.rfd .tbl th,.rfd .tbl td{border:1px solid var(--line);padding:7px 9px;text-align:left;vertical-align:top}\n.rfd .tbl th{background:#2a2350;color:#fff;font-weight:600}\n.rfd .tbl td{color:#dcd8f6}\n.rfd .tw{overflow-x:auto}\n.rfd .note{background:#15113a;border:2px dashed var(--line);border-radius:10px;padding:10px 12px;font-size:13.5px;color:#cfcaf2;margin:0 0 12px}\n.rfd .note b{color:var(--yel)}\n\n\/* stroboscopio *\/\n.rfd .strobe{display:grid;grid-template-columns:260px minmax(0,1fr);gap:18px;align-items:center;background:var(--panel);border:2px solid var(--line);border-radius:12px;padding:16px;margin-bottom:16px}\n.rfd .strobe canvas{width:240px;height:240px;border-radius:50%;background:#111;box-shadow:0 0 0 3px #000}\n.rfd .strobe label{display:block;font-size:13.5px;color:#fff;font-weight:600;margin:10px 0 4px}\n.rfd .strobe input[type=range]{width:100%;accent-color:#ffd23f}\n.rfd .strobe .rd{font-family:'VT323',monospace;font-size:26px;color:var(--grn)}\n.rfd .seg{display:inline-flex;gap:6px;flex-wrap:wrap}\n.rfd .seg button{border:2px solid var(--line);background:#15113a;border-radius:8px;padding:6px 10px;font-size:13px;font-weight:600;color:var(--muted)}\n.rfd .seg button.on{border-color:var(--yel);color:#fff}\n\n\/* schede *\/\n.rfd .cards{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}\n.rfd .card{display:flex;flex-direction:column;gap:8px;background:var(--panel);border:2px solid var(--line);border-radius:12px;padding:16px;transition:border-color .15s,transform .15s}\n.rfd a.card:hover{border-color:var(--c64l);transform:translateY(-3px)}\n.rfd .card .ct{display:flex;gap:12px;align-items:center}\n.rfd .card svg{width:34px;height:34px;flex:none}\n.rfd .card h4{font-size:15px;color:#fff;line-height:1.3}\n.rfd .card .tag{font-size:11px;font-weight:700;color:var(--acc,var(--c64l));text-transform:uppercase;letter-spacing:.05em}\n.rfd .card p{font-size:13.5px;color:var(--muted)}\n.rfd .card .dom{font-size:11.5px;color:#8a83c4;margin-top:auto}\n.rfd .warn{display:flex;gap:12px;align-items:flex-start;background:#2a0c14;border:2px solid #7a1d33;border-radius:12px;padding:14px 16px;font-size:14px;color:#ffd6e0;margin-top:16px}\n.rfd .warn b{color:#fff}\n.rfd .foot{margin-top:40px;font-size:13px;color:var(--muted);text-align:center}\n.rfd .foot a{color:var(--cya);text-decoration:underline}\n\n@media (max-width:1024px){.rfd .leds,.rfd .screens{grid-template-columns:repeat(2,1fr)}.rfd .cards{grid-template-columns:repeat(2,1fr)}.rfd .mach-l{grid-template-columns:repeat(3,1fr)}}\n@media (max-width:860px){.rfd .sx{grid-template-columns:1fr}.rfd .strobe{grid-template-columns:1fr;justify-items:center}.rfd .strobe>div{width:100%}}\n@media (max-width:760px){.rfd .q,.rfd .qrow span{font-size:23px}}\n@media (max-width:480px){\n  .rfd{padding:30px 0 50px}\n  .rfd .wrap{padding:0 14px}\n  .rfd .cards,.rfd .leds{grid-template-columns:1fr}\n  .rfd .screens{grid-template-columns:1fr 1fr;gap:10px}\n  .rfd .mach-l{grid-template-columns:repeat(2,1fr)}\n  .rfd .term{border-width:7px;padding:10px 12px}\n  .rfd .ic{min-width:46%;max-width:none}\n  .rfd .acc>div>button{font-size:14.5px;padding:12px}\n  .rfd .acc .bd{padding:0 12px 14px}\n}\n@media (prefers-reduced-motion:reduce){.rfd *{transition:none!important}.rfd .ic.hot{animation:none}}\nbody:has(.rfd) .post-views.entry-meta{display:block;margin:0;padding:7px 16px;text-align:center;\n  font:12px\/1.4 'Inter',system-ui,sans-serif;color:#aaa5d8;background:#0f0c24;border-top:2px solid #342c74;border-bottom:2px solid #5ad15f}\n<\/style>\n\n<div class=\"rfd\" id=\"rfdd\" data-no-translation>\n  <div class=\"stripe\"><\/div>\n  <div class=\"wrap\">\n    <nav class=\"mach\" id=\"dMach\"><\/nav>\n    <div class=\"dinfo\" id=\"dInfo\"><\/div>\n    <div class=\"top\">\n      <div>\n        <span class=\"kicker\" data-t=\"kicker\"><\/span>\n        <h2 class=\"h2\" data-t=\"title\"><\/h2>\n        <p class=\"sub\" data-t=\"intro\"><\/p>\n      <\/div>\n      <div class=\"lcd\" id=\"dLcd\"><\/div>\n    <\/div>\n    <nav class=\"nav\" id=\"dNav\"><\/nav>\n\n    <div class=\"term\">\n      <label for=\"dQ\" data-t=\"searchLabel\"><\/label>\n      <div class=\"qrow\"><span aria-hidden=\"true\">&gt;<\/span><input class=\"q\" id=\"dQ\" type=\"search\" autocomplete=\"off\" spellcheck=\"false\"><\/div>\n    <\/div>\n    <div class=\"results\" id=\"dRes\"><\/div>\n\n    <section id=\"d-led\"><div class=\"head\"><span class=\"kicker\" data-t=\"ledK\"><\/span><h3 class=\"h3\" data-t=\"ledH\"><\/h3><p class=\"sub\" data-t=\"ledS\"><\/p><\/div><div class=\"leds\" id=\"dLeds\"><\/div><\/section>\n    <section id=\"d-schermo\"><div class=\"head\"><span class=\"kicker\" data-t=\"scrK\"><\/span><h3 class=\"h3\" data-t=\"scrH\"><\/h3><p class=\"sub\" data-t=\"scrS\"><\/p><\/div><div class=\"screens\" id=\"dScreens\"><\/div><\/section>\n    <section id=\"d-chip\"><div class=\"head\"><span class=\"kicker\" data-t=\"chipK\"><\/span><h3 class=\"h3\" data-t=\"chipH\"><\/h3><p class=\"sub\" data-t=\"chipS\"><\/p><\/div>\n      <div class=\"tabs\" id=\"dBoards\"><\/div>\n      <div class=\"sx\"><div class=\"syms\" id=\"dSyms\"><\/div><div><div class=\"detail\" id=\"dDetail\"><\/div><div class=\"board\" id=\"dBoard\"><\/div><\/div><\/div>\n    <\/section>\n    <section id=\"d-test\"><div class=\"head\"><span class=\"kicker\" data-t=\"testK\"><\/span><h3 class=\"h3\" data-t=\"testH\"><\/h3><p class=\"sub\" data-t=\"testS\"><\/p><\/div><div class=\"acc\" id=\"dTests\"><\/div><\/section>\n    <section id=\"d-allineamento\"><div class=\"head\"><span class=\"kicker\" data-t=\"alK\"><\/span><h3 class=\"h3\" data-t=\"alH\"><\/h3><p class=\"sub\" data-t=\"alS\"><\/p><\/div><div class=\"acc\" id=\"dAlign\"><\/div><div class=\"cards\" id=\"dSoft\" style=\"margin-top:16px\"><\/div><\/section>\n    <section id=\"d-velocita\"><div class=\"head\"><span class=\"kicker\" data-t=\"spK\"><\/span><h3 class=\"h3\" data-t=\"spH\"><\/h3><p class=\"sub\" data-t=\"spS\"><\/p><\/div>\n      <div class=\"strobe\"><canvas id=\"dCanvas\" width=\"480\" height=\"480\" aria-hidden=\"true\"><\/canvas><div>\n        <div class=\"seg\" id=\"dHz\"><\/div>\n        <label for=\"dRpm\" data-t=\"spRpm\"><\/label><input type=\"range\" id=\"dRpm\" min=\"280\" max=\"320\" step=\"0.5\" value=\"306\">\n        <div class=\"rd\" id=\"dRead\"><\/div><p class=\"sub\" id=\"dStrobeTxt\" style=\"font-size:14px\"><\/p><\/div><\/div>\n      <div class=\"acc\" id=\"dSpeed\"><\/div>\n    <\/section>\n    <section id=\"d-schemi\"><div class=\"head\"><span class=\"kicker\" data-t=\"docK\"><\/span><h3 class=\"h3\" data-t=\"docH\"><\/h3><p class=\"sub\" data-t=\"docS\"><\/p><\/div><div class=\"tw\" id=\"dPcb\"><\/div><div class=\"cards\" id=\"dDocs\" style=\"margin-top:16px\"><\/div><\/section>\n    <section id=\"d-attrezzi\"><div class=\"head\"><span class=\"kicker\" data-t=\"toolK\"><\/span><h3 class=\"h3\" data-t=\"toolH\"><\/h3><\/div><div class=\"cards\" id=\"dTools\"><\/div><div class=\"warn\" id=\"dWarn\"><\/div><\/section>\n    <p class=\"foot\" id=\"dFoot\"><\/p>\n  <\/div>\n<\/div>\n\n<script>\n\/*DRIVEDATA*\/\n\/* Dati della pagina \"Riparare i floppy drive Commodore\".\n   Ogni testo e' una coppia [italiano, english]. Le fonti sono in drive\/fonti\/.\n   Le schede (boards) elencano i chip: s = sintomi che il chip da' quando si guasta, a = sintomi in cui va controllato insieme ad altri. *\/\nwindow.RF_DRIVE_DATA = {\nui: {\n  kicker: [\"RIPARAZIONE FLOPPY DRIVE COMMODORE\", \"COMMODORE FLOPPY DRIVE REPAIR\"],\n  title: [\"Drive Doctor: 1541, 1571, 1581 e PET\", \"Drive Doctor: 1541, 1571, 1581 and PET\"],\n  intro: [\"Scegli il tuo drive, parti da quello che fa all'accensione o da cosa scrive il computer: ti mostriamo quali chip possono dare quel difetto e, al contrario, che difetti d\u00e0 ogni chip. Poi i test da fare, come pulire e allineare la testina e come regolare la velocit\u00e0.\",\n          \"Pick your drive and start from what it does at power-on or from what the computer says: we show which chips can cause that fault and, the other way round, what each chip does when it fails. Then the tests to run, how to clean and align the head and how to set the speed.\"],\n  pick: [\"SCEGLI IL DRIVE\", \"PICK YOUR DRIVE\"],\n  searchLabel: [\"SEARCH \\\"SINTOMO O CHIP\\\",8,1\", \"SEARCH \\\"SYMPTOM OR CHIP\\\",8,1\"],\n  searchPh: [\"es. device not present, lampeggia, UC3, 6522, allineamento\u2026\", \"e.g. device not present, flashing, UC3, 6522, alignment\u2026\"],\n  notFound: [\"?NOT FOUND \u2014 prova con un'altra parola, per esempio \\\"motore\\\", \\\"LED\\\", \\\"testina\\\".\", \"?NOT FOUND \u2014 try another word, for example \\\"motor\\\", \\\"LED\\\", \\\"head\\\".\"],\n  tpSym: [\"SINTOMO\", \"SYMPTOM\"], tpGuide: [\"GUIDA\", \"GUIDE\"],\n  motor: [\"MOTORE\", \"MOTOR\"],\n  toChips: [\"VEDI I CHIP SOSPETTI\", \"SEE THE SUSPECT CHIPS\"],\n  toTest: [\"APRI LA GUIDA\", \"OPEN THE GUIDE\"],\n  ledK: [\"PRIMO TEST: ACCENDILO\", \"FIRST TEST: SWITCH IT ON\"],\n  ledH: [\"Cosa fanno i LED all'accensione?\", \"What do the LEDs do at power-on?\"],\n  ledS: [\"Accendi il drive **senza disco** e collegato al computer acceso. Confronta i LED e il motore con le animazioni: un drive sano fa un breve ciclo di prova e poi si spegne tutto tranne la spia di alimentazione.\",\n         \"Switch the drive on **with no disk inside**, connected to a computer that is on. Compare the LEDs and the motor with the animations: a healthy drive runs a short check and then everything goes off except the power light.\"],\n  scrK: [\"COSA SCRIVE IL COMPUTER?\", \"WHAT DOES THE COMPUTER SAY?\"],\n  scrH: [\"Riconosci il guasto dal messaggio\", \"Recognise the fault from the message\"],\n  scrS: [\"Prova `LOAD\\\"$\\\",8` e leggi il canale errori (vedi i test pi\u00f9 sotto). Clicca il messaggio che vedi.\", \"Try `LOAD\\\"$\\\",8` and read the error channel (see the tests below). Click the message you see.\"],\n  chipK: [\"SINTOMI E CHIP\", \"SYMPTOMS AND CHIPS\"],\n  chipH: [\"Da quale chip viene il difetto?\", \"Which chip causes the fault?\"],\n  chipS: [\"Scegli la scheda del tuo drive. Clicca un **sintomo** per vedere i chip sospetti (in giallo quelli tipici, in viola quelli da controllare insieme), oppure clicca un **chip** per sapere che difetti d\u00e0 quando si guasta. I sintomi dei chip vengono da prove fatte togliendo un chip alla volta (soprattutto quelle di Ray Carlsen): lo stesso difetto pu\u00f2 avere altre cause, ma di solito \u00e8 la strada giusta.\",\n          \"Pick your drive's board. Click a **symptom** to see the suspect chips (yellow for the usual ones, purple for those to check along with them), or click a **chip** to see what it does when it fails. The chip symptoms come from tests made by pulling one chip at a time (mostly Ray Carlsen's): the same fault can have other causes, but it usually points the right way.\"],\n  lgMain: [\"sospetto principale\", \"main suspect\"], lgAlso: [\"da controllare insieme\", \"check as well\"], lgSel: [\"chip selezionato\", \"selected chip\"],\n  whenFails: [\"QUANDO SI GUASTA\", \"WHEN IT FAILS\"],\n  alsoIn: [\"VA CONTROLLATO ANCHE PER\", \"ALSO CHECK IT FOR\"],\n  subst: [\"RICAMBI E SOSTITUTI\", \"SPARES AND SUBSTITUTES\"],\n  first: [\"PRIMA CONTROLLA\", \"CHECK FIRST\"],\n  suspects: [\"CHIP SOSPETTI\", \"SUSPECT CHIPS\"],\n  howTest: [\"COME VERIFICARE\", \"HOW TO TEST\"],\n  pickHint: [\"Seleziona un sintomo a sinistra o un chip sulla scheda.\", \"Select a symptom on the left or a chip on the board.\"],\n  testK: [\"TEST PER TROVARE IL GUASTO\", \"TESTS TO FIND THE FAULT\"],\n  testH: [\"Le prove da fare, in ordine\", \"The checks to make, in order\"],\n  testS: [\"Dalla pi\u00f9 semplice alla pi\u00f9 impegnativa. Molti guasti si trovano gi\u00e0 con le prime tre, senza aprire il drive.\", \"From the simplest to the hardest. Many faults show up with the first three, without opening the drive.\"],\n  alK: [\"ALLINEAMENTO DELLA TESTINA\", \"HEAD ALIGNMENT\"],\n  alH: [\"Quando serve e come si fa\", \"When you need it and how to do it\"],\n  alS: [\"L'allineamento \u00e8 l'ultima cosa da toccare: prima elettronica, pulizia e velocit\u00e0. Qui trovi il metodo, i limiti dei dischi di riferimento e i programmi da usare.\", \"Alignment is the last thing to touch: electronics, cleaning and speed come first. Here you find the method, the limits of reference disks and the programs to use.\"],\n  spK: [\"VELOCIT\u00c0 DEL MOTORE\", \"SPINDLE SPEED\"],\n  spH: [\"300 giri al minuto, non uno di pi\u00f9\", \"300 RPM, not one more\"],\n  spS: [\"Il disco deve girare a 300 giri al minuto. Sotto il perno dei 1541 c'\u00e8 un disco stroboscopico: con una luce che sfarfalla a 50 Hz le tacche dell'anello giusto sembrano ferme quando la velocit\u00e0 \u00e8 esatta. Prova qui sotto a spostare il cursore.\",\n        \"The disk must spin at 300 RPM. Under the spindle of the 1541 there is a strobe disc: with a light that flickers at mains frequency, the marks of the right ring seem to stand still when the speed is exact. Try moving the slider below.\"],\n  spRpm: [\"Velocit\u00e0 del motore (trimmer VR1)\", \"Motor speed (trimmer VR1)\"],\n  spLed: [\"Lampada LED\", \"LED lamp\"],\n  spCenter: [\"50 Hz dentro \u00b7 60 Hz fuori\", \"50 Hz inner \u00b7 60 Hz outer\"],\n  spOuter: [\"esterno (60 Hz)\", \"outer (60 Hz)\"], spInner: [\"interno (50 Hz)\", \"inner (50 Hz)\"],\n  spTxtOk: [\"**Velocit\u00e0 giusta:** le tacche dell'anello {ring} stanno ferme. Blocca il trimmer con una goccia di smalto.\", \"**Speed is right:** the marks of the {ring} ring stand still. Lock the trimmer with a drop of varnish.\"],\n  spTxtFast: [\"**Troppo veloce:** le tacche dell'anello {ring} scorrono nel senso di rotazione. Gira VR1 di pochissimo per rallentare.\", \"**Too fast:** the marks of the {ring} ring drift in the direction of rotation. Turn VR1 a tiny bit to slow it down.\"],\n  spTxtSlow: [\"**Troppo lento:** le tacche dell'anello {ring} scorrono all'indietro. Gira VR1 di pochissimo per accelerare.\", \"**Too slow:** the marks of the {ring} ring drift backwards. Turn VR1 a tiny bit to speed it up.\"],\n  spTxtLed: [\"**Con molte lampade LED non funziona:** l'alimentatore elettronico non le fa sfarfallare e il disco si vede sempre sfocato. Serve un vecchio neon, una lampadina a incandescenza debole o una lampada stroboscopica.\", \"**It does not work with most LED lamps:** their electronic driver does not flicker, so the disc always looks blurred. Use an old fluorescent tube, a dim filament bulb or a strobe light.\"],\n  docK: [\"SCHEMI E SCHEDE\", \"SCHEMATICS AND BOARDS\"],\n  docH: [\"Riconosci la scheda e trova lo schema\", \"Identify the board and find the schematic\"],\n  docS: [\"Le schede cambiano molto anche dentro lo stesso modello: guarda il numero stampato sul circuito (di solito vicino al bordo) prima di cercare un chip per sigla.\", \"Boards differ a lot even within one model: read the number printed on the board (usually near an edge) before looking for a chip by its reference.\"],\n  pcbHead: [[\"Drive\", \"Scheda\", \"Meccanica\", \"Come riconoscerla\", \"Schema\"], [\"Drive\", \"Board\", \"Mechanism\", \"How to recognise it\", \"Schematic\"]],\n  toolK: [\"ATTREZZATURA\", \"TOOLS\"],\n  toolH: [\"Cosa serve sul banco di lavoro\", \"What you need on the bench\"],\n  warn: [\"**Sicurezza.** Dentro 1541, 1571 e drive PET arriva la tensione di rete: stacca la spina prima di aprire. Segna l'orientamento di ogni connettore prima di staccarlo: molti non hanno chiave, e sul 1541-II un connettore della testina invertito pu\u00f2 bruciare l'amplificatore; sul 1571 e sul 1581 un cavo di alimentazione invertito distrugge la scheda.\",\n         \"**Safety.** Mains voltage reaches inside the 1541, 1571 and PET drives: unplug before opening. Mark the orientation of every connector before unplugging it: many are not keyed, a reversed head plug on the 1541-II can burn the amplifier, and a reversed power cable on the 1571 or 1581 destroys the board.\"],\n  foot: [\"Le tabelle chip\/sintomo riassumono con parole nostre le prove di [Ray Carlsen](https:\/\/portcommodore.com\/rcarlsen\/cbm\/1541\/1541chip.txt) e i manuali di servizio Commodore. Lo stesso sintomo pu\u00f2 avere altre cause: usale per scegliere da dove partire. Vedi anche [Guasti Commodore 64](\/guasti-commodore-64\/).\",\n         \"The chip\/symptom tables summarise, in our own words, [Ray Carlsen](https:\/\/portcommodore.com\/rcarlsen\/cbm\/1541\/1541chip.txt)'s tests and the Commodore service manuals. The same symptom can have other causes: use them to choose where to start. See also [Commodore 64 faults](\/guasti-commodore-64\/).\"]\n},\nnav: [[\"d-led\", [\"\ud83d\udca1 Accensione\", \"\ud83d\udca1 Power-on\"]], [\"d-schermo\", [\"\ud83d\udcfa Messaggi\", \"\ud83d\udcfa Messages\"]], [\"d-chip\", [\"\ud83d\udd32 Sintomi e chip\", \"\ud83d\udd32 Symptoms and chips\"]], [\"d-test\", [\"\ud83e\ude7a Test\", \"\ud83e\ude7a Tests\"]], [\"d-allineamento\", [\"\ud83c\udfaf Allineamento\", \"\ud83c\udfaf Alignment\"]], [\"d-velocita\", [\"\u23f1 Velocit\u00e0\", \"\u23f1 Speed\"]], [\"d-schemi\", [\"\ud83d\udcd0 Schemi\", \"\ud83d\udcd0 Schematics\"]], [\"d-attrezzi\", [\"\ud83d\udd27 Attrezzatura\", \"\ud83d\udd27 Tools\"]]],\n\ndrives: [\n  { id: \"pet\", name: \"PET \/ CBM\", sub: [\"2031 \u00b7 4040 \u00b7 8050\", \"2031 \u00b7 4040 \u00b7 8050\"], dark: true,\n    look: { w: 62, h: 20, c: \"#d9cfb6\", f: \"#4b3b2e\", dual: true, door: \"lever\", lv: \"#c9bea3\" },\n    info: [\"**Drive IEEE-488 per PET e CBM.** 2040\/3040 e 4040 (doppio, 5\u00bc\\\" a 35 tracce), 8050\/8250 (doppio, alta densit\u00e0), 2031 e SFD-1001 (singoli). Si collegano alla porta IEEE: su C64 serve un'interfaccia.\", \"**IEEE-488 drives for the PET and CBM.** 2040\/3040 and 4040 (dual, 35-track 5\u00bc\\\"), 8050\/8250 (dual, high density), 2031 and SFD-1001 (single). They plug into the IEEE port: a C64 needs an interface.\"] },\n  { id: \"1541\", name: \"1540 \/ 1541\", sub: [\"1982 \u00b7 bianco e marrone\", \"1982 \u00b7 white and brown\"],\n    look: { w: 52, h: 20, c: \"#a3937a\", f: \"#988871\", door: \"lever\", lv: \"#5c5244\" },\n    info: [\"**1541 \\\"classico\\\" (e 1540 per VIC-20).** Case color crema o marrone, alimentatore interno. Dentro ci sono schede diverse: \\\"lunga\\\" con meccanica ALPS (porta a leva) o Newtronics (porta a rotazione), e \\\"corta\\\" dal 1541C in poi. Controlla il numero stampato sulla scheda.\", \"**Classic 1541 (and the VIC-20 1540).** Cream or brown case, internal power supply. Inside there are different boards: the \\\"long\\\" one with an ALPS (push-down lever) or Newtronics (twist latch) mechanism, and the \\\"short\\\" one from the 1541C on. Check the number printed on the board.\"] },\n  { id: \"1541ii\", name: \"1541-II\", sub: [\"1988 \u00b7 alimentatore esterno\", \"1988 \u00b7 external PSU\"], lamps: [\"cr\", \"cg\"],\n    look: { w: 40, h: 16, c: \"#e2d8bf\", door: \"lever\", lv: \"#8f8672\", lamps: [\"#f94144\", \"#5ad15f\"] },\n    info: [\"**1541-II.** Pi\u00f9 piccolo, con alimentatore esterno a mattoncino e meccaniche Chinon, Newtronics\/Mitsumi o Alps. Spia **rossa** = alimentazione, **verde** = attivit\u00e0 (al contrario del 1541). Pochi chip: i guasti pi\u00f9 frequenti sono alimentatore e testina.\", \"**1541-II.** Smaller, with an external power brick and Chinon, Newtronics\/Mitsumi or Alps mechanisms. **Red** light = power, **green** = activity (the opposite of the 1541). Few chips: the most frequent faults are the power supply and the head.\"] },\n  { id: \"1571\", name: \"1571\", sub: [\"1985 \u00b7 doppia faccia\", \"1985 \u00b7 double-sided\"], lamps: [\"cr\", \"cg\"],\n    look: { w: 54, h: 18, c: \"#ddd3ba\", door: \"twist\", lv: \"#8f8672\", lamps: [\"#f94144\", \"#5ad15f\"] },\n    info: [\"**1571 e drive interno del C128D.** Doppia faccia, due modi (1541 e 1571), controller MFM per il CP\/M. Spia di alimentazione **rossa** e spia di attivit\u00e0 **verde**. Il C128DCR ha il drive integrato sulla scheda madre (1571CR).\", \"**1571 and the C128D internal drive.** Double-sided, two modes (1541 and 1571), MFM controller for CP\/M. **Red** power light and **green** activity light. The C128DCR has the drive built into the main board (1571CR).\"] },\n  { id: \"1581\", name: \"1581\", sub: [\"1987 \u00b7 3\u00bd\\\" 800 KB\", \"1987 \u00b7 3\u00bd\\\" 800 KB\"], lamps: [\"cr\", \"cg\"],\n    look: { w: 34, h: 14, c: \"#e2d8bf\", slot: 3, door: \"eject\", lamps: [\"#f94144\", \"#5ad15f\"] },\n    info: [\"**1581.** Disco da 3\u00bd\\\" doppia densit\u00e0 (800 KB), controller WD1772, meccanica Chinon, alimentatore esterno. Spia **verde** di attivit\u00e0; gli errori fanno lampeggiare la spia **rossa** di alimentazione.\", \"**1581.** 3\u00bd\\\" double-density disk (800 KB), WD1772 controller, Chinon mechanism, external power supply. **Green** activity light; errors make the **red** power light flash.\"] }\n],\n\ngroups: {\n  cpu: [\"Processore e memoria\", \"CPU and memory\"],\n  io: [\"Interfacce (VIA, CIA)\", \"Interfaces (VIA, CIA)\"],\n  rw: [\"Lettura e scrittura\", \"Read and write\"],\n  logic: [\"Logica e decodifica\", \"Logic and decoding\"],\n  bus: [\"Bus seriale\", \"Serial bus\"],\n  motor: [\"Motori e sensori\", \"Motors and sensors\"],\n  power: [\"Alimentazione\", \"Power\"],\n  mech: [\"Meccanica\", \"Mechanism\"]\n},\ncats: [[\"pow\", [\"All'accensione\", \"At power-on\"]], [\"bus\", [\"Comunicazione col computer\", \"Talking to the computer\"]], [\"read\", [\"Lettura e scrittura\", \"Reading and writing\"]], [\"mech\", [\"Motori e testina\", \"Motors and head\"]], [\"diag\", [\"Programmi di diagnostica\", \"Diagnostic programs\"]]],\n\nsymptoms: [\n  { id: \"dead\", cat: \"pow\", general: true, t: [\"Tutto spento: nessuna spia, nessun rumore\", \"Completely dead: no lights, no noise\"],\n    first: [[\"Presa, cavo di rete e interruttore; sul 1541-II e sul 1581 prova un altro alimentatore esterno.\", \"Fusibile interno (1541: F1 da 1 A; 1571: F101 sull'alimentatore).\", \"Tensioni +5 V e +12 V sulla scheda (test 6).\"],\n            [\"Socket, mains cable and switch; on the 1541-II and 1581 try another external power brick.\", \"Internal fuse (1541: 1 A F1; 1571: F101 on the PSU board).\", \"+5 V and +12 V on the board (test 6).\"]], tests: [\"t-volt\"], kw: \"morto dead fuse fusibile\" },\n  { id: \"dim\", cat: \"pow\", t: [\"Spia di alimentazione fioca o tremolante\", \"Power light dim or flickering\"],\n    d: [\"Quasi sempre un problema sui +5 V: regolatore, ponte raddrizzatore o alimentatore esterno.\", \"Almost always a +5 V problem: regulator, bridge rectifier or external brick.\"], tests: [\"t-volt\"] },\n  { id: \"redmotor\", cat: \"pow\", t: [\"Spia di attivit\u00e0 accesa fissa, il drive non risponde (spesso con il motore che gira sempre)\", \"Activity light stays on, the drive does not respond (often with the motor always running)\"],\n    d: [\"Il processore del drive non riesce a completare l'avvio. \u00c8 il sintomo pi\u00f9 comune e lo danno molti chip diversi: CPU, ROM, VIA e la logica intorno.\", \"The drive's CPU cannot finish starting up. It is the most common symptom and many chips cause it: CPU, ROM, VIAs and the glue logic.\"],\n    first: [[\"Ripassa i chip su zoccolo (togli e rimetti, pulisci i piedini).\", \"Scambia ROM e VIA con quelli di un drive funzionante, se ne hai uno.\", \"Controlla +5 V, clock e reset della CPU (test 10).\"], [\"Reseat the socketed chips (pull, clean the pins, refit).\", \"Swap ROMs and VIAs with a working drive's, if you have one.\", \"Check +5 V, the CPU clock and reset (test 10).\"]], tests: [\"t-acc\", \"t-logic\"], kw: \"acceso fisso solid led on hang\" },\n  { id: \"blinkcode\", cat: \"pow\", drives: [\"1541\", \"1541ii\", \"pet\"], t: [\"La spia lampeggia alcune volte, pausa, e ripete\", \"The light flashes a few times, pauses and repeats\"],\n    d: [\"\u00c8 l'autotest all'accensione: conta i lampi. Sul 1541 1 = RAM pagina zero, 2 = ROM $E000, 3 = ROM $C000, 4 = resto della RAM; i drive PET arrivano fino a 10 lampi (tabelle nel test 2). Anche i circuiti intorno al chip indicato possono dare lo stesso codice.\", \"This is the power-on self-test: count the flashes. On the 1541 1 = zero-page RAM, 2 = $E000 ROM, 3 = $C000 ROM, 4 = the rest of the RAM; PET drives go up to 10 flashes (tables in test 2). The circuits around the indicated chip can give the same code.\"], tests: [\"t-acc\"], kw: \"lampeggi flash code codice\" },\n  { id: \"blink1s\", cat: \"pow\", t: [\"La spia lampeggia piano e regolare (ogni 1\u20132 secondi) e il motore gira\", \"The light flashes slowly and steadily (every 1\u20132 seconds) and the motor runs\"],\n    d: [\"Di solito \u00e8 la RAM: il test della pagina zero fallisce e il drive ripete un lampo solo. Sul 1571 \u00e8 la RAM U3, sul 1581 il controller WD1772.\", \"Usually the RAM: the zero-page test fails and the drive repeats a single flash. On the 1571 it is RAM U3, on the 1581 the WD1772 controller.\"], tests: [\"t-acc\"] },\n  { id: \"blinkslow\", cat: \"pow\", t: [\"Spia che lampeggia lenta (ogni 2 secondi) o 3 volte e si spegne, motore sempre acceso\", \"Light flashing slowly (every 2 s) or 3 times then off, motor always on\"] },\n  { id: \"noreset\", cat: \"pow\", t: [\"All'accensione non fa il ciclo di avvio (niente lampo della spia, motore fermo)\", \"No start-up cycle at power-on (no flash of the light, motor still)\"], tests: [\"t-acc\", \"t-logic\"] },\n  { id: \"spinnoled\", cat: \"pow\", t: [\"All'accensione il motore gira un attimo ma la spia di attivit\u00e0 non si accende\", \"At power-on the motor spins briefly but the activity light stays off\"] },\n  { id: \"motornoled\", cat: \"pow\", t: [\"Spia di attivit\u00e0 spenta e motore che gira sempre\", \"Activity light off and motor always running\"] },\n  { id: \"warm\", cat: \"pow\", general: true, t: [\"Funziona da freddo, si guasta dopo qualche minuto\", \"Works from cold, fails after a few minutes\"],\n    first: [[\"Misura i +5 V con il drive caldo e in funzione: un alimentatore esterno stanco cede solo sotto carico.\", \"Raffredda un chip alla volta con lo spray congelante: quando il drive riparte hai trovato il colpevole.\", \"Cerca saldature fredde (lente) sui regolatori e sui connettori.\"], [\"Measure +5 V with the drive warm and working: a tired external brick only sags under load.\", \"Cool one chip at a time with freeze spray: when the drive comes back you have found it.\", \"Look for cracked joints (magnifier) on regulators and connectors.\"]], tests: [\"t-volt\"], kw: \"caldo heat intermittente intermittent\" },\n  { id: \"dnp\", cat: \"bus\", general: true, t: [\"?DEVICE NOT PRESENT ERROR\", \"?DEVICE NOT PRESENT ERROR\"],\n    first: [[\"Numero di periferica: prova `LOAD\\\"$\\\",9` (10, 11).\", \"Cavo seriale e porta del computer: prova un altro cavo e un altro drive o un SD2IEC.\", \"Spegni tutto il resto collegato al bus.\"], [\"Device number: try `LOAD\\\"$\\\",9` (10, 11).\", \"Serial cable and the computer port: try another cable and another drive or an SD2IEC.\", \"Unplug everything else on the bus.\"]], tests: [\"t-pc\"], kw: \"device not present\" },\n  { id: \"hang\", cat: \"bus\", t: [\"SEARCHING FOR\u2026 e il computer si blocca, il drive non reagisce\", \"SEARCHING FOR\u2026 and the computer hangs, the drive does nothing\"], tests: [\"t-pc\"], kw: \"searching blocca hangs\" },\n  { id: \"searchmotor\", cat: \"bus\", t: [\"SEARCHING FOR\u2026 il motore gira ma la testina non si muove e la spia resta spenta\", \"SEARCHING FOR\u2026 the motor runs but the head does not move and the light stays off\"] },\n  { id: \"c64black\", cat: \"bus\", t: [\"Con il drive collegato il computer non parte (schermo nero) o si blocca\", \"With the drive plugged in the computer does not start (black screen) or hangs\"],\n    d: [\"Il drive tiene basse le linee RESET, ATN o DATA del bus seriale e blocca tutto.\", \"The drive holds the serial bus RESET, ATN or DATA line low and blocks everything.\"], tests: [\"t-pc\"] },\n  { id: \"notready\", cat: \"bus\", t: [\"74, DRIVE NOT READY con un disco inserito\", \"74, DRIVE NOT READY with a disk inserted\"], tests: [\"t-err\", \"t-volt\"], kw: \"74 not ready\" },\n  { id: \"only1541\", cat: \"bus\", t: [\"Il 1571 funziona solo in modalit\u00e0 1541\", \"The 1571 only works in 1541 mode\"],\n    d: [\"In modalit\u00e0 1541 il drive usa solo la testina di sotto e non usa il trasferimento veloce. Se in modo 1571 non va, guarda CIA e buffer del bus veloce.\", \"In 1541 mode the drive only uses the bottom head and no fast transfer. If 1571 mode fails, look at the CIA and the fast-bus buffer.\"], tests: [\"t-cmd\"] },\n  { id: \"modes\", cat: \"bus\", t: [\"Il 1581 non va solo in modalit\u00e0 C128 (trasferimento veloce)\", \"The 1581 fails only in C128 mode (fast transfer)\"] },\n  { id: \"fnfnospin\", cat: \"read\", general: true, t: [\"FILE NOT FOUND e il disco non gira\", \"FILE NOT FOUND and the disk does not spin\"],\n    first: [[\"Con un disco inserito il motore deve partire: ascolta e guarda il perno.\", \"Cinghia (meccaniche ALPS, Mitsumi e 1571) e +12 V.\", \"Connettore del motore e scheda di controllo del motore.\"], [\"With a disk inserted the motor must start: listen and watch the spindle.\", \"The belt (ALPS, Mitsumi and 1571 mechanisms) and +12 V.\", \"The motor connector and the motor control board.\"]], tests: [\"t-step\", \"t-volt\"] },\n  { id: \"fnfspin\", cat: \"read\", general: true, t: [\"Il disco gira, la testina si muove ma non legge niente (FILE NOT FOUND, 21 READ ERROR)\", \"The disk spins, the head moves but nothing reads (FILE NOT FOUND, 21 READ ERROR)\"],\n    first: [[\"Pulisci la testina con alcool isopropilico (test 9).\", \"Misura la testina con il tester: un filo aperto vuol dire testina da cambiare (test 7).\", \"Prova pi\u00f9 dischi buoni, anche formattati su un altro drive.\"], [\"Clean the head with isopropyl alcohol (test 9).\", \"Measure the head with a meter: an open wire means a dead head (test 7).\", \"Try several good disks, including ones formatted on another drive.\"]], tests: [\"t-clean\", \"t-head\", \"t-err\"], kw: \"read error 21 file not found testina head\" },\n  { id: \"somedisks\", cat: \"read\", general: true, drives: [\"1541\", \"1541ii\", \"1571\", \"pet\"], t: [\"Legge i dischi formattati da lui ma non quelli originali o di altri drive\", \"Reads disks it formatted itself but not originals or other drives' disks\"],\n    d: [\"\u00c8 il segno tipico della testina disallineata (o della velocit\u00e0 sbagliata): il drive scrive e rilegge \\\"storto\\\" in modo coerente.\", \"The classic sign of a misaligned head (or wrong speed): the drive writes and reads back \\\"crooked\\\" in a consistent way.\"], tests: [\"v-soft\", \"a-why\", \"a-proc\"], kw: \"allineamento alignment originali\" },\n  { id: \"errmany\", cat: \"read\", general: true, t: [\"Errori 20\u201327 su molti dischi, letture a volte s\u00ec a volte no\", \"Errors 20\u201327 on many disks, reads that work only sometimes\"],\n    first: [[\"Velocit\u00e0 del motore (sezione velocit\u00e0): \u00e8 la prima cosa da misurare.\", \"Pulizia della testina e del feltrino.\", \"Solo dopo: allineamento.\"], [\"Spindle speed (speed section): it is the first thing to measure.\", \"Head and pressure pad cleaning.\", \"Only then: alignment.\"]], tests: [\"v-soft\", \"t-clean\", \"a-why\"], kw: \"23 27 20 errori casuali\" },\n  { id: \"fnfinter\", cat: \"read\", t: [\"FILE NOT FOUND ogni tanto, anche con dischi buoni\", \"FILE NOT FOUND now and then, even with good disks\"] },\n  { id: \"writebad\", cat: \"read\", t: [\"Legge bene ma non scrive, o la formattazione fallisce o esce corrotta\", \"Reads fine but cannot write, or formatting fails or comes out corrupted\"], tests: [\"t-err\"], kw: \"format scrittura write 25\" },\n  { id: \"wp\", cat: \"read\", t: [\"26, WRITE PROTECT ON anche con la tacca libera (o scrive sui dischi protetti)\", \"26, WRITE PROTECT ON with the notch open (or it writes on protected disks)\"],\n    d: [\"Il sensore della tacca \u00e8 un LED infrarosso con un fototransistor: polvere e fumo lo accecano. Puliscilo con aria e un cotton fioc.\", \"The notch sensor is an infrared LED and a phototransistor: dust and smoke blind it. Clean it with air and a cotton bud.\"], tests: [\"t-clean\"] },\n  { id: \"idmismatch\", cat: \"read\", t: [\"Non si accorge del cambio disco (29 DISK ID MISMATCH, directory del disco precedente)\", \"It does not notice a disk change (29 DISK ID MISMATCH, the previous disk's directory)\"] },\n  { id: \"side2\", cat: \"read\", drives: [\"1571\"], t: [\"1571: non legge o non formatta il lato 2\", \"1571: cannot read or format side 2\"],\n    first: [[\"I 5 fili della testina superiore si rompono dentro la guaina: prova a tirarli piano mentre misuri.\", \"Il supporto della testina superiore pu\u00f2 essere piegato: graffia i dischi.\", \"Con la ROM 310654-03 la scrittura sul lato 2 \u00e8 difettosa: monta la -05 o JiffyDOS.\"], [\"The 5 wires to the top head break inside the insulation: tug them gently while measuring.\", \"The top head mount can be bent: it scratches disks.\", \"With ROM 310654-03 writing to side 2 is buggy: fit the -05 or JiffyDOS.\"]], tests: [\"t-head\"] },\n  { id: \"nostep\", cat: \"mech\", general: true, t: [\"La testina non si muove o il motore passo-passo ronza\", \"The head does not move or the stepper motor buzzes\"],\n    first: [[\"Con il drive spento la testina deve scorrere libera a mano: guide sporche o grasso indurito la bloccano.\", \"Misura le bobine del motore passo-passo (test 8).\", \"Driver del motore e +12 V.\"], [\"With the drive off the head carriage must slide freely by hand: dirty rails or hard grease stop it.\", \"Measure the stepper coils (test 8).\", \"Stepper driver and +12 V.\"]], tests: [\"t-step\", \"t-clean\"], kw: \"stepper passo passo testina ferma\" },\n  { id: \"motorslow\", cat: \"mech\", t: [\"Motori lenti o fermi, spesso con 74 DRIVE NOT READY\", \"Motors slow or stopped, often with 74 DRIVE NOT READY\"], tests: [\"t-volt\"] },\n  { id: \"motoralways\", cat: \"mech\", t: [\"Il motore gira sempre, anche quando il drive non lavora\", \"The motor runs all the time, even when the drive is idle\"],\n    d: [\"Attenzione: su 1541 e 1571 \u00e8 normale che il motore giri se il computer \u00e8 spento, e che resti in moto qualche secondo dopo una lettura.\", \"Note: on the 1541 and 1571 it is normal for the motor to run while the computer is off, and to keep turning for a few seconds after a read.\"] },\n  { id: \"knock\", cat: \"mech\", general: true, drives: [\"1541\", \"1541ii\", \"1571\", \"pet\"], t: [\"Colpi forti e ripetuti della testina (\\\"rattle\\\")\", \"Loud repeated knocking of the head (\\\"rattle\\\")\"],\n    d: [\"Il DOS sbatte la testina contro il fermo della traccia 1 quando non riesce a leggere: \u00e8 la conseguenza di errori di lettura, non la causa. Se succede spesso, nei drive ALPS il colpo stesso pu\u00f2 spostare l'allineamento.\", \"The DOS bangs the head against the track-1 stop when it cannot read: it is the result of read errors, not their cause. If it happens often, on ALPS drives the knock itself can shift the alignment.\"], tests: [\"a-why\", \"a-stop\"] },\n  { id: \"headlost\", cat: \"mech\", general: true, drives: [\"1541\", \"1541ii\", \"1571\"], t: [\"La testina \u00e8 rimasta in fondo, oltre la traccia 18 (\\\"drive perso\\\")\", \"The head is stuck far in, past track 18 (\\\"lost drive\\\")\"],\n    d: [\"Manda il comando di inizializzazione o formatta un disco di prova; a drive spento puoi spingere a mano il carrello verso l'esterno.\", \"Send the initialise command or format a scratch disk; with the drive off you can push the carriage outwards by hand.\"], tests: [\"t-cmd\"] },\n  { id: \"diagcode\", cat: \"diag\", drives: [\"1571\", \"1581\"], t: [\"Il programma diagnostico Commodore indica un chip con i lampeggi\", \"Commodore's diagnostic program points to a chip with flashes\"],\n    d: [\"1571 e 1581 non hanno un autotest a lampeggi all'accensione come il 1541: i codici compaiono solo dopo aver caricato nel drive il programma del disco diagnostico Commodore. 1 lampo = tutto bene.\", \"The 1571 and 1581 have no power-on flash test like the 1541: the codes only appear after loading Commodore's diagnostic disk program into the drive. 1 flash = all good.\"], tests: [\"t-diag\"] }\n],\n\nleds: [\n  { test: \"t-acc\", drives: [\"1541ii\"], seq: [[1, 1800, 1], [0, 4200, 0]], t: [\"Normale\", \"Normal\"], d: [\"Rossa fissa; la verde si accende e il motore gira per circa 2 secondi, poi si spengono.\", \"Red steady; green lights and the motor spins for about 2 seconds, then both stop.\"] },\n  { test: \"t-acc\", drives: [\"1541\"], motor: false, seq: [[1, 1800, 1], [0, 4200, 0]], t: [\"Normale\", \"Normal\"], d: [\"Verde fisso; il rosso si accende e il motore gira per circa 2 secondi, poi si spengono.\", \"Green steady; red lights and the motor spins for about 2 seconds, then both stop.\"] },\n  { test: \"t-acc\", drives: [\"pet\"], seq: [[1, 900, 0], [0, 4500, 0]], t: [\"Normale\", \"Normal\"], d: [\"Le spie si accendono un attimo e si spengono (sull'8050 resta verde quella centrale).\", \"The lights come on briefly and go out (on the 8050 the centre one stays green).\"] },\n  { test: \"t-acc\", drives: [\"1571\"], seq: [[1, 1000, 1], [0, 2000, 1], [0, 4000, 0]], t: [\"Normale\", \"Normal\"], d: [\"Rossa fissa; la verde si accende per un secondo, il motore gira per circa 3 secondi e la testina fa un piccolo scatto.\", \"Red steady; green lights for a second, the motor runs for about 3 seconds and the head gives a small nudge.\"] },\n  { test: \"t-acc\", drives: [\"1581\"], seq: [[1, 2000, 0], [0, 4500, 0]], t: [\"Normale\", \"Normal\"], d: [\"La verde resta accesa per circa 2 secondi di autotest, la testina fa un leggero \\\"burp\\\". Il motore non gira senza disco.\", \"Green stays on for about 2 seconds of self-test, the head gives a faint \\\"burp\\\". The motor does not turn without a disk.\"] },\n  { go: \"dead\", power: false, seq: [[0, 1000]], t: [\"Tutto spento\", \"Completely dead\"], d: [\"Nessuna spia e nessun rumore.\", \"No lights and no noise.\"] },\n  { go: \"dim\", dim: true, motor: true, seq: [[0, 1000]], drives: [\"1541\", \"1541ii\", \"pet\"], t: [\"Spia fioca\", \"Dim power light\"], d: [\"La spia di alimentazione \u00e8 debole o tremola.\", \"The power light is weak or flickers.\"] },\n  { go: \"redmotor\", motor: true, seq: [[1, 1000]], t: [\"Attivit\u00e0 fissa\", \"Activity light stuck on\"], d: [\"La spia di attivit\u00e0 resta accesa e il drive non risponde; spesso il motore non si ferma.\", \"The activity light stays on and the drive does not respond; often the motor never stops.\"] },\n  { go: \"blinkcode\", drives: [\"1541\", \"1541ii\", \"pet\"], motor: false, seq: [[1, 220], [0, 220], [1, 220], [0, 220], [1, 220], [0, 1400]], t: [\"Codice a lampeggi\", \"Flash code\"], d: [\"Lampeggia alcune volte, pausa, ripete: conta i lampi (qui 3 = ROM $C000 su un 1541).\", \"Flashes a few times, pauses, repeats: count them (3 here = the $C000 ROM on a 1541).\"] },\n  { go: \"blink1s\", motor: true, drives: [\"1541\", \"1541ii\", \"1571\", \"1581\"], seq: [[1, 450], [0, 1300]], t: [\"Lampeggio lento\", \"Slow flashing\"], d: [\"Un lampo ogni 1\u20132 secondi mentre il motore gira.\", \"One flash every 1\u20132 seconds while the motor runs.\"] },\n  { go: \"motornoled\", motor: true, seq: [[0, 1000]], drives: [\"1541\", \"1571\"], t: [\"Solo motore\", \"Motor only\"], d: [\"Spia di attivit\u00e0 spenta, il motore gira sempre.\", \"Activity light off, the motor runs all the time.\"] },\n  { go: \"fnfspin\", drives: [\"1581\"], motor: true, seq: [[1, 260, 1, 1], [1, 260, 1, 0]], t: [\"Errore disco (1581)\", \"Disk error (1581)\"], d: [\"La spia rossa alterna acceso e mezzo acceso circa due volte al secondo: il drive segnala un errore di lettura.\", \"The red light alternates bright and dim about twice a second: the drive is reporting a read error.\"] }\n],\n\nboot: [\"    **** COMMODORE 64 BASIC V2 ****\", \"\", \" 64K RAM SYSTEM  38911 BASIC BYTES FREE\", \"\", \"READY.\"],\nscreens: [\n  { go: \"dnp\", lines: [[\"LOAD\\\"$\\\",8\", \"\", \"SEARCHING FOR $\", \"?DEVICE NOT PRESENT  ERROR\", \"READY.\"], [\"LOAD\\\"$\\\",8\", \"\", \"SEARCHING FOR $\", \"?DEVICE NOT PRESENT  ERROR\", \"READY.\"]], t: [\"?DEVICE NOT PRESENT\", \"?DEVICE NOT PRESENT\"], d: [\"Il computer non trova il drive sul bus.\", \"The computer cannot find the drive on the bus.\"] },\n  { go: \"hang\", hang: true, lines: [[\"LOAD\\\"$\\\",8\", \"\", \"SEARCHING FOR $\"], [\"LOAD\\\"$\\\",8\", \"\", \"SEARCHING FOR $\"]], t: [\"Bloccato su SEARCHING\", \"Stuck on SEARCHING\"], d: [\"Resta l\u00ec per sempre: il cursore non torna.\", \"It sits there forever: the cursor never comes back.\"] },\n  { go: \"fnfnospin\", lines: [[\"LOAD\\\"$\\\",8\", \"\", \"SEARCHING FOR $\", \"?FILE NOT FOUND  ERROR\", \"READY.\"], [\"LOAD\\\"$\\\",8\", \"\", \"SEARCHING FOR $\", \"?FILE NOT FOUND  ERROR\", \"READY.\"]], t: [\"?FILE NOT FOUND (disco fermo)\", \"?FILE NOT FOUND (disk still)\"], d: [\"Il disco non gira nemmeno.\", \"The disk does not even spin.\"] },\n  { go: \"fnfspin\", lines: [[\"RUN\", \"21, READ ERROR,18,00\", \"READY.\"], [\"RUN\", \"21, READ ERROR,18,00\", \"READY.\"]], t: [\"21, READ ERROR\", \"21, READ ERROR\"], d: [\"Il disco gira ma il drive non trova le tracce.\", \"The disk spins but the drive cannot find the tracks.\"] },\n  { go: \"errmany\", lines: [[\"RUN\", \"23, READ ERROR,05,03\", \"READY.\"], [\"RUN\", \"23, READ ERROR,05,03\", \"READY.\"]], t: [\"20, 23, 27 READ ERROR\", \"20, 23, 27 READ ERROR\"], d: [\"Errori sparsi su settori diversi.\", \"Scattered errors on different sectors.\"] },\n  { go: \"notready\", lines: [[\"RUN\", \"74,DRIVE NOT READY,00,00\", \"READY.\"], [\"RUN\", \"74,DRIVE NOT READY,00,00\", \"READY.\"]], t: [\"74, DRIVE NOT READY\", \"74, DRIVE NOT READY\"], d: [\"Il disco c'\u00e8 ma il drive dice che non \u00e8 pronto.\", \"The disk is in but the drive says it is not ready.\"] },\n  { go: \"wp\", lines: [[\"RUN\", \"26,WRITE PROTECT ON,18,00\", \"READY.\"], [\"RUN\", \"26,WRITE PROTECT ON,18,00\", \"READY.\"]], t: [\"26, WRITE PROTECT ON\", \"26, WRITE PROTECT ON\"], d: [\"Rifiuta di scrivere anche con la tacca libera.\", \"It refuses to write even with the notch open.\"] },\n  { go: \"somedisks\", drives: [\"1541\", \"1541ii\", \"1571\", \"pet\"], lines: [[\"LOAD\\\"$\\\",8\", \"SEARCHING FOR $\", \"LOADING\", \"READY.\", \"LIST\", \"\", \"0 \\\"\u2592\u2593\u2591 \u259a\u259e \u2592\\\"  ?\u2593 2A\", \"?SYNTAX  ERROR\", \"READY.\"], [\"LOAD\\\"$\\\",8\", \"SEARCHING FOR $\", \"LOADING\", \"READY.\", \"LIST\", \"\", \"0 \\\"\u2592\u2593\u2591 \u259a\u259e \u2592\\\"  ?\u2593 2A\", \"?SYNTAX  ERROR\", \"READY.\"]], t: [\"Directory sporca o a met\u00e0\", \"Garbled or partial directory\"], d: [\"Legge qualcosa ma male: velocit\u00e0 o allineamento.\", \"It reads something, badly: speed or alignment.\"] }\n],\n\npix: {\n  meter: [\".aaaaaaaaaa.\", \".abbbbbbbba.\", \".ab.cccc.ba.\", \".abbbbbbbba.\", \".aaaaaaaaaa.\", \".a..aaaa..a.\", \".a.a....a.a.\", \".a..aaaa..a.\", \".aaaaaaaaaa.\", \"..d......e..\", \"..d......e..\", \"..d......e..\"],\n  scope: [\"aaaaaaaaaaaa\", \"abbbbbbbbbba\", \"ab..c...c.ba\", \"ab.c.c.c.cba\", \"abc...c...ba\", \"abbbbbbbbbba\", \"aaaaaaaaaaaa\", \"a.dd.dd.dd.a\", \"aaaaaaaaaaaa\", \"............\", \"............\", \"............\"],\n  probe: [\".......aa...\", \"......abba..\", \".....abba...\", \"....abba....\", \"...abba.....\", \"..acca......\", \".acca.......\", \"acca........\", \"aa..........\", \"d...........\", \"d...........\", \"d...........\"],\n  iron: [\"..........aa\", \".........aba\", \"........aba.\", \".......aba..\", \"......cca...\", \".....cc.....\", \"....cc......\", \"...dd.......\", \"..dd........\", \".dd.........\", \"dd..........\", \"d...........\"],\n  cart: [\".aaaaaaaaaa.\", \".abbbbbbbba.\", \".abccccccba.\", \".abccccccba.\", \".abbbbbbbba.\", \".aaaaaaaaaa.\", \".aaaaaaaaaa.\", \"..d.d.d.d...\", \"..d.d.d.d...\", \"............\", \"............\", \"............\"],\n  chip: [\".d.d.d.d.d..\", \"aaaaaaaaaaa.\", \"abbbbbbbbbad\", \"ab.......ba.\", \"ab.ccccc.bad\", \"ab.......ba.\", \"abbbbbbbbbad\", \"aaaaaaaaaaa.\", \".d.d.d.d.d..\", \"............\", \"............\", \"............\"],\n  eprom: [\"aaaaaaaaaaaa\", \"abbbbbbbbbba\", \"ab.cccccc.ba\", \"ab.c....c.ba\", \"ab.cccccc.ba\", \"abbbbbbbbbba\", \"aaaaaaaaaaaa\", \".d.d.d.d.d.d\", \"............\", \"............\", \"............\", \"............\"],\n  spray: [\"....aa......\", \"...abba..c..\", \"....aa..c.c.\", \"...aaaa...c.\", \"..abbbba....\", \"..abbbba....\", \"..abccba....\", \"..abccba....\", \"..abbbba....\", \"..abbbba....\", \"..aaaaaa....\", \"............\"],\n  psu: [\"aaaaaaaaaaaa\", \"abbbbbbbbbba\", \"ab.c.c.c..ba\", \"abbbbbbbbbba\", \"aaaaaaaaaaaa\", \".....dd.....\", \".....d......\", \".....d......\", \"....ddd.....\", \"....d.d.....\", \"............\", \"............\"],\n  brush: [\"..........aa\", \".........aa.\", \"........aa..\", \".......aa...\", \"......aa....\", \".....bbb....\", \"....bbbbb...\", \"...ccccc....\", \"..ccccc.....\", \".cccc.......\", \"............\", \"............\"],\n  lens: [\"...aaaa.....\", \"..abbbba....\", \".abccccba...\", \".abccccba...\", \".abccccba...\", \"..abbbba....\", \"...aaaa.d...\", \"........d...\", \".........d..\", \"..........d.\", \"............\", \"............\"],\n  book: [\"aaaaa.aaaaa.\", \"abbba.abbba.\", \"abbbaaabbba.\", \"abbba.abbba.\", \"abbba.abbba.\", \"abbbaaabbba.\", \"aaaaa.aaaaa.\", \".....c......\", \"............\", \"............\", \"............\", \"............\"],\n  people: [\"..aa....aa..\", \".abba..abba.\", \".abba..abba.\", \"..aa....aa..\", \".aaaa..aaaa.\", \"aaaaaaaaaaaa\", \"aaaaaaaaaaaa\", \"............\", \"............\", \"............\", \"............\", \"............\"],\n  disk: [\"aaaaaaaaaaa.\", \"a..bbbbb..aa\", \"a..bbbbb...a\", \"a..........a\", \"a....cc....a\", \"a...c..c...a\", \"a...c..c...a\", \"a....cc....a\", \"a..........a\", \"a...dddd...a\", \"a...dddd...a\", \"aaaaaaaaaaaa\"],\n  driver: [\"..........aa\", \".........aaa\", \"........aaa.\", \".......aaa..\", \"......bbb...\", \".....bbb....\", \"....dd......\", \"...dd.......\", \"..dd........\", \".dd.........\", \"dd..........\", \"d...........\"],\n  gauge: [\"aaaaaaaaaaaa\", \"abbbbbbbbbba\", \"aaaaaaaaaaaa\", \"..aaaaaaaaaa\", \"..abbbbbbbba\", \"..aaaaaaaaaa\", \"....aaaaaaaa\", \"....abbbbbba\", \"....aaaaaaaa\", \"......aaaaaa\", \"......abbbba\", \"......aaaaaa\"],\n  lamp: [\"....aaaa....\", \"...abbbba...\", \"..abbbbbba..\", \"..abbbbbba..\", \"..abbbbbba..\", \"...abbbba...\", \"....abba....\", \"....dddd....\", \"....dddd....\", \".....dd.....\", \"c.........c.\", \".c.......c..\"],\n  pc: [\"aaaaaaaaaaaa\", \"abbbbbbbbbba\", \"ab........ba\", \"ab..cccc..ba\", \"ab........ba\", \"abbbbbbbbbba\", \"aaaaaaaaaaaa\", \".....dd.....\", \"...dddddd...\", \"............\", \"dddddddddddd\", \"dddddddddddd\"]\n},\n\nboards: [], tests: [], align: [], speed: [], software: [], docs: [], tools: [], pcbs: []\n};\n\n\/* Schede e chip. C(rif, sigla, gruppo, funzione, sintomi, da controllare insieme, nota, sostituti).\n   Fonti: Ray Carlsen (1541chip.txt, 1541C.txt, 1541-II.txt, 1571diag.txt, 1581.txt, sx64.txt), manuali di servizio Commodore, liste parti di W. Levak. *\/\n(function (D) {\n  function C(ref, part, g, role, s, a, d, sub) { return { ref: ref, part: part, g: g, role: role, s: s || [], a: a || [], d: d, sub: sub }; }\n  var R = {\n    cpu: [\"CPU del drive\", \"Drive CPU\"], ram: [\"RAM di lavoro\", \"Work RAM\"], ram0: [\"RAM (anche pagina zero)\", \"RAM (including zero page)\"],\n    romC: [\"ROM DOS $C000\", \"DOS ROM $C000\"], romE: [\"ROM DOS $E000 (avvio)\", \"DOS ROM $E000 (start-up)\"], rom16: [\"ROM DOS 16K\", \"16K DOS ROM\"],\n    viaS: [\"VIA del bus seriale\", \"Serial bus VIA\"], viaD: [\"VIA della meccanica (motori, LED)\", \"Mechanism VIA (motors, LED)\"],\n    bus: [\"Driver del bus seriale\", \"Serial bus driver\"], logic: [\"Logica\", \"Glue logic\"], dec: [\"Decodifica indirizzi\", \"Address decoder\"],\n    pre: [\"Preamplificatore di lettura\", \"Read preamplifier\"], cmp: [\"Comparatore di lettura\", \"Read comparator\"], one: [\"Monostabile (tempi di lettura)\", \"One-shot (read timing)\"],\n    wbuf: [\"Buffer lettura\/scrittura\", \"Read\/write buffer\"], cnt: [\"Contatore\", \"Counter\"], clk: [\"Divisore del clock\", \"Clock divider\"],\n    osc: [\"Oscillatore 16 MHz\", \"16 MHz oscillator\"], r5: [\"Regolatore +5 V\", \"+5 V regulator\"], r12: [\"Regolatore +12 V\", \"+12 V regulator\"],\n    head: [\"Testina lettura\/scrittura\", \"Read\/write head\"], wps: [\"Sensore protezione \/ cambio disco\", \"Write-protect \/ disk-change sensor\"]\n  };\n  var HEAD_N = [\"Le testine Newtronics si aprono spesso (filo del piedino 5): \u00e8 il guasto pi\u00f9 frequente in assoluto nei 1541 riparati da Carl. Una testina aperta non si ripara: si cambia la meccanica.\", \"Newtronics heads often go open (the pin 5 wire): it is the single most common fault in the 1541s Carl repaired. An open head cannot be fixed: replace the mechanism.\"];\n  var HEAD = [\"Sporca o consumata d\u00e0 errori su tutti i dischi; aperta non legge pi\u00f9 niente.\", \"Dirty or worn it gives errors on every disk; open it reads nothing at all.\"];\n  var ROMSUB = [\"Si pu\u00f2 rifare con una EPROM 2764\/27C64 su adattatore (la piedinatura della 2364 \u00e8 diversa), o passare a JiffyDOS o a un adattatore ROM unica.\", \"Can be replaced by a 2764\/27C64 EPROM on an adapter (the 2364 pinout differs), or by JiffyDOS or a single-ROM adapter.\"];\n  var VIASUB = [\"Va bene un 6522 qualsiasi, anche il W65C22N nuovo di WDC.\", \"Any 6522 will do, including the new WDC W65C22N.\"];\n  var GA325 = [\"Esiste un sostituto moderno open source a CPLD: EasyGate1541. Altrimenti un chip usato da un'altra scheda con lo stesso numero.\", \"There is a modern open-source CPLD replacement: EasyGate1541. Otherwise a used chip from another board with the same number.\"];\n  var GA828 = [\"Nessun sostituto moderno noto: si recupera da un 1541B\/C, 1541-II o 1571 (stesso chip). Attenzione: la -02 ha 42 piedini.\", \"No known modern replacement: take one from a 1541B\/C, 1541-II or 1571 (same chip). Note: the -02 has 42 pins.\"];\n  var STD = \"redmotor\"; \/\/ il sintomo tipico di CPU, ROM, VIA e logica intorno\n\n  function brown(v2) {\n    return [\n      C(\"UC4\", \"6502\", \"cpu\", R.cpu, [STD]),\n      C(\"UB2\", \"2016 (2K)\", \"cpu\", R.ram0, [\"blink1s\", \"blinkcode\"], [], [\"Con la RAM guasta il motore gira e la spia lampeggia lenta (codice da 1 o 4 lampi).\", \"With bad RAM the motor runs and the light flashes slowly (1 or 4 flash code).\"], [\"Qualsiasi 6116 \/ 2016 da 150 ns o pi\u00f9 veloce.\", \"Any 6116 \/ 2016, 150 ns or faster.\"]),\n      C(\"UB3\", \"325302-01\", \"cpu\", R.romC, [\"blinkcode\"], [], [\"3 lampi ripetuti all'accensione.\", \"3 repeating flashes at power-on.\"], ROMSUB),\n      C(\"UB4\", \"901229-03\/-05\", \"cpu\", R.romE, [STD], [\"blinkcode\"], [\"Guasto frequente. Contiene il vettore di reset e l'autotest: se \u00e8 morta il drive non riesce nemmeno a lampeggiare.\", \"A common failure. It holds the reset vector and the self-test: if it is dead the drive cannot even flash.\"], ROMSUB),\n      C(\"UC2\", \"6522\", \"io\", R.viaD, [STD], [\"motoralways\"], null, VIASUB),\n      C(\"UC3\", \"6522\", \"io\", R.viaS, [\"hang\"], [\"dnp\"], [\"Si accende normalmente ma al LOAD resta su SEARCHING FOR senza motore n\u00e9 spia, e il computer si blocca. \u00c8 il 6522 che si guasta pi\u00f9 spesso.\", \"Powers up normally, but on LOAD it sits at SEARCHING FOR with no motor or light, and the computer locks up. It is the 6522 that fails most often.\"], VIASUB),\n      C(\"UB1\", v2 ? \"7406 \/ 7707\" : \"7406\", \"bus\", R.bus, [\"dnp\", \"hang\"], [\"noreset\", \"c64black\"], [\"Guasto parziale: SEARCHING FOR o DEVICE NOT PRESENT. Guasto totale: il drive non si resetta e non risponde. I 7406 MOS (7707) si rompono spesso.\", \"Partial failure: SEARCHING FOR or DEVICE NOT PRESENT. Total failure: the drive does not reset or respond. MOS-made 7406s (7707) fail often.\"]),\n      C(\"UA1\", \"74LS14\", \"bus\", [\"Ingressi del bus e reset\", \"Bus inputs and reset\"], [\"fnfinter\", STD], [\"noreset\", \"hang\"], [\"Guasto parziale: FILE NOT FOUND ogni tanto o mancato reset all'accensione; guasto totale: spia accesa e motore che gira.\", \"Partial failure: occasional FILE NOT FOUND or no reset at power-on; total failure: light on and motor running.\"]),\n      C(\"UC1\", \"325572-01\", \"rw\", [\"Gate array: lettura\/scrittura e motore\", \"Gate array: read\/write and motor\"], [\"fnfnospin\", \"motoralways\"], [], [\"Al reset la spia si accende un attimo ma il disco non gira; al LOAD FILE NOT FOUND. Pu\u00f2 anche far girare il motore senza motivo.\", \"At reset the light flashes briefly but the disk does not spin; on LOAD, FILE NOT FOUND. It can also spin the motor for no reason.\"], GA325),\n      C(\"UD2\", \"7407 \/ 7417\", \"rw\", R.wbuf, [\"fnfnospin\", \"motoralways\", \"writebad\"], [\"nostep\"], [\"Il disco non gira, la testina si muove appena e FILE NOT FOUND. Un tipo di guasto lascia solo il motore sempre acceso; un altro legge bene ma formatta male.\", \"The disk does not spin, the head barely moves and FILE NOT FOUND. One failure only leaves the motor always on; another reads fine but formats badly.\"]),\n      C(\"UD1\", v2 ? \"7406 \/ M53206P\" : \"7406\", \"motor\", [\"Driver di motore passo-passo e LED\", \"Stepper and LED driver\"], [\"spinnoled\", \"nostep\"], [\"searchmotor\", \"fnfspin\"], [\"All'accensione il motore gira un attimo senza spia; al LOAD resta su SEARCHING FOR. Guasto parziale: non legge, la testina non si muove o ronza.\", \"At power-on the motor spins briefly with no light; on LOAD it stays at SEARCHING FOR. Partial failure: no reads, the head does not move or buzzes.\"]),\n      C(\"UD4\", v2 ? \"9602 \/ 74123\" : \"9602 \/ 8602\", \"rw\", R.one, [\"searchmotor\"]),\n      C(\"UE6\", \"74LS193\", \"rw\", R.cnt, [\"searchmotor\"]),\n      C(\"UE4\", \"LM311\", \"rw\", R.cmp, [\"fnfspin\"]),\n      C(\"UF3\", \"NE592\", \"rw\", R.pre, [\"fnfspin\"]),\n      C(\"UF4\", \"NE592\", \"rw\", [\"Amplificatore di lettura\", \"Read amplifier\"], [\"fnfspin\"]),\n      C(\"UD5\", \"74LS197 \/ 74177\", \"logic\", R.clk, [STD], [\"noreset\"]),\n      C(\"UD3\", \"74LS86\", \"logic\", R.logic, [STD]),\n      v2 ? C(\"UC6\", \"74LS04\", \"logic\", R.logic, [STD]) : C(\"UC5\", \"74LS04 \/ 74LS14\", \"logic\", R.logic, [STD]),\n      v2 ? C(\"UC7\", \"74LS00\", \"logic\", R.logic, [STD]) : C(\"UC6\", \"74LS00\", \"logic\", R.logic, [STD]),\n      C(v2 ? \"UC8\" : \"UC7\", \"74LS42\", \"logic\", R.dec, [\"blinkslow\"]),\n      C(\"VR1\", \"7812\", \"power\", R.r12, [\"motorslow\", \"notready\"], [\"fnfnospin\"], [\"Spia accesa ma motori lenti o fermi; FILE NOT FOUND o DRIVE NOT READY. Controlla anche il tantalio C15 in corto.\", \"Light on but motors slow or stopped; FILE NOT FOUND or DRIVE NOT READY. Also check for a shorted tantalum C15.\"]),\n      C(\"C15\", [\"10 \u00b5F tantalio\", \"10 \u00b5F tantalum\"], \"power\", [\"Condensatore sul +12 V\", \"Capacitor on +12 V\"], [\"motorslow\"], [\"dead\"], [\"Se va in corto abbassa i +12 V (a volte con odore di bruciato).\", \"When it shorts it pulls +12 V down (sometimes with a burning smell).\"]),\n      C(\"VR2\", \"7805\", \"power\", R.r5, [\"dim\", \"dead\"], [\"motoralways\"]),\n      C(v2 ? \"CR1\" : \"CR3\", \"ponte 2 A (+5 V)\", \"power\", [\"Raddrizzatore del +5 V\", \"+5 V bridge rectifier\"], [\"dim\", \"warm\"], [\"motoralways\", \"dead\"], [\"Scalda molto anche quando \u00e8 sano. Pu\u00f2 cedere solo dopo che si \u00e8 scaldato.\", \"It runs very hot even when good. It can fail only once it has warmed up.\"]),\n      C(v2 ? \"CR3\" : \"CR1\", \"ponte 2 A (+12 V)\", \"power\", [\"Raddrizzatore del +12 V\", \"+12 V bridge rectifier\"], [\"motorslow\"], [\"fnfnospin\"]),\n      C(v2 ? \"Newtronics\" : \"ALPS\", [\"testina\", \"head\"], \"mech\", R.head, [\"fnfspin\"], [\"errmany\", \"somedisks\"], v2 ? HEAD_N : [\"Le testine ALPS si aprono raramente; pi\u00f9 spesso si induriscono il grasso del perno e le guide.\", \"ALPS heads rarely go open; more often the spindle grease and the rails go hard.\"])\n    ];\n  }\n\n  D.boards = [\n    \/* ---------- 1541 ---------- *\/\n    { id: \"long\", drive: \"1541\", label: [\"Scheda lunga bianca (1540001 \/ 1540008)\", \"White long board (1540001 \/ 1540008)\"],\n      note: [\"**1540 e primi 1541 bianchi.** Scheda grande con quattro RAM 2114 e logica di lettura\/scrittura discreta, sempre con meccanica ALPS. Sul circuito \u00e8 stampato **1540007**. I sintomi qui sono **dedotti** per analogia con le schede marroni: nessuna fonte li d\u00e0 chip per chip.\", \"**1540 and early white 1541s.** Large board with four 2114 RAMs and discrete read\/write logic, always with an ALPS mechanism. The bare board is marked **1540007**. Symptoms here are **inferred** from the brown boards: no source lists them chip by chip.\"],\n      chips: [\n        C(\"UCD5\", \"6502\", \"cpu\", R.cpu, [STD]),\n        C(\"UAB4\", \"325302-01\", \"cpu\", R.romC, [\"blinkcode\"], [], [\"3 lampi ripetuti.\", \"3 repeating flashes.\"], ROMSUB),\n        C(\"UAB5\", \"901229 \/ 325303\", \"cpu\", R.romE, [STD], [\"blinkcode\"], [\"La 325303-01 \u00e8 la ROM del 1540 (VIC-20): cambiandola con una 901229 il 1540 diventa un 1541.\", \"325303-01 is the 1540 (VIC-20) ROM: swapping it for a 901229 turns a 1540 into a 1541.\"], ROMSUB),\n        C(\"UA2 UA3 UB2 UB3\", \"2114 \u00d74\", \"cpu\", [\"RAM 2K (due chip per KB)\", \"2K RAM (two chips per KB)\"], [\"blinkcode\", \"blink1s\"]),\n        C(\"UAB1\", \"6522\", \"io\", R.viaS, [\"hang\", \"dnp\"], [], null, VIASUB),\n        C(\"UCD4\", \"6522\", \"io\", R.viaD, [\"nostep\", \"fnfnospin\"], [STD], null, VIASUB),\n        C(\"UD1 UF2\", \"7406\", \"bus\", R.bus, [\"dnp\", \"noreset\"], [\"hang\", \"c64black\"]),\n        C(\"UC1\", \"74LS14\", \"bus\", [\"Ingressi del bus e reset\", \"Bus inputs and reset\"], [\"noreset\"], [STD]),\n        C(\"UC6\", \"74177 \/ 74LS197\", \"logic\", R.clk, [STD], [\"noreset\"], [\"Divide i 16 MHz fino al clock della CPU: se si ferma il drive \u00e8 morto.\", \"Divides 16 MHz down to the CPU clock: if it stops, the drive is dead.\"]),\n        C(\"UB8\", \"74LS42\", \"logic\", R.dec, [\"blinkslow\"], [STD]),\n        C(\"UC2 UE2\", \"74LS133 \/ 74LS139\", \"logic\", R.dec, [], [STD]),\n        C(\"UD2\", \"74LS164\", \"rw\", [\"Lettura: da seriale a parallelo\", \"Read: serial to parallel\"], [\"fnfspin\"]),\n        C(\"UD3\", \"74LS165\", \"rw\", [\"Scrittura: da parallelo a seriale\", \"Write: parallel to serial\"], [\"writebad\"]),\n        C(\"UE7 UF4\", \"74LS193\", \"rw\", [\"Divisore densit\u00e0 \/ contatore lettura\", \"Density divider \/ read counter\"], [\"fnfspin\"], [\"searchmotor\"]),\n        C(\"UG3\", \"9602\", \"rw\", R.one, [\"fnfspin\"], [\"searchmotor\"]),\n        C(\"UH4\", \"LM311\", \"rw\", R.cmp, [\"fnfspin\"]),\n        C(\"UH5 UH7\", \"NE592\", \"rw\", R.pre, [\"fnfspin\"]),\n        C(\"UG4\", \"7417\", \"rw\", [\"Buffer scrittura\/cancellazione\", \"Write\/erase buffer\"], [\"writebad\"], [\"fnfnospin\"]),\n        C(\"ALPS\", [\"testina\", \"head\"], \"mech\", R.head, [\"fnfspin\"], [\"errmany\", \"somedisks\"], [\"Nelle ALPS si indurisce il grasso del perno e del pressore: velocit\u00e0 che varia ed errori casuali.\", \"On ALPS units the spindle and clamper grease hardens: varying speed and random errors.\"])\n      ] },\n    { id: \"b1540050\", drive: \"1541\", label: [\"Marrone ALPS (1540050)\", \"Brown ALPS (1540050)\"],\n      note: [\"**1541 marrone del 1982 con meccanica ALPS** (porta che si abbassa). Sintomi dalle prove di Ray Carlsen. Le schede corte 1540048 e 250442\/250446 usano in gran parte le stesse posizioni.\", \"**1982 brown 1541 with ALPS mechanism** (push-down door). Symptoms from Ray Carlsen's tests. The short boards 1540048 and 250442\/250446 mostly use the same positions.\"],\n      chips: brown(false) },\n    { id: \"b251830\", drive: \"1541\", label: [\"Marrone Newtronics (251830 \/ 251777)\", \"Brown Newtronics (251830 \/ 251777)\"],\n      note: [\"**1541 marrone del 1984 con meccanica Newtronics** (leva a rotazione). Rispetto alla versione ALPS cambiano alcune sigle (UC6\/UC7\/UC8) e i due ponti raddrizzatori sono invertiti. Le Newtronics fanno pi\u00f9 rumore e hanno spesso la testina aperta.\", \"**1984 brown 1541 with Newtronics mechanism** (twist latch). Compared with the ALPS version some references change (UC6\/UC7\/UC8) and the two bridge rectifiers are swapped. Newtronics units are noisier and often have an open head.\"],\n      chips: brown(true) },\n    { id: \"b250448\", drive: \"1541\", label: [\"1541B \/ 1541C (250448 \/ 251854)\", \"1541B \/ 1541C (250448 \/ 251854)\"],\n      note: [\"**Scheda corta del 1541C** (e 1541B, stessa elettronica nel case vecchio): un'unica ROM da 16K, gate array 251828 e 251829 e un ibrido per la testina. Ha un sensore ottico di traccia 0 che Commodore ha disattivato: per questo la testina sbatte a ogni accensione. Sul 1541C **VR1 \u00e8 il +5 V**, al contrario delle schede ALPS.\", \"**1541C short board** (and 1541B, same electronics in the old case): one 16K ROM, 251828 and 251829 gate arrays and a head hybrid. It has an optical track-0 sensor that Commodore disabled: that is why the head knocks at every power-on. On the 1541C **VR1 is +5 V**, the opposite of the ALPS boards.\"],\n      chips: [\n        C(\"UC2\", \"6502\", \"cpu\", R.cpu, [STD]),\n        C(\"UA2\", \"251968\", \"cpu\", R.rom16, [STD], [\"blinkcode\"], [\"Motore sempre in rotazione, spia accesa o lampeggiante.\", \"Motor always running, light on or flashing.\"], [\"Si legge come una 27128: va bene una EPROM 27C128 (o 27C256 con l'immagine doppia). La 251968-03 del 1541-II riduce i colpi della testina all'accensione.\", \"It reads as a 27128: a 27C128 EPROM works (or a 27C256 with the image doubled). The 1541-II's 251968-03 reduces the head knocking at power-on.\"]),\n        C(\"UA3\", \"2016 (2K)\", \"cpu\", R.ram0, [\"blink1s\"], [\"blinkcode\"], [\"Motore acceso e spia che lampeggia lenta, circa ogni 2 secondi.\", \"Motor on and light flashing slowly, about every 2 seconds.\"]),\n        C(\"UC1\", \"6522\", \"io\", R.viaS, [\"hang\"], [], [\"Parte normalmente ma ignora i comandi: SEARCHING FOR.\", \"Starts normally but ignores commands: SEARCHING FOR.\"], VIASUB),\n        C(\"UC3\", \"6522\", \"io\", R.viaD, [\"motornoled\", \"fnfnospin\"], [], null, VIASUB),\n        C(\"UA1\", \"7406\", \"bus\", R.bus, [\"noreset\", \"hang\"], [\"dnp\", \"c64black\"]),\n        C(\"UB1\", \"74LS14\", \"bus\", [\"Ingressi del bus e reset\", \"Bus inputs and reset\"], [\"hang\", \"dnp\"]),\n        C(\"UC6\", \"74LS04 \/ 7406\", \"logic\", R.logic, [\"noreset\"], [\"motoralways\"], [\"Le fonti non concordano sulla sigla: guarda il chip montato.\", \"The sources disagree on the part: check the chip on your board.\"]),\n        C(\"UC4\", \"251828 (64H156)\", \"rw\", [\"Gate array: lettura\/scrittura GCR e passo-passo\", \"Gate array: GCR read\/write and stepper\"], [\"fnfnospin\", \"wp\", \"nostep\"], [], null, GA828),\n        C(\"UC5\", \"251829 (64H157)\", \"logic\", [\"Gate array: indirizzi e velocit\u00e0\", \"Gate array: addressing and speed\"], [], [STD]),\n        C(\"UD1\", \"251853\", \"rw\", [\"Ibrido amplificatore della testina\", \"Head amplifier hybrid\"], [\"fnfspin\", \"writebad\"], [], [\"Il connettore nero della testina, se forzato al contrario, lo distrugge.\", \"Forcing the black head connector in backwards destroys it.\"], [\"Raro. La -01 e la -02 non sono intercambiabili senza cambiare alcune resistenze.\", \"Rare. The -01 and -02 are not interchangeable without changing some resistors.\"]),\n        C(\"UD2\", \"16 MHz\", \"logic\", R.osc, [], [STD, \"noreset\"]),\n        C(\"VR1\", \"7805 \/ LM323\", \"power\", R.r5, [\"dim\", \"dead\"]),\n        C(\"VR2\", \"7812\", \"power\", R.r12, [\"motorslow\", \"notready\"]),\n        C(\"WP\", [\"sensore IR\", \"IR sensor\"], \"motor\", R.wps, [\"wp\", \"idmismatch\"], [], [\"Se non vede il cambio disco, il disco successivo pu\u00f2 essere rovinato in scrittura.\", \"If it misses a disk change, the next disk can be corrupted when written.\"]),\n        C(\"Mitsumi\", [\"testina\", \"head\"], \"mech\", R.head, [\"fnfspin\"], [\"errmany\", \"somedisks\"], HEAD)\n      ] },\n    { id: \"sx64\", drive: \"1541\", label: [\"SX-64 (250410)\", \"SX-64 (250410)\"],\n      note: [\"**Drive interno dell'SX-64**, simile alla scheda 1540048 ma con altre sigle. Meccanica ALPS. Il pulsante dentro lo sportello resetta solo il drive.\", \"**SX-64 internal drive**, similar to the 1540048 board but with different references. ALPS mechanism. The button inside the door resets the drive only.\"],\n      chips: [\n        C(\"UA3\", \"901229\", \"cpu\", R.romE, [STD], [], [\"Guasto frequente.\", \"A common failure.\"], ROMSUB),\n        C(\"UA4\", \"325302-01\", \"cpu\", R.romC, [\"blinkcode\"], [], [\"3 lampi ripetuti.\", \"3 repeating flashes.\"], ROMSUB),\n        C(\"UA1\", \"2016 (2K)\", \"cpu\", R.ram0, [\"blink1s\"]),\n        C(\"UBC3\", \"6522\", \"io\", R.viaS, [\"hang\"], [], null, VIASUB),\n        C(\"UB2 UBC4 UC2\", [\"6502 \/ 6522 \/ logica\", \"6502 \/ 6522 \/ logic\"], \"logic\", [\"CPU, VIA e logica\", \"CPU, VIA and logic\"], [], [STD]),\n        C(\"UE3\", \"7406 \/ 7707\", \"bus\", R.bus, [\"dnp\"], [STD], [\"I 7406 MOS (7707) qui si guastano spesso.\", \"MOS-made 7406s (7707) fail often here.\"]),\n        C(\"UF2 UF3\", \"driver\", \"motor\", [\"Motore passo-passo\", \"Stepper motor\"], [\"nostep\"]),\n        C(\"UF5\", \"325572-01\", \"rw\", [\"Gate array del motore\", \"Motor gate array\"], [\"fnfnospin\"], [], null, GA325),\n        C(\"UG4\", \"7417\", \"rw\", R.wbuf, [\"fnfnospin\", \"writebad\"]),\n        C(\"UH1 UJ1\", \"NE592\", \"rw\", R.pre, [\"fnfspin\"]),\n        C(\"UK4\", \"LM311\", \"rw\", R.cmp, [\"fnfspin\"]),\n        C(\"ALPS\", [\"testina\", \"head\"], \"mech\", R.head, [\"fnfspin\"], [\"errmany\"], [\"Grasso indurito nel pressore: velocit\u00e0 che varia ed errori casuali.\", \"Hardened clamper grease: varying speed and random errors.\"])\n      ] },\n\n    \/* ---------- 1541-II ---------- *\/\n    { id: \"ii340503\", drive: \"1541ii\", label: [\"1541-II (340503)\", \"1541-II (340503)\"],\n      note: [\"**1541-II**: scheda piccola con una ROM 16K, un solo gate array 251828 e l'amplificatore di testina CX20185 a montaggio superficiale. **Colori invertiti:** spia rossa = alimentazione, verde = attivit\u00e0. Numero di periferica con i due interruttori dietro (tutti e due su = 8).\", \"**1541-II**: small board with one 16K ROM, a single 251828 gate array and the surface-mount CX20185 head amplifier. **Colours reversed:** red light = power, green = activity. Device number with the two rear switches (both up = 8).\"],\n      chips: [\n        C(\"U3\", \"6502\", \"cpu\", R.cpu, [STD]),\n        C(\"U4\", \"251968-03\", \"cpu\", R.rom16, [STD], [\"blinkcode\"], [\"Motore sempre acceso, spia accesa o lampeggiante.\", \"Motor always on, light on or flashing.\"], [\"Si legge come una 27128: va bene una EPROM equivalente o JiffyDOS.\", \"It reads as a 27128: an equivalent EPROM or JiffyDOS works.\"]),\n        C(\"U5\", \"6116 \/ 2016\", \"cpu\", R.ram0, [\"blink1s\"], [], [\"Motore acceso e spia che lampeggia circa ogni 2 secondi.\", \"Motor on and light flashing about every 2 seconds.\"]),\n        C(\"U6\", \"6522\", \"io\", R.viaS, [\"hang\"], [\"dnp\"], null, VIASUB),\n        C(\"U8\", \"6522\", \"io\", R.viaD, [\"fnfnospin\"], [], null, VIASUB),\n        C(\"U7\", \"7406\", \"bus\", R.bus, [\"noreset\", \"hang\"], [\"dnp\", \"c64black\"]),\n        C(\"U14\", \"74LS14\", \"bus\", [\"Ingressi del bus e reset\", \"Bus inputs and reset\"], [\"noreset\"], [\"c64black\"]),\n        C(\"U1\", \"74LS08\", \"logic\", [\"Logica di reset\", \"Reset logic\"], [\"noreset\"]),\n        C(\"U2\", \"74LS42\", \"logic\", R.dec, [], [STD, \"blinkslow\"]),\n        C(\"U9\", \"74LS04\", \"logic\", R.logic, [\"wp\"]),\n        C(\"U11\", \"74LS86\", \"logic\", R.logic, [\"hang\"]),\n        C(\"U10\", \"251828 (64H156)\", \"rw\", [\"Gate array: lettura\/scrittura e passo-passo\", \"Gate array: read\/write and stepper\"], [\"fnfnospin\", \"wp\", \"nostep\"], [STD], null, GA828),\n        C(\"U12\", \"CX20185\", \"rw\", [\"Amplificatore della testina (SMD)\", \"Head amplifier (SMD)\"], [\"fnfspin\", \"writebad\"], [], [\"Prima di sospettarlo pulisci la testina. Un connettore della testina inserito al contrario lo brucia.\", \"Clean the head before suspecting it. A head plug fitted backwards burns it.\"], [\"Sostituti ufficiali: MC2871P o LA8200M.\", \"Official substitutes: MC2871P or LA8200M.\"]),\n        C(\"U13\", \"\u00b5PA2003C\", \"motor\", [\"Driver di motori e passo-passo\", \"Motor and stepper driver\"], [\"fnfnospin\", \"motoralways\", \"nostep\"], [], null, [\"Array di darlington tipo ULN2003.\", \"ULN2003-type darlington array.\"]),\n        C(\"PSU\", [\"alimentatore esterno\", \"external brick\"], \"power\", [\"Mattoncino +5 V \/ +12 V\", \"+5 V \/ +12 V brick\"], [\"dead\", \"warm\", \"dim\"], [\"notready\", \"errmany\"], [\"Il guasto pi\u00f9 comune: funziona da freddo e d\u00e0 errori o si blocca da caldo. \u00c8 sigillato nella resina: si sostituisce con uno moderno. Quello piccolo da 700 mA \u00e8 il pi\u00f9 debole.\", \"The most common fault: works cold, gives errors or locks up when warm. It is potted in resin: replace it with a modern one. The small 700 mA one is the weakest.\"]),\n        C(\"WP\", [\"sensore IR\", \"IR sensor\"], \"motor\", R.wps, [\"wp\", \"idmismatch\"]),\n        C(\"Chinon \/ Mitsumi\", [\"testina\", \"head\"], \"mech\", R.head, [\"fnfspin\"], [\"errmany\"], [\"La Chinon \u00e8 a presa diretta: niente cinghia e niente regolazione della velocit\u00e0. La Mitsumi ha la cinghia. Carl non ha mai visto un 1541-II disallineato.\", \"The Chinon is direct drive: no belt and no speed adjustment. The Mitsumi has a belt. Carl has never seen a misaligned 1541-II.\"])\n      ] },\n\n    \/* ---------- 1571 ---------- *\/\n    { id: \"c1571\", drive: \"1571\", label: [\"1571 (310420)\", \"1571 (310420)\"],\n      note: [\"**1571 da tavolo e C128D in plastica** (stessa elettronica, schema diverso). Meccanica Newtronics D502 o ALPS. Spia rossa = alimentazione, verde = attivit\u00e0. Sintomi dalle prove di Ray Carlsen (un chip tolto alla volta).\", \"**Stand-alone 1571 and plastic C128D** (same electronics, different schematic). Newtronics D502 or ALPS mechanism. Red light = power, green = activity. Symptoms from Ray Carlsen's tests (one chip pulled at a time).\"],\n      chips: [\n        C(\"U1\", \"6502\", \"cpu\", R.cpu, [STD, \"hang\"], [\"nostep\"], [\"Entrambe le spie accese, motore sempre in rotazione, testina ferma, computer bloccato.\", \"Both lights on, motor always running, head still, computer hung.\"]),\n        C(\"U2\", \"310654-03 \/ -05\", \"cpu\", [\"ROM DOS 3.0 (su zoccolo)\", \"DOS 3.0 ROM (socketed)\"], [STD], [\"side2\", \"diagcode\"], [\"La -03 ha difetti noti: muove la testina tra un settore e l'altro scrivendo sul lato 2, e il validate in modo 1541 pu\u00f2 rendere il lato 2 inaccessibile.\", \"The -03 has known bugs: it moves the head between sectors when writing side 2, and validate in 1541 mode can make side 2 unreachable.\"], [\"Monta la -05 (anche su EPROM 27256) o JiffyDOS 1571. Non usare la ROM del C128DCR (318047).\", \"Fit the -05 (also as a 27256 EPROM) or JiffyDOS 1571. Do not use the C128DCR ROM (318047).\"]),\n        C(\"U3\", \"2016 (2K)\", \"cpu\", R.ram, [\"blink1s\", \"hang\"], [\"diagcode\"], [\"La verde lampeggia circa una volta al secondo, nessun accesso, computer bloccato.\", \"Green flashes about once a second, no access, computer hung.\"]),\n        C(\"U4\", \"65C22A\", \"io\", R.viaD, [\"motornoled\"], [\"diagcode\"], [\"Spia verde spenta all'accensione e motore sempre in rotazione.\", \"Green light off at power-on and motor always running.\"], VIASUB),\n        C(\"U9\", \"65C22A\", \"io\", R.viaS, [\"hang\"], [\"c64black\", \"dnp\", \"diagcode\"], [\"Sembra normale ma non risponde e il computer si blocca. Pu\u00f2 tenere bassa la linea DATA.\", \"Looks normal but does not respond and the computer hangs. It can hold the DATA line low.\"], VIASUB),\n        C(\"U20\", \"6526 \/ 8520\", \"io\", [\"CIA del bus veloce\", \"Fast bus CIA\"], [\"only1541\"], [\"diagcode\"], [\"Senza di lui funziona solo in modo 1541.\", \"Without it, only 1541 mode works.\"], [\"Vanno bene 6526, 6526A, 8520 o 8521.\", \"6526, 6526A, 8520 or 8521 all work.\"]),\n        C(\"U5\", \"251829 (64H157)\", \"logic\", [\"Gate array: clock e temporizzazioni\", \"Gate array: clock and timing\"], [STD]),\n        C(\"U6\", \"251828 (64H156)\", \"rw\", [\"Gate array: lettura\/scrittura GCR\", \"Gate array: GCR read\/write\"], [STD, \"nostep\"], [\"hang\"], null, GA828),\n        C(\"U7\", [\"ibrido 251853\", \"251853 hybrid\"], \"rw\", [\"Amplificatore testina e driver passo-passo\", \"Head amplifier and stepper driver\"], [\"fnfspin\", \"writebad\"], [], [\"Raro, secondo Carl.\", \"Rare, according to Carl.\"]),\n        C(\"U11\", \"WD1770\", \"rw\", [\"Controller MFM (CP\/M, burst)\", \"MFM controller (CP\/M, burst)\"], [\"notready\"], [\"fnfspin\", \"diagcode\"], [\"Parte normalmente, la lettura fallisce, la testina va a traccia 0 e poi \\\"not ready\\\" con la verde che lampeggia veloce. Pu\u00f2 rovinare i dischi.\", \"Starts normally, reads fail, the head goes to track 0, then \\\"not ready\\\" with the green light flashing fast. It can corrupt disks.\"], [\"Il WD1772 \u00e8 un sostituto ufficiale Commodore.\", \"The WD1772 is an official Commodore substitute.\"]),\n        C(\"U8\", \"7406\", \"bus\", R.bus, [\"notready\"], [\"noreset\", \"errmany\"], [\"Sembra normale poi \\\"74 DRIVE NOT READY\\\". In un caso reale il drive non si resettava con il computer.\", \"Looks normal, then \\\"74 DRIVE NOT READY\\\". In a real case the drive did not reset with the computer.\"]),\n        C(\"U15\", \"74LS14\", \"bus\", [\"Ingressi del bus seriale e reset\", \"Serial bus inputs and reset\"], [STD, \"c64black\"], [], [\"\u00c8 collegato alla linea RESET del bus: guasto, pu\u00f2 tenere in reset anche il computer (schermo nero).\", \"It is tied to the bus RESET line: when bad it can hold the computer in reset too (black screen).\"]),\n        C(\"U16\", \"7406\", \"bus\", [\"Driver del motore e del bus\", \"Motor and bus driver\"], [\"dnp\", \"fnfnospin\"], [], [\"Sembra normale ma il motore non gira mai: DEVICE NOT PRESENT.\", \"Looks normal but the motor never turns: DEVICE NOT PRESENT.\"]),\n        C(\"U14\", \"7407\", \"bus\", [\"Buffer del bus\", \"Bus buffer\"], [\"writebad\", \"idmismatch\"], [\"fnfspin\"], [\"Non legge in modo 1571; in modo 1541 legge ma scrittura e formattazione danno errore.\", \"No reads in 1571 mode; in 1541 mode it reads but write and format give errors.\"]),\n        C(\"U19\", \"74LS241\", \"bus\", [\"Buffer (sensore indice)\", \"Buffer (index sensor)\"], [\"only1541\"]),\n        C(\"U10\", \"74LS74\", \"rw\", [\"Logica di scrittura\", \"Write logic\"], [\"writebad\"]),\n        C(\"U22\", \"74LS123\", \"rw\", R.one, [\"writebad\"], [\"hang\"], [\"Legge e scrive, ma la formattazione fallisce e blocca il computer.\", \"Reads and writes, but formatting fails and hangs the computer.\"]),\n        C(\"U12 U13 U18\", \"74F32 \/ 74LS266 \/ 74LS175\", \"logic\", R.logic, [STD, \"nostep\"]),\n        C(\"U17\", \"74LS14\", \"motor\", [\"Sensori (traccia 0, protezione)\", \"Sensors (track 0, write protect)\"], [STD, \"nostep\"], [\"wp\"]),\n        C(\"U21\", \"PST520\", \"power\", [\"Reset all'accensione\", \"Power-on reset\"], [], [\"noreset\"]),\n        C(\"Y1\", \"16 MHz\", \"logic\", R.osc, [], [STD, \"noreset\"]),\n        C(\"PSU\", [\"alimentatore interno\", \"internal PSU\"], \"power\", [\"Switching +5 V \/ +12 V (fusibile F101)\", \"+5 V \/ +12 V switcher (fuse F101)\"], [\"dead\"], [\"warm\", \"dim\"], [\"Affidabile, ma se inverti il connettore verso la scheda fai danni seri. Il trimmer VR201 regola i +5 V.\", \"Reliable, but plugging its connector into the board backwards does serious damage. Trimmer VR201 sets +5 V.\"]),\n        C(\"WP\", [\"sensore IR\", \"IR sensor\"], \"motor\", R.wps, [\"wp\", \"idmismatch\", \"writebad\"], [], [\"Lo stesso sensore rileva il cambio disco: cortocircuitarlo per scrivere sul retro dei dischi provoca DISK ID MISMATCH e dischi rovinati. Carl ha una modifica che lo evita.\", \"The same sensor detects disk changes: shorting it to write the flip side causes DISK ID MISMATCH and ruined disks. Carl has a mod that avoids this.\"]),\n        C(\"H1\", [\"superiore\", \"top\"], \"mech\", [\"Testina del lato 2\", \"Side 2 head\"], [\"side2\"], [\"fnfspin\"], [\"Fili che si rompono dentro la guaina, supporto piegato, alzatesta che si incolla. Trasporta il drive sempre con il cartoncino di protezione.\", \"Wires breaking inside the insulation, bent mount, sticking head lifter. Always move the drive with the transit card in.\"]),\n        C(\"H0\", [\"inferiore\", \"bottom\"], \"mech\", [\"Testina del lato 1 (modo 1541)\", \"Side 1 head (1541 mode)\"], [\"fnfspin\"], [\"errmany\", \"somedisks\"], HEAD)\n      ] },\n    { id: \"c1571cr\", drive: \"1571\", label: [\"1571CR nel C128DCR\", \"1571CR in the C128DCR\"],\n      note: [\"**C128DCR (case metallico):** il drive \u00e8 integrato nella scheda madre, con sigle U1xx e quasi nessuno zoccolo. Il MOS 5710 fa da controller MFM e da porta seriale veloce insieme. Aggiungi una ventola: Carl la consiglia caldamente.\", \"**C128DCR (metal case):** the drive is built into the main board, with U1xx references and almost no sockets. The MOS 5710 is both the MFM controller and the fast serial port. Add a fan: Carl strongly recommends it.\"],\n      chips: [\n        C(\"U101\", \"6502A\", \"cpu\", R.cpu, [STD]),\n        C(\"U102\", \"318047-01\", \"cpu\", [\"ROM DOS 3.1\", \"DOS 3.1 ROM\"], [STD], [\"diagcode\"], [\"Codice 2 del programma diagnostico. Se scalda molto, controlla il ripple sui +5 V.\", \"Diagnostic flash code 2. If it runs hot, check the ripple on +5 V.\"], [\"Non scambiarla con le ROM del 1571 da tavolo.\", \"Do not swap it with stand-alone 1571 ROMs.\"]),\n        C(\"U103\", \"2016 (2K)\", \"cpu\", R.ram, [\"diagcode\"], [\"blink1s\"], [\"Codice 3.\", \"Code 3.\"]),\n        C(\"U104\", \"65C22\", \"io\", R.viaD, [\"diagcode\"], [STD], [\"Codice 4.\", \"Code 4.\"], VIASUB),\n        C(\"U106\", \"65C22\", \"io\", R.viaS, [\"diagcode\"], [\"hang\"], [\"Codice 5.\", \"Code 5.\"], VIASUB),\n        C(\"U107\", \"MOS 5710\", \"rw\", [\"Controller MFM + porta seriale veloce\", \"MFM controller + fast serial port\"], [\"diagcode\"], [\"only1541\", \"fnfspin\"], [\"Codice 7. Sostituisce sia il WD1770 sia il 6526.\", \"Code 7. It replaces both the WD1770 and the 6526.\"], [\"Nessun sostituto: solo un chip da un altro C128DCR. (I \\\"sostituti\\\" elencati in un vecchio readme sono un errore.)\", \"No substitute: only a chip from another C128DCR. (The \\\"substitutes\\\" in an old readme are a mistake.)\"]),\n        C(\"U105\", \"251828\", \"rw\", [\"Gate array GCR\", \"GCR gate array\"], [STD, \"nostep\"], [], null, GA828),\n        C(\"U108\", \"MC2871A\", \"rw\", [\"Amplificatore della testina\", \"Head amplifier\"], [\"fnfspin\", \"writebad\"]),\n        C(\"CN12\", [\"connettore\", \"connector\"], \"mech\", [\"Connettore del drive sulla scheda madre\", \"Drive connector on the main board\"], [STD], [], [\"Spia accesa e sistema bloccato all'avvio: controlla che sia inserito bene.\", \"Light on and system hung at boot: check it is fully seated.\"]),\n        C(\"PSU\", [\"alimentatore interno\", \"internal PSU\"], \"power\", [\"+5 V, +12 V e 9 V AC (CN7)\", \"+5 V, +12 V and 9 V AC (CN7)\"], [\"dead\"], [\"warm\"], [\"Se inverti il connettore CN7 danneggi la scheda.\", \"Reversing connector CN7 damages the board.\"]),\n        C(\"Newtronics\", [\"testina\", \"head\"], \"mech\", R.head, [\"fnfspin\"], [\"errmany\", \"side2\"], HEAD)\n      ] },\n\n    \/* ---------- 1581 ---------- *\/\n    { id: \"c1581\", drive: \"1581\", label: [\"1581 (250471)\", \"1581 (250471)\"],\n      note: [\"**1581**: scheda 250471 con meccanica Chinon F-354E. L'unico chip su zoccolo \u00e8 la ROM U2. Spia verde = attivit\u00e0, rossa = alimentazione ed errori. Il guasto pi\u00f9 comune \u00e8 l'alimentatore esterno.\", \"**1581**: board 250471 with a Chinon F-354E mechanism. The only socketed chip is ROM U2. Green light = activity, red = power and errors. The most common fault is the external power supply.\"],\n      chips: [\n        C(\"U1\", \"6502A\", \"cpu\", R.cpu, [STD]),\n        C(\"U2\", \"318045 \/ 312558\", \"cpu\", [\"ROM DOS 10 (su zoccolo)\", \"DOS 10 ROM (socketed)\"], [STD], [\"diagcode\"], [\"Per Carl \u00e8 la causa tipica di \\\"verde accesa fissa, nessun accesso\\\". Codice 2 del diagnostico.\", \"For Carl it is the usual cause of \\\"green on steady, no access\\\". Diagnostic code 2.\"], [\"Si sostituisce con una EPROM 27256 programmata.\", \"Replace it with a programmed 27256 EPROM.\"]),\n        C(\"U3\", \"8K SRAM\", \"cpu\", R.ram, [\"diagcode\"], [STD], [\"Codice 3.\", \"Code 3.\"]),\n        C(\"U4\", \"WD1772\", \"rw\", [\"Controller del floppy\", \"Floppy controller\"], [\"blink1s\", \"nostep\", \"diagcode\"], [\"fnfspin\", \"fnfnospin\"], [\"Niente \\\"burp\\\" della testina all'accensione, verde che lampeggia una volta al secondo. I primi WD1770 difettosi rovinavano la directory (FILE NOT FOUND).\", \"No head \\\"burp\\\" at power-on, green flashing once a second. The first faulty WD1770 batches corrupted the directory (FILE NOT FOUND).\"], [\"Il WD1770 va bene solo con il ponticello J1 montato.\", \"The WD1770 only works with jumper J1 fitted.\"]),\n        C(\"U5\", \"8520A-1\", \"io\", [\"CIA: bus veloce, motore e lato\", \"CIA: fast bus, motor and side\"], [\"diagcode\", \"modes\"], [\"dnp\"], [\"Codice 4.\", \"Code 4.\"], [\"\u00c8 lo stesso CIA dell'Amiga.\", \"It is the same CIA as the Amiga's.\"]),\n        C(\"U8 U12\", \"7406\", \"bus\", R.bus, [], [\"hang\", \"dnp\"]),\n        C(\"U9\", \"74LS14\", \"bus\", [\"Ingressi\", \"Inputs\"], [STD], [\"hang\"]),\n        C(\"U10\", \"74LS93\", \"logic\", [\"Divisore del clock 16 MHz\", \"16 MHz clock divider\"], [\"dnp\", \"warm\"], [\"dead\"], [\"I primi 1581 avevano una saldatura difettosa al piedino 10 (massa): DEVICE NOT PRESENT a intermittenza. Rifai la saldatura.\", \"Early 1581s had a bad solder joint at pin 10 (ground): intermittent DEVICE NOT PRESENT. Resolder it.\"]),\n        C(\"U11\", \"7407\", \"motor\", [\"Buffer di motore e selezione lato\", \"Motor and side-select buffer\"], [\"modes\"], [\"fnfnospin\"]),\n        C(\"U13\", \"74LS241\", \"bus\", [\"Buffer\", \"Buffer\"], [\"hang\"], [\"modes\"], [\"In un caso reale bloccava il computer a ogni lettura, mentre formattazione e salvataggio sembravano andare.\", \"In a real case it hung the computer on every read, while format and save seemed to work.\"]),\n        C(\"U6 U7\", \"74LS139 \/ 74LS00\", \"logic\", R.dec, [], [STD]),\n        C(\"Y1\", \"16 MHz\", \"logic\", R.osc, [], [\"dead\", STD]),\n        C(\"PSU\", [\"alimentatore esterno\", \"external brick\"], \"power\", [\"Mattoncino +5 V \/ +12 V\", \"+5 V \/ +12 V brick\"], [\"dead\", \"warm\", \"notready\"], [\"errmany\", \"dim\"], [\"Il guasto pi\u00f9 comune: i +5 V calano sotto carico e il drive d\u00e0 errori a caso, spesso solo da caldo. Il cavo interno a 4 fili invertito distrugge il drive.\", \"The most common fault: +5 V sags under load and the drive gives random errors, often only when warm. Reversing the internal 4-wire cable destroys the drive.\"]),\n        C(\"SW\", [\"sensore disco\", \"disk switch\"], \"motor\", [\"Interruttore di disco inserito \/ cambio\", \"Disk-in \/ disk-change switch\"], [\"idmismatch\"], [\"notready\"], [\"Un microinterruttore a sinistra nello sportello: sporco o consumato, il drive non vede il cambio disco.\", \"A small switch on the left inside the door: dirty or worn, the drive misses disk changes.\"]),\n        C(\"Chinon\", [\"meccanica\", \"mechanism\"], \"mech\", [\"Meccanica 3\u00bd\\\" F-354E\", \"F-354E 3\u00bd\\\" mechanism\"], [\"fnfnospin\", \"nostep\"], [\"notready\", \"fnfspin\"], [\"Grasso indurito su guide e vite senza fine; si pu\u00f2 sostituire con una Chinon FB-354 da Amiga (con qualche modifica).\", \"Hardened grease on rails and worm screw; it can be replaced by an Amiga Chinon FB-354 (with some changes).\"])\n      ] },\n\n    \/* ---------- PET \/ CBM ---------- *\/\n    { id: \"p4040\", drive: \"pet\", label: [\"2040 \/ 3040 \/ 4040\", \"2040 \/ 3040 \/ 4040\"],\n      note: [\"**Drive doppio IEEE con meccanica Shugart SA390.** Due processori: un 6502 per il DOS e un 6504 per il controllo dei dischi, che si dividono 4K di RAM. All'accensione le tre spie si accendono un attimo e si spengono; se resta un codice a lampeggi, conta i lampi (test 2).\", \"**Dual IEEE drive with Shugart SA390 mechanism.** Two processors: a 6502 for the DOS and a 6504 for disk control, sharing 4K of RAM. At power-on the three lights come on briefly and go out; if a flash code repeats, count the flashes (test 2).\"],\n      chips: [\n        C(\"UN1\", \"6502\", \"cpu\", [\"CPU del DOS\", \"DOS CPU\"], [STD], [], [\"Se tutte le spie si accendono e restano accese, sospetta il 6502.\", \"If all lights come on and stay on, suspect the 6502.\"]),\n        C(\"UH3\", \"6504\", \"cpu\", [\"CPU del controller\", \"Controller CPU\"], [\"blinkcode\"], [], [\"Codici 5 e 10 (insieme al 6530).\", \"Codes 5 and 10 (along with the 6530).\"]),\n        C(\"UC1 UE1\", \"6532 RIOT\", \"io\", [\"Pagina zero, IEEE, spie\", \"Zero page, IEEE, lights\"], [\"blinkcode\", \"dnp\"], [], [\"Codice 1.\", \"Code 1.\"]),\n        C(\"UJ1 UL1 UH1\", \"ROM DOS\", \"cpu\", [\"ROM del DOS\", \"DOS ROMs\"], [\"blinkcode\"], [], [\"Codici 2, 3 e 4 (UJ1 solo sul 4040).\", \"Codes 2, 3 and 4 (UJ1 on the 4040 only).\"]),\n        C(\"UC4\u2013UF5\", \"2114 \u00d78\", \"cpu\", [\"4K di RAM condivisa\", \"4K shared RAM\"], [\"blinkcode\"], [], [\"Codici 7, 8 e 9 indicano la coppia di chip.\", \"Codes 7, 8 and 9 point to the chip pair.\"]),\n        C(\"UK3\", \"6530 RRIOT\", \"io\", [\"Firmware del controller (ROM a maschera)\", \"Controller firmware (mask ROM)\"], [\"blinkcode\"], [\"fnfspin\"], [\"Codici 5 e 10. \u00c8 programmato in fabbrica e diverso per ogni modello.\", \"Codes 5 and 10. It is factory-programmed and differs per model.\"], [\"Solo un chip da un drive uguale, o un adattatore con EPROM come il 251232 dell'SFD-1001.\", \"Only a chip from an identical drive, or an EPROM adapter like the SFD-1001's 251232.\"]),\n        C(\"UM3\", \"6522\", \"io\", [\"Motori e interfaccia GCR\", \"Motors and GCR interface\"], [\"nostep\", \"fnfnospin\"], [], null, VIASUB),\n        C(\"UK6\", \"901467-01\", \"rw\", [\"ROM di codifica GCR\", \"GCR encoding ROM\"], [\"fnfspin\", \"writebad\"]),\n        C(\"UB1 UB2 UD2\", \"MC3446\", \"bus\", [\"Buffer IEEE-488\", \"IEEE-488 buffers\"], [\"dnp\", \"hang\"]),\n        C(\"SA390\", [\"meccanica\", \"mechanism\"], \"mech\", [\"Meccanica Shugart\", \"Shugart mechanism\"], [\"fnfspin\", \"nostep\"], [\"errmany\"], [\"Facile da smontare e pulire. Spesso il carrello della testina \u00e8 incollato: deve scorrere a mano a drive spento.\", \"Easy to strip and clean. The head carriage is often stuck: it must slide by hand with the drive off.\"])\n      ] },\n    { id: \"p8050\", drive: \"pet\", label: [\"8050 \/ 8250 \/ SFD-1001\", \"8050 \/ 8250 \/ SFD-1001\"],\n      note: [\"**8050\/8250** (meccaniche Micropolis, Tandon o MPI) e **SFD-1001** (Matsushita, singolo). Stessa struttura del 4040; il 6530 cambia in base alla meccanica montata. All'accensione le spie lampeggiano, poi resta verde solo quella centrale.\", \"**8050\/8250** (Micropolis, Tandon or MPI mechanisms) and **SFD-1001** (Matsushita, single). Same layout as the 4040; the 6530 depends on the fitted mechanism. At power-on the lights blink, then only the centre one stays green.\"],\n      chips: [\n        C(\"UN1\", \"6502\", \"cpu\", [\"CPU del DOS\", \"DOS CPU\"], [STD]),\n        C(\"UH3\", \"6502\", \"cpu\", [\"CPU del controller\", \"Controller CPU\"], [\"blinkcode\"], [], [\"Codici 5 e 10.\", \"Codes 5 and 10.\"]),\n        C(\"UC1 UE1\", \"6532 RIOT\", \"io\", [\"Pagina zero, IEEE, spie\", \"Zero page, IEEE, lights\"], [\"blinkcode\", \"dnp\"], [], [\"Codice 1. In una riparazione reale il colpevole di un lampo era il 6532 in UC1.\", \"Code 1. In a real repair the cause of one flash was the 6532 at UC1.\"]),\n        C(\"UL1 UH1\", \"2364 DOS 2.5\/2.7\", \"cpu\", [\"ROM del DOS\", \"DOS ROMs\"], [\"blinkcode\"], [], [\"Codici 2 e 3. Segui la serigrafia: le liste non concordano su quale zoccolo abbia quale ROM.\", \"Codes 2 and 3. Follow the silkscreen: lists disagree on which socket holds which ROM.\"], ROMSUB),\n        C(\"UC4\u2013UF5\", \"2114 \u00d78\", \"cpu\", [\"RAM condivisa\", \"Shared RAM\"], [\"blinkcode\"], [], [\"Codici 6\u20139.\", \"Codes 6\u20139.\"]),\n        C(\"UK3\", \"6530\", \"io\", [\"Firmware del controller\", \"Controller firmware\"], [\"blinkcode\"], [], [\"Codici 5 e 10. Versioni diverse per Micropolis, Tandon e MPI.\", \"Codes 5 and 10. Different versions for Micropolis, Tandon and MPI.\"], [\"Donatore uguale o adattatore EPROM (sull'SFD-1001 \u00e8 di serie: scheda 251232).\", \"An identical donor or an EPROM adapter (standard on the SFD-1001: board 251232).\"]),\n        C(\"UM3\", \"6522\", \"io\", [\"Motori e interfaccia GCR\", \"Motors and GCR interface\"], [\"nostep\", \"fnfnospin\"], [], null, VIASUB),\n        C(\"UK6\", \"901467-01\", \"rw\", [\"ROM di codifica GCR\", \"GCR encoding ROM\"], [\"fnfspin\", \"writebad\"]),\n        C(\"Micropolis\", [\"meccanica\", \"mechanism\"], \"mech\", [\"Meccanica 100 tpi\", \"100 tpi mechanism\"], [\"fnfspin\", \"nostep\"], [\"errmany\"], [\"Molto pi\u00f9 complessa della Shugart del 4040: smontala solo con il manuale.\", \"Much more complex than the 4040's Shugart: strip it only with the manual.\"])\n      ] },\n    { id: \"p2031\", drive: \"pet\", label: [\"2031 (singolo IEEE)\", \"2031 (single IEEE)\"],\n      note: [\"**2031**: in pratica un 1541 con porta IEEE. Versione HP con Shugart, versione LP con meccanica ALPS e scheda derivata dal 1541. Codici: 1 = pagina zero, 2\u20133 = ROM, 4 = RAM.\", \"**2031**: essentially a 1541 with an IEEE port. HP version with a Shugart, LP version with an ALPS mechanism and a 1541-derived board. Codes: 1 = zero page, 2\u20133 = ROMs, 4 = RAM.\"],\n      chips: [\n        C(\"6502\", \"6502\", \"cpu\", R.cpu, [STD], [\"nostep\"]),\n        C(\"ROM\", \"901484-03 \/ -05\", \"cpu\", [\"ROM DOS 2.6\", \"DOS 2.6 ROMs\"], [\"blinkcode\"], [STD]),\n        C(\"RAM\", \"2016 \/ 2114\", \"cpu\", R.ram, [\"blinkcode\"]),\n        C(\"VIA\", \"6522 \u00d72\", \"io\", [\"Bus IEEE e meccanica\", \"IEEE bus and mechanism\"], [\"writebad\", \"nostep\"], [\"dnp\"], [\"Il manuale indica i 6522 per formattazione che fallisce e testina che non si muove.\", \"The manual points to the 6522s for failed formats and a head that does not step.\"], VIASUB),\n        C(\"HEAD\", \"R\/W\", \"mech\", R.head, [\"fnfspin\"], [\"somedisks\"], [\"Se il test supera la traccia 18 e poi d\u00e0 errore 21, il manuale indica la testina; errore 27 = fermo della traccia 0.\", \"If the test passes track 18 and then gives error 21, the manual points to the head; error 27 = the track-0 stop.\"])\n      ] }\n  ];\n})(window.RF_DRIVE_DATA);\n\n\/* Procedure (test, allineamento, velocita'), programmi, documenti, attrezzatura e tabella delle schede.\n   Blocchi del corpo: coppia [it,en] = paragrafo; {h}, {ol}, {ul}, {tbl} con coppie; {code} testo; {note}; drives = solo per quei drive. *\/\n(function (D) {\n  D.tests = [\n    { id: \"t-prima\", t: [\"Prima di aprire il drive\", \"Before opening the drive\"], d: [\"Sicurezza, connettori e trasporto\", \"Safety, connectors and transport\"], body: [\n      { ol: [[\"Stacca la spina: nei 1541, 1571 e nei drive PET l'alimentatore \u00e8 interno e lavora a tensione di rete.\", \"Fotografa la scheda e segna il piedino 1 di ogni connettore prima di staccarlo: molti non hanno chiave.\", \"Non accendere e spegnere con un disco dentro: lo puoi rovinare.\", \"Tieni drive e cavi a una trentina di centimetri dal monitor CRT: il campo del trasformatore di riga disturba la lettura.\", \"Per spedire o spostare un 1571 metti il cartoncino di protezione tra le testine.\"],\n              [\"Unplug it: the 1541, 1571 and PET drives have an internal mains power supply.\", \"Photograph the board and mark pin 1 of every connector before unplugging it: many are not keyed.\", \"Do not power-cycle with a disk inside: you can damage it.\", \"Keep drive and cables about 30 cm from a CRT monitor: the flyback field disturbs reading.\", \"To ship or move a 1571, put the transit card between the heads.\"]] },\n      { note: [\"**Attenzione ai connettori invertiti:** sul 1541-II e sul 1541C il connettore della testina al contrario brucia l'amplificatore; sul 1571 e sul 1581 il connettore di alimentazione al contrario distrugge la scheda.\", \"**Watch out for reversed plugs:** on the 1541-II and 1541C a reversed head plug burns the amplifier; on the 1571 and 1581 a reversed power plug destroys the board.\"] } ] },\n\n    { id: \"t-acc\", t: [\"Osserva l'accensione e conta i lampeggi\", \"Watch the power-on and count the flashes\"], d: [\"Il test pi\u00f9 utile: non serve nessuno strumento\", \"The most useful test: no tools needed\"], body: [\n      [\"Accendi il computer, poi il drive senza disco. Guarda le spie, ascolta il motore e la testina per i primi 5 secondi.\", \"Switch on the computer, then the drive with no disk. Watch the lights, listen to the motor and the head for the first 5 seconds.\"],\n      { h: [\"Comportamento normale\", \"Normal behaviour\"] },\n      { tbl: [[[\"Drive\", \"Cosa deve fare\"], [\"1541\", \"Verde fissa; rossa e motore per circa 2 secondi, poi si spengono. La testina **non** si muove.\"], [\"1541C\", \"Come il 1541, ma la testina sbatte contro il fermo a ogni accensione e reset (\u00e8 normale).\"], [\"1541-II\", \"Rossa (alimentazione) fissa; verde e motore per circa 2 secondi.\"], [\"1571\", \"Rossa fissa; verde per 1 secondo, motore per circa 3 secondi, piccolo scatto della testina.\"], [\"1581\", \"Verde accesa per circa 2 secondi, leggero \\\"burp\\\" della testina; il motore non gira senza disco.\"], [\"4040 \/ 2040\", \"Le tre spie si accendono un attimo e si spengono.\"], [\"8050 \/ 8250\", \"Le spie lampeggiano, poi resta verde solo quella centrale.\"]],\n              [[\"Drive\", \"What it should do\"], [\"1541\", \"Green steady; red and motor for about 2 seconds, then off. The head does **not** move.\"], [\"1541C\", \"Like the 1541, but the head knocks against the stop at every power-on and reset (this is normal).\"], [\"1541-II\", \"Red (power) steady; green and motor for about 2 seconds.\"], [\"1571\", \"Red steady; green for 1 second, motor for about 3 seconds, a small nudge of the head.\"], [\"1581\", \"Green on for about 2 seconds, a faint head \\\"burp\\\"; the motor does not turn without a disk.\"], [\"4040 \/ 2040\", \"The three lights come on briefly and go out.\"], [\"8050 \/ 8250\", \"The lights blink, then only the centre one stays green.\"]]] },\n      [\"\u00c8 normale che il motore di 1541 e 1571 giri se il computer \u00e8 spento o scollegato, e che continui per qualche secondo dopo una lettura.\", \"It is normal for the 1541 and 1571 motor to run while the computer is off or disconnected, and to keep running for a few seconds after a read.\"],\n      { h: [\"Codici a lampeggi del 1541 (e 1541C, 1541-II, 2031)\", \"1541 flash codes (and 1541C, 1541-II, 2031)\"], drives: [\"1541\", \"1541ii\", \"pet\"] },\n      { drives: [\"1541\", \"1541ii\", \"pet\"], tbl: [[[\"Lampi\", \"Cosa ha fallito il test\", \"Dove guardare (1541 marrone)\"], [\"1\", \"RAM della pagina zero\", \"UB2 (2016) o le 2114 della scheda lunga; spesso un lampo lento ogni 2 s\"], [\"2\", \"Checksum ROM $E000\", \"UB4 (901229)\"], [\"3\", \"Checksum ROM $C000\", \"UB3 (325302)\"], [\"4\", \"Resto della RAM\", \"UB2\"]],\n              [[\"Flashes\", \"Which test failed\", \"Where to look (brown 1541)\"], [\"1\", \"Zero-page RAM\", \"UB2 (2016) or the long board's 2114s; often one slow flash every 2 s\"], [\"2\", \"$E000 ROM checksum\", \"UB4 (901229)\"], [\"3\", \"$C000 ROM checksum\", \"UB3 (325302)\"], [\"4\", \"Rest of the RAM\", \"UB2\"]]] },\n      { drives: [\"1541\", \"1541ii\", \"pet\"], note: [\"**Due tabelle diverse.** Il manuale di servizio 1541 riporta 2 = pagina zero, 3\u20134 = ROM, 5\u20138 = RAM. Il codice sorgente del DOS (routine a $EAA0) e il manuale del 2031 danno invece la tabella qui sopra, e le prove di Carl lo confermano (3 lampi = UB3). Se la ROM $E000 \u00e8 morta del tutto il drive non lampeggia: resta con la spia accesa e il motore in moto. Anche i circuiti intorno al chip indicato, o uno zoccolo ossidato, danno lo stesso codice.\", \"**Two different tables.** The 1541 service manual says 2 = zero page, 3\u20134 = ROMs, 5\u20138 = RAM. The DOS source code (routine at $EAA0) and the 2031 manual give the table above instead, and Carl's tests confirm it (3 flashes = UB3). If the $E000 ROM is completely dead the drive cannot flash: it stays with the light on and the motor running. The circuits around the indicated chip, or an oxidised socket, give the same code.\"] },\n      { h: [\"Codici dei drive IEEE 4040 e 8050\", \"IEEE drive codes, 4040 and 8050\"], drives: [\"pet\"] },\n      { drives: [\"pet\"], tbl: [[[\"Lampi\", \"8050 \/ 8250\", \"4040 \/ 2040\"], [\"1\", \"Pagina zero: 6532 UC1, UE1\", \"Pagina zero: 6532 UC1, UE1\"], [\"2\", \"ROM UL1\", \"ROM UH1\"], [\"3\", \"ROM UH1\", \"ROM UL1\"], [\"4\", \"\u2014\", \"ROM UJ1 (solo 4040)\"], [\"5\", \"Pagina zero del controller: 6530 UK3 \/ 6502 UH3\", \"Pagina zero del controller: 6530 UK3 \/ 6504 UH3\"], [\"6\", \"RAM 2114 UC4, UC5 (una fonte la d\u00e0 come non usato)\", \"\u2014\"], [\"7\", \"RAM 2114 UD4, UD5\", \"RAM 2114 UD4, UD5\"], [\"8\", \"RAM 2114 UE4, UE5\", \"RAM 2114 UE4, UE5\"], [\"9\", \"RAM 2114 UF4, UF5\", \"RAM 2114 UF4, UF5\"], [\"10\", \"ROM del controller: 6530 UK3 \/ 6502 UH3\", \"ROM del controller: 6530 UK3 \/ 6504 UH3\"]],\n              [[\"Flashes\", \"8050 \/ 8250\", \"4040 \/ 2040\"], [\"1\", \"Zero page: 6532 UC1, UE1\", \"Zero page: 6532 UC1, UE1\"], [\"2\", \"ROM UL1\", \"ROM UH1\"], [\"3\", \"ROM UH1\", \"ROM UL1\"], [\"4\", \"\u2014\", \"ROM UJ1 (4040 only)\"], [\"5\", \"Controller zero page: 6530 UK3 \/ 6502 UH3\", \"Controller zero page: 6530 UK3 \/ 6504 UH3\"], [\"6\", \"RAM 2114 UC4, UC5 (one source says unused)\", \"\u2014\"], [\"7\", \"RAM 2114 UD4, UD5\", \"RAM 2114 UD4, UD5\"], [\"8\", \"RAM 2114 UE4, UE5\", \"RAM 2114 UE4, UE5\"], [\"9\", \"RAM 2114 UF4, UF5\", \"RAM 2114 UF4, UF5\"], [\"10\", \"Controller ROM: 6530 UK3 \/ 6502 UH3\", \"Controller ROM: 6530 UK3 \/ 6504 UH3\"]]] },\n      { drives: [\"1571\", \"1581\"], note: [\"**1571 e 1581 non hanno codici all'accensione:** i lampeggi compaiono solo con il programma diagnostico Commodore (test 11). Sul 1581 la spia rossa che alterna acceso e mezzo acceso indica un errore del disco, non un guasto.\", \"**The 1571 and 1581 have no power-on codes:** flashes only appear with Commodore's diagnostic program (test 11). On the 1581, a red light alternating bright and dim means a disk error, not a fault.\"] },\n      [\"Se il ciclo di avvio \u00e8 normale, CPU, ROM e RAM funzionano: il guasto \u00e8 nel bus seriale, nella lettura o nella meccanica.\", \"If the start-up cycle is normal, the CPU, ROM and RAM work: the fault is in the serial bus, the read path or the mechanism.\"] ] },\n\n    { id: \"t-pc\", t: [\"Il guasto \u00e8 nel drive o nel computer?\", \"Is the fault in the drive or the computer?\"], d: [\"Scambi, numero di periferica, livelli del bus\", \"Swaps, device number, bus levels\"], body: [\n      { ol: [[\"Prova `LOAD\\\"$\\\",8`, poi 9, 10 e 11: qualcuno pu\u00f2 aver cambiato il numero di periferica.\", \"Scollega dal bus tutto il resto (stampanti, altri drive, cartucce).\", \"Collega il drive a un altro computer con lo stesso cavo, poi prova un altro cavo.\", \"Prova un drive sicuro, un SD2IEC o un Pi1541 sul tuo computer: se non va nemmeno quello, il guasto \u00e8 nel computer (7406, CIA, porta seriale).\", \"Carica i programmi di test da un SD2IEC o da una 1541 Ultimate, non dal drive sospetto.\"],\n              [\"Try `LOAD\\\"$\\\",8`, then 9, 10 and 11: someone may have changed the device number.\", \"Unplug everything else from the bus (printers, other drives, cartridges).\", \"Connect the drive to another computer with the same cable, then try another cable.\", \"Try a known-good drive, an SD2IEC or a Pi1541 on your computer: if that fails too, the fault is in the computer (7406, CIA, serial port).\", \"Load test programs from an SD2IEC or a 1541 Ultimate, not from the suspect drive.\"]] },\n      { h: [\"Numero di periferica\", \"Device number\"] },\n      { ul: [[\"1541 e 1541C: ponticelli da tagliare sulla scheda (di serie 8).\", \"1541-II, 1571, 1581: interruttori sul retro (1541-II: tutti e due su = 8, il primo gi\u00f9 = 9, il secondo gi\u00f9 = 10, tutti gi\u00f9 = 11).\", \"SX-64: due ponticelli vicino a P22 (chiusi = 8).\"],\n             [\"1541 and 1541C: jumpers to cut on the board (8 by default).\", \"1541-II, 1571, 1581: switches on the back (1541-II: both up = 8, first down = 9, second down = 10, both down = 11).\", \"SX-64: two jumpers near P22 (closed = 8).\"]] },\n      [\"Per cambiarlo fino allo spegnimento (qui da 8 a 9):\", \"To change it until power-off (here from 8 to 9):\"],\n      { code: \"OPEN15,8,15,\\\"M-W\\\"+CHR$(119)+CHR$(0)+CHR$(2)+CHR$(41)+CHR$(73):CLOSE15\" },\n      { h: [\"Con la sonda logica sul bus\", \"With a logic probe on the bus\"] },\n      { ul: [[\"Durante `LOAD\\\"$\\\",8` la linea ATN deve andare bassa e poi CLK deve pulsare.\", \"Una linea libera sta sopra i 4 V (circa 5 V); una linea tirata gi\u00f9 sotto 1 V.\", \"Se una linea resta bassa anche con il drive scollegato, il guasto \u00e8 nel computer; se si sblocca scollegando il drive, \u00e8 il drive (spesso il 7406 o il 6522 del bus).\"],\n             [\"During `LOAD\\\"$\\\",8` the ATN line must go low and then CLK must pulse.\", \"A released line sits above 4 V (about 5 V); a pulled-down line below 1 V.\", \"If a line stays low with the drive unplugged, the fault is in the computer; if it frees up when you unplug the drive, it is the drive (often the bus 7406 or 6522).\"]] } ] },\n\n    { id: \"t-err\", t: [\"Leggi il canale errori\", \"Read the error channel\"], d: [\"Il drive ti dice cosa non va\", \"The drive tells you what is wrong\"], body: [\n      [\"Subito dopo l'operazione che non \u00e8 andata, scrivi questo programma e dai RUN. La lettura spegne anche la spia che lampeggia.\", \"Right after the operation that failed, type this program and RUN it. Reading it also stops the flashing light.\"],\n      { code: \"10 OPEN 15,8,15\\n20 INPUT#15,EN,EM$,ET,ES\\n30 PRINT EN;EM$;ET;ES\\n40 CLOSE 15\" },\n      [\"Il risultato \u00e8 numero, messaggio, traccia e settore. `00, OK,00,00` vuol dire nessun errore; `73, CBM DOS V2.6 1541` subito dopo l'accensione \u00e8 normale e dimostra che CPU, ROM e RAM funzionano.\", \"The result is number, message, track and sector. `00, OK,00,00` means no error; `73, CBM DOS V2.6 1541` right after power-on is normal and proves that CPU, ROM and RAM work.\"],\n      { tbl: [[[\"Codice\", \"Cosa vuol dire\", \"Cosa indica nell'hardware\"], [\"20\", \"Intestazione del blocco non trovata\", \"Testina nella posizione sbagliata (passo-passo, guide, allineamento) o disco rovinato\"], [\"21\", \"Nessun segnale di sincronismo\", \"Il pi\u00f9 comune: disco non formattato o sportello aperto, testina sporca o aperta, allineamento, catena di lettura (NE592, LM311, 9602, ibrido, gate array). `21,READ ERROR,18,00` dopo l'inizializzazione\"], [\"22\", \"Blocco dati non trovato\", \"Di solito un blocco mai scritto\"], [\"23\", \"Errore di checksum dei dati\", \"Lettura al limite: testina sporca, velocit\u00e0, allineamento, masse\"], [\"25\", \"Verifica dopo la scrittura fallita\", \"Circuito di scrittura (7417, ibrido), testina debole, disco\"], [\"26\", \"Protezione in scrittura\", \"Tacca coperta, oppure sensore della tacca sporco o guasto\"], [\"27\", \"Checksum dell'intestazione\", \"Disco; sul 2031 il fermo della traccia 0\"], [\"29\", \"ID del disco diverso\", \"Disco cambiato senza inizializzare, o sensore del cambio disco\"], [\"74\", \"Drive non pronto\", \"Nessun disco o sportello aperto; ma anche testina tappata o guasto elettrico\"]],\n              [[\"Code\", \"What it means\", \"What it points to in hardware\"], [\"20\", \"Block header not found\", \"Head in the wrong place (stepper, rails, alignment) or a damaged disk\"], [\"21\", \"No sync mark\", \"The most common: unformatted disk or open door, dirty or open head, alignment, read chain (NE592, LM311, 9602, hybrid, gate array). `21,READ ERROR,18,00` after initialise\"], [\"22\", \"Data block not found\", \"Usually a block that was never written\"], [\"23\", \"Data checksum error\", \"Marginal read: dirty head, speed, alignment, grounding\"], [\"25\", \"Verify after write failed\", \"Write circuit (7417, hybrid), weak head, disk\"], [\"26\", \"Write protect on\", \"Notch covered, or a dirty or faulty notch sensor\"], [\"27\", \"Header checksum error\", \"Disk; on the 2031 the track-0 stop\"], [\"29\", \"Disk ID mismatch\", \"Disk swapped without initialising, or the disk-change sensor\"], [\"74\", \"Drive not ready\", \"No disk or door open; but also a clogged head or an electrical fault\"]]] },\n      { note: [\"Gli errori 24 e 28 esistono nel DOS ma il 1541 non li genera mai. Se gli errori 21\u201329 compaiono su tanti dischi diversi, misura prima la velocit\u00e0, poi pulisci la testina.\", \"Errors 24 and 28 exist in the DOS but the 1541 never produces them. If errors 21\u201329 show up on many different disks, measure the speed first, then clean the head.\"] } ] },\n\n    { id: \"t-cmd\", t: [\"Comandi che muovono motore e testina\", \"Commands that move the motor and head\"], d: [\"Inizializza, formatta, reset\", \"Initialise, format, reset\"], body: [\n      { tbl: [[[\"Comando\", \"Cosa vedi e senti\", \"Cosa ti dice\"], [\"`OPEN15,8,15,\\\"I0\\\":CLOSE15`\", \"Il motore parte, la testina va alla traccia 18 a leggere la BAM\", \"Motore, passo-passo e lettura funzionano. Recupera anche una testina \\\"persa\\\" oltre la traccia 18\"], [\"`LOAD\\\"$\\\",8` e `LIST`\", \"Testina alla traccia 18, elenco dei file\", \"Test di lettura di base\"], [\"`OPEN15,8,15,\\\"V0\\\":CLOSE15`\", \"Rilegge directory e BAM\", \"Affidabilit\u00e0 della lettura sulla traccia 18\"], [\"`OPEN15,8,15,\\\"N0:PROVA,01\\\":CLOSE15` su un disco **da buttare**\", \"La testina sbatte sul fermo della traccia 1, poi percorre tutte le 35 tracce\", \"Corsa completa del passo-passo e circuito di scrittura. **Cancella il disco**\"], [\"`OPEN15,8,15,\\\"UJ\\\":CLOSE15`\", \"Il drive si resetta come all'accensione\", \"Il DOS riparte; poi il canale errori d\u00e0 73\"]],\n              [[\"Command\", \"What you see and hear\", \"What it tells you\"], [\"`OPEN15,8,15,\\\"I0\\\":CLOSE15`\", \"The motor starts, the head goes to track 18 to read the BAM\", \"Motor, stepper and reading work. It also recovers a head \\\"lost\\\" past track 18\"], [\"`LOAD\\\"$\\\",8` and `LIST`\", \"Head to track 18, file list\", \"Basic read test\"], [\"`OPEN15,8,15,\\\"V0\\\":CLOSE15`\", \"Rereads directory and BAM\", \"Read reliability on track 18\"], [\"`OPEN15,8,15,\\\"N0:TEST,01\\\":CLOSE15` on a **scratch** disk\", \"The head knocks on the track-1 stop, then travels all 35 tracks\", \"Full stepper travel and the write circuit. **It erases the disk**\"], [\"`OPEN15,8,15,\\\"UJ\\\":CLOSE15`\", \"The drive resets as at power-on\", \"The DOS restarts; the error channel then gives 73\"]]] },\n      { drives: [\"1571\"], h: [\"Solo 1571\", \"1571 only\"] },\n      { drives: [\"1571\"], ul: [[\"`OPEN15,8,15,\\\"U0>M1\\\":CLOSE15` passa al modo 1571, `\\\"U0>M0\\\"` al modo 1541.\", \"Per capire se \u00e8 guasta una testina, formatta e leggi un lato alla volta. In modo 1541 si usa solo la testina di sotto: se in modo 1541 va tutto e in modo 1571 no, guarda la testina superiore, il CIA U20 e U19.\"],\n             [\"`OPEN15,8,15,\\\"U0>M1\\\":CLOSE15` switches to 1571 mode, `\\\"U0>M0\\\"` to 1541 mode.\", \"To find a bad head, format and read one side at a time. 1541 mode only uses the bottom head: if everything works in 1541 mode but not in 1571 mode, look at the top head, CIA U20 and U19.\"]] },\n      { note: [\"Per far muovere la testina traccia per traccia senza scrivere niente usa un programma di test: lo **Speed Test di Zibri** (frecce su e gi\u00f9), la **cartuccia diagnostica di Jani** (tasto H) o il programma \\\"exerciser\\\" del libro *1541 Troubleshooting & Repair Guide*. Scrivere a mano nel registro $1C00 non funziona bene, perch\u00e9 il DOS lo riscrive continuamente.\", \"To step the head track by track without writing anything, use a test program: **Zibri's Speed Test** (cursor up and down), **Jani's diagnostic cartridge** (key H) or the \\\"exerciser\\\" program in the book *1541 Troubleshooting & Repair Guide*. Poking register $1C00 by hand does not work well, because the DOS keeps rewriting it.\"] } ] },\n\n    { id: \"t-volt\", t: [\"Misura le alimentazioni\", \"Measure the supplies\"], d: [\"Con il tester, drive acceso\", \"With a meter, drive on\"], body: [\n      { tbl: [[[\"Punto\", \"Valore\", \"Note\"], [\"+5 V\", \"da 4,75 a 5,25 V\", \"Sotto i 4 V circa il circuito di scrittura si blocca. Misura anche **sotto carico**, con il disco che gira\"], [\"+12 V\", \"12 V regolati\", \"Nel 1541 ci sono due rami da 12 V (passo-passo e lettura): devono andare bene tutti e due\"], [\"Prima dei regolatori (1541)\", \"circa 10 V e circa 20 V non regolati\", \"Sui catodi dei raddrizzatori: se mancano, ponte o trasformatore\"], [\"Secondari del trasformatore (1541)\", \"circa 16 V AC e 9 V AC\", \"Sul connettore P1\"], [\"Fusibile F1 (spento)\", \"meno di 2 \u03a9\", \"Ricambio da 1 A\"], [\"Clock della CPU\", \"1 MHz a onda quadra\", \"Piedino 37 del 6502 (16 MHz diviso 16)\"], [\"Reset della CPU\", \"alto dopo l'accensione\", \"Piedino 40 del 6502\"]],\n              [[\"Point\", \"Value\", \"Notes\"], [\"+5 V\", \"4.75 to 5.25 V\", \"Below about 4 V the write circuit locks out. Measure **under load** too, with the disk spinning\"], [\"+12 V\", \"regulated 12 V\", \"The 1541 has two 12 V branches (stepper and read): both must be good\"], [\"Before the regulators (1541)\", \"about 10 V and about 20 V unregulated\", \"On the rectifier cathodes: if missing, bridge or transformer\"], [\"Transformer secondaries (1541)\", \"about 16 V AC and 9 V AC\", \"On connector P1\"], [\"Fuse F1 (off)\", \"under 2 \u03a9\", \"1 A replacement\"], [\"CPU clock\", \"1 MHz square wave\", \"6502 pin 37 (16 MHz divided by 16)\"], [\"CPU reset\", \"high after power-on\", \"6502 pin 40\"]]] },\n      { drives: [\"1581\"], ul: [[\"1581: +12 V sul positivo di C18 e +5 V sul positivo di C20. Misura i +5 sul filo rosso dentro il drive mentre lavora: se calano, cambia l'alimentatore.\", \"1581: 16 MHz al piedino 1 di U10 (74LS93) se il drive \u00e8 morto.\"], [\"1581: +12 V on the positive of C18 and +5 V on the positive of C20. Measure +5 on the red wire inside the drive while it works: if it sags, replace the brick.\", \"1581: 16 MHz at U10 (74LS93) pin 1 if the drive is dead.\"]] },\n      { drives: [\"1541ii\", \"1581\"], note: [\"**Alimentatori esterni (1541-II e 1581):** sono sigillati nella resina e non si riparano. Quello piccolo del 1541-II da 700 mA \u00e8 il pi\u00f9 debole. Il sintomo tipico \u00e8 il drive che funziona da freddo e d\u00e0 errori dopo qualche minuto. Usa un alimentatore moderno di buona qualit\u00e0.\", \"**External bricks (1541-II and 1581):** they are potted in resin and cannot be repaired. The small 700 mA 1541-II brick is the weakest. The typical symptom is a drive that works cold and gives errors after a few minutes. Use a good modern supply.\"] },\n      { drives: [\"1541\", \"pet\"], note: [\"Nel 1541 il ponte del +5 V scalda molto anche quando \u00e8 sano. Un odore di bruciato spesso \u00e8 il condensatore al tantalio C15 in corto sul +12 V.\", \"In the 1541 the +5 V bridge runs very hot even when good. A burning smell is often the tantalum capacitor C15 shorted on +12 V.\"] } ] },\n\n    { id: \"t-head\", t: [\"Verifica la testina con il tester\", \"Check the head with a meter\"], d: [\"Resistenze delle bobine e filo aperto\", \"Coil resistance and open wires\"], body: [\n      { ol: [[\"Stacca la spina. Segna il piedino 1 del connettore della testina e staccalo dalla scheda.\", \"Misura tra i piedini del connettore (degli spilli infilati di lato aiutano a fare contatto).\", \"Ogni filo deve avere una resistenza bassa verso gli altri: c'\u00e8 una bobina di lettura\/scrittura con presa centrale e una bobina di cancellazione con un comune.\", \"**Un filo aperto (OL, infinito) vuol dire testina morta.** Sulle Newtronics il filo che si apre di solito \u00e8 quello del piedino 5. Non si ripara: si cambia la meccanica o si trapianta la testina.\", \"Una misura normale **non** garantisce che la testina sia buona: pu\u00f2 passare il tester e non formattare. La prova definitiva \u00e8 con una meccanica sicura.\"],\n              [\"Unplug the drive. Mark pin 1 of the head connector and unplug it from the board.\", \"Measure between the connector pins (pins pushed in from the side help make contact).\", \"Every wire must show a low resistance to the others: there is a centre-tapped read\/write coil and an erase coil sharing a common.\", \"**An open wire (OL, infinite) means a dead head.** On Newtronics heads the wire that opens is usually pin 5. It cannot be repaired: replace the mechanism or transplant a head.\", \"A normal reading does **not** prove the head is good: it can pass the meter and still fail to format. The final test is with a known-good mechanism.\"]] },\n      { tbl: [[[\"Parte\", \"Misura\", \"Valore nominale (manuale 1541)\"], [\"Bobina lettura\/scrittura\", \"da un capo all'altro\", \"32,4 \u03a9\"], [\"Bobina lettura\/scrittura\", \"da un capo alla presa centrale\", \"16,3 \u03a9\"], [\"Bobina di cancellazione\", \"capo-capo\", \"10,5 \u03a9\"], [\"Testina guasta (esempio reale)\", \"\u2014\", \"circa 1,5 k\u03a9 o aperta\"]],\n              [[\"Part\", \"Measurement\", \"Nominal value (1541 manual)\"], [\"Read\/write coil\", \"end to end\", \"32.4 \u03a9\"], [\"Read\/write coil\", \"end to centre tap\", \"16.3 \u03a9\"], [\"Erase coil\", \"end to end\", \"10.5 \u03a9\"], [\"Failed head (real example)\", \"\u2014\", \"about 1.5 k\u03a9 or open\"]]] },\n      { note: [\"Il libro *1541 Troubleshooting & Repair Guide* ha una tabella per meccanica (valori tra 8 e 19 \u03a9 tra coppie di piedini), ma la scansione non permette di capire quale colonna sia ALPS e quale Newtronics. Confronta sempre con una testina sana dello stesso tipo.\", \"The book *1541 Troubleshooting & Repair Guide* has a table per mechanism (8 to 19 \u03a9 between pin pairs), but the scan does not show which column is ALPS and which is Newtronics. Always compare with a good head of the same type.\"] },\n      { drives: [\"1571\"], note: [\"**1571:** la testina superiore ha 5 fili sottili che si rompono dentro la guaina. Misura tirando piano i fili: se la lettura salta, risalda con un po' di gioco.\", \"**1571:** the top head has 5 thin wires that break inside the insulation. Measure while tugging the wires gently: if the reading jumps, resolder with some slack.\"] } ] },\n\n    { id: \"t-step\", t: [\"Motore passo-passo e motore del disco\", \"Stepper and spindle motors\"], d: [\"Resistenze e prova fuori dalla scheda\", \"Resistances and an off-board test\"], body: [\n      { tbl: [[[\"Parte\", \"Misura\", \"Valore (manuale 1541)\"], [\"Motore passo-passo\", \"capo-presa centrale\", \"32 \u03a9 (da 30 a 36)\"], [\"Motore passo-passo\", \"capo-capo della stessa bobina\", \"64 \u03a9\"], [\"Motore del disco\", \"bobina\", \"17 \u03a9\"], [\"Dinamo tachimetrica\", \"fermo \/ in moto\", \"175 \u03a9 \/ da 135 a 190 \u03a9\"]],\n              [[\"Part\", \"Measurement\", \"Value (1541 manual)\"], [\"Stepper\", \"end to centre tap\", \"32 \u03a9 (30 to 36)\"], [\"Stepper\", \"end to end of one winding\", \"64 \u03a9\"], [\"Spindle motor\", \"coil\", \"17 \u03a9\"], [\"Tacho coil\", \"still \/ turning\", \"175 \u03a9 \/ 135 to 190 \u03a9\"]]] },\n      { ol: [[\"A drive spento la testina deve scorrere a mano senza punti duri e la banda d'acciaio deve essere tesa.\", \"Prova del passo-passo fuori dalla scheda (1541): i due fili rossi al +12 V, poi collega a massa uno dopo l'altro giallo, nero, arancione e marrone. La testina avanza di un passo per volta; in ordine inverso torna indietro.\", \"Se il passo-passo \u00e8 buono e la testina non si muove sulla scheda, il guasto \u00e8 nel driver (UD1 sulle schede marroni, U13 sul 1541-II) o nel gate array.\", \"Motore del disco: con un disco inserito e il comando di inizializzazione deve partire. Se non parte, controlla cinghia, +12 V, connettore e scheda di controllo del motore.\"],\n              [\"With the drive off the head must slide by hand with no tight spots, and the steel band must be taut.\", \"Off-board stepper test (1541): the two red wires to +12 V, then ground yellow, black, orange and brown one after the other. The head moves one step at a time; in reverse order it comes back.\", \"If the stepper is good and the head does not move on the board, the fault is in the driver (UD1 on brown boards, U13 on the 1541-II) or the gate array.\", \"Spindle motor: with a disk inserted and the initialise command it must start. If not, check the belt, +12 V, the connector and the motor control board.\"]] },\n      { note: [\"Fai la prova fuori dalla scheda solo se sei sicuro dei colori dei fili sul tuo modello: confrontali con lo schema.\", \"Only do the off-board test if you are sure of the wire colours on your model: check them against the schematic.\"] } ] },\n\n    { id: \"t-clean\", t: [\"Pulizia della testina e delle guide\", \"Cleaning the head and rails\"], d: [\"Spesso basta questa\", \"Often this is enough\"], body: [\n      { ol: [[\"Stacca la spina, togli coperchio e schermo.\", \"Solleva con delicatezza il braccio del pressore.\", \"Bagna un cotton fioc o un tampone che non perde fili con alcool isopropilico al 90% o pi\u00f9.\", \"Strofina la testina finch\u00e9 non esce pi\u00f9 ossido marrone. Per lo sporco duro, una gomma da matita morbida.\", \"Controlla il feltrino del pressore: se \u00e8 consumato, sostituiscilo (va bene uno ritagliato da una vecchia cassetta audio).\", \"Lascia asciugare del tutto prima di inserire un disco.\"],\n              [\"Unplug it, remove the cover and shield.\", \"Gently lift the pressure pad arm.\", \"Wet a cotton bud or lint-free swab with 90% or stronger isopropyl alcohol.\", \"Rub the head until no more brown oxide comes off. For hard deposits, a soft pencil eraser.\", \"Check the pressure pad felt: if worn, replace it (one cut from an old audio cassette works).\", \"Let it dry completely before inserting a disk.\"]] },\n      { h: [\"Guide, perno e sensori\", \"Rails, spindle and sensors\"] },\n      { ul: [[\"Pulisci le guide del carrello facendolo scorrere avanti e indietro; poi lasciale asciutte o con una traccia di grafite o silicone. Niente olio: attira lo sporco. Non spruzzare niente dentro il drive.\", \"ALPS (1541, SX-64): il grasso del perno e del pressore si indurisce e fa variare la velocit\u00e0. Smonta, pulisci e rimetti grasso al bisolfuro o olio leggero.\", \"Newtronics: se il passo-passo \u00e8 duro, una goccia d'olio tra il collare e la base, con il drive inclinato.\", \"Sensori della tacca, dell'indice e della traccia 0 (1541C, 1541-II, 1571): soffia via la polvere con aria a bassa pressione.\", \"Evita acetone e abrasivi sulla testina.\"],\n             [\"Clean the carriage rails by sliding it back and forth; then leave them dry or with a trace of graphite or silicone. No oil: it attracts dirt. Do not spray anything into the drive.\", \"ALPS (1541, SX-64): the spindle and clamper grease hardens and makes the speed vary. Strip, clean and relube with moly grease or light oil.\", \"Newtronics: if the stepper is stiff, a drop of oil between the collar and the base, with the drive tilted.\", \"Notch, index and track-0 sensors (1541C, 1541-II, 1571): blow the dust off with low-pressure air.\", \"Avoid acetone and abrasives on the head.\"]] } ] },\n\n    { id: \"t-logic\", t: [\"Drive morto: sonda logica sulla CPU\", \"Dead drive: logic probe on the CPU\"], d: [\"Clock, reset, bus e zoccoli\", \"Clock, reset, buses and sockets\"], body: [\n      { ol: [[\"Prima +5 V e +12 V (test 6).\", \"Clock: 1 MHz al piedino 37 del 6502. Se manca, guarda l'oscillatore da 16 MHz e il divisore (74LS197\/74177 o il gate array).\", \"Reset: il piedino 40 del 6502 deve andare alto dopo l'accensione. Se resta basso la CPU \u00e8 ferma: guarda 74LS14, 7406 e il condensatore di reset. Controlla sullo schema il piedino giusto prima di misurare.\", \"Indirizzi e dati devono muoversi, non restare fissi alti o bassi. Controlla i chip select di ROM e VIA.\", \"Ordine dei sospetti per un drive che non finisce l'avvio: ROM, 6522, 6502, RAM, logica di reset.\", \"Togli, pulisci e rimetti i chip su zoccolo; controlla gli zoccoli con il tester e che nessun chip sia montato al contrario (succede).\"],\n              [\"First +5 V and +12 V (test 6).\", \"Clock: 1 MHz at 6502 pin 37. If it is missing, look at the 16 MHz oscillator and the divider (74LS197\/74177 or the gate array).\", \"Reset: 6502 pin 40 must go high after power-on. If it stays low the CPU is halted: look at the 74LS14, 7406 and the reset capacitor. Check the right pin on the schematic before probing.\", \"Address and data lines must toggle, not stay stuck high or low. Check the ROM and VIA chip selects.\", \"Suspect order for a drive that does not finish starting: ROM, 6522, 6502, RAM, reset logic.\", \"Pull, clean and refit socketed chips; check the sockets with a meter and that no chip is fitted backwards (it happens).\"]] },\n      { note: [\"Lo spray congelante \u00e8 il modo pi\u00f9 rapido per trovare un guasto che compare a caldo: spruzza un chip alla volta con il drive in errore.\", \"Freeze spray is the quickest way to find a fault that appears when warm: spray one chip at a time while the drive is failing.\"] } ] },\n\n    { id: \"t-diag\", t: [\"Dischi di diagnostica Commodore e cartucce\", \"Commodore diagnostic disks and cartridges\"], d: [\"Codici di 1571 e 1581, cartuccia di Jani\", \"1571 and 1581 codes, Jani's cartridge\"], body: [\n      [\"Commodore forniva ai centri di assistenza dischi diagnostici che caricano un programma di prova dentro il drive. Alla fine il drive lampeggia un codice: un lampo regolare vuol dire che il caricamento \u00e8 riuscito. Si hanno tre tentativi prima di considerare il drive guasto.\", \"Commodore gave service centres diagnostic disks that load a test program into the drive. At the end the drive flashes a code: a steady flash means the download worked. You get three tries before the drive counts as faulty.\"],\n      { tbl: [[[\"Lampi\", \"1571\", \"C128D \/ DCR\", \"1581\"], [\"1\", \"Tutto bene\", \"Tutto bene\", \"Tutto bene\"], [\"2\", \"ROM U2\", \"ROM U102\", \"ROM U2\"], [\"3\", \"RAM U3\", \"RAM U103\", \"RAM U3\"], [\"4\", \"VIA U4\", \"VIA U104\", \"CIA 8520 U5\"], [\"5\", \"VIA U9\", \"VIA U106\", \"WD1772 U4\"], [\"6\", \"CIA U20\", \"\u2014\", \"\u2014\"], [\"7\", \"WD1770 U11\", \"5710 U107\", \"\u2014\"]],\n              [[\"Flashes\", \"1571\", \"C128D \/ DCR\", \"1581\"], [\"1\", \"All good\", \"All good\", \"All good\"], [\"2\", \"ROM U2\", \"ROM U102\", \"ROM U2\"], [\"3\", \"RAM U3\", \"RAM U103\", \"RAM U3\"], [\"4\", \"VIA U4\", \"VIA U104\", \"8520 CIA U5\"], [\"5\", \"VIA U9\", \"VIA U106\", \"WD1772 U4\"], [\"6\", \"CIA U20\", \"\u2014\", \"\u2014\"], [\"7\", \"WD1770 U11\", \"5710 U107\", \"\u2014\"]]] },\n      [\"I manuali diagnostici di 1571 e 1581 sono su archive.org (vedi gli schemi qui sotto). Il test logico del C128D segnala U2 guasta anche quando \u00e8 montata la ROM sbagliata.\", \"The 1571 and 1581 diagnostic manuals are on archive.org (see the schematics below). The C128D logic test reports U2 as bad even when the wrong ROM is fitted.\"],\n      { drives: [\"1541\", \"1541ii\", \"1571\"], h: [\"Cartuccia diagnostica di Jani (1541, 1541-II, 1571 in modo 1541)\", \"Jani's diagnostic cartridge (1541, 1541-II, 1571 in 1541 mode)\"] },\n      { drives: [\"1541\", \"1541ii\", \"1571\"], ul: [[\"Gratuita: si usa come file .CRT su EasyFlash, Kung Fu Flash o 1541 Ultimate, oppure su EPROM.\", \"Tasti: A allineamento, S velocit\u00e0, H muove la testina, K colpo al contrario per sbloccarla, E scansione errori, F formattazione veloce, P test di prestazioni (**cancella il disco**).\", \"Per l'allineamento serve un disco formattato su un drive ben allineato.\"],\n             [\"Free: run it as a .CRT file on EasyFlash, Kung Fu Flash or 1541 Ultimate, or burn it to an EPROM.\", \"Keys: A alignment, S speed, H head exerciser, K reverse knock to free the head, E error scan, F fast format, P performance test (**erases the disk**).\", \"Alignment needs a disk formatted on a well-aligned drive.\"]] } ] }\n  ];\n\n  D.align = [\n    { id: \"a-why\", t: [\"Quando serve davvero l'allineamento\", \"When alignment is really needed\"], d: [\"Ultima cosa da toccare\", \"The last thing to touch\"], body: [\n      [\"Sospetta l'allineamento solo se **i dischi originali o di altri drive non vanno, mentre quelli formattati dal tuo drive si leggono bene**. Un drive che non legge niente ha quasi sempre la testina sporca o aperta, la velocit\u00e0 sbagliata o un guasto elettronico.\", \"Suspect alignment only if **original disks or other drives' disks fail, while disks formatted by your own drive read fine**. A drive that reads nothing almost always has a dirty or open head, the wrong speed or an electronic fault.\"],\n      { h: [\"Ordine di lavoro\", \"Order of work\"] },\n      { ol: [[\"Elettronica e alimentazioni a posto.\", \"Pulizia della testina.\", \"Velocit\u00e0 a 300 giri.\", \"Allineamento radiale (il passo-passo).\", \"Per ultimo, il fermo della traccia 1.\"], [\"Electronics and supplies OK.\", \"Head cleaning.\", \"Speed at 300 RPM.\", \"Radial alignment (the stepper).\", \"Last, the track-1 stop.\"]] },\n      [\"Perch\u00e9 si disallinea: nei 1541 ALPS la testina sbatte spesso contro il fermo e a lungo andare il passo-passo si sposta; anche il calore conta. Un segno tipico \u00e8 il drive che chiedendo la traccia 18 arriva sulla 17 o sulla 19 (errore 21 sulla traccia 18). Ray Carlsen dice di non aver mai visto un 1541-II disallineato.\", \"Why it drifts: on ALPS 1541s the head often bangs against the stop and over time the stepper moves; heat plays a part too. A typical sign is a drive that lands on track 17 or 19 when asked for 18 (error 21 on track 18). Ray Carlsen says he has never seen a misaligned 1541-II.\"] ] },\n    { id: \"a-ref\", t: [\"Il problema del disco di riferimento\", \"The reference disk problem\"], d: [\"Perch\u00e9 non basta un'immagine D64\", \"Why a D64 image is not enough\"], body: [\n      [\"Per allineare serve un disco le cui tracce siano state scritte da un drive allineato perfettamente: i dischi di allineamento di fabbrica (per esempio Dysan, per il metodo con oscilloscopio) o quelli dei kit commerciali.\", \"To align you need a disk whose tracks were written by a perfectly aligned drive: factory alignment disks (for example Dysan, for the oscilloscope method) or those in commercial kits.\"],\n      { ul: [[\"**Un disco formattato dal drive da regolare non serve a niente:** \\\"combacia\\\" sempre con quel drive.\", \"**Un'immagine D64 o G64 riscritta dal tuo drive** eredita il suo errore: non \u00e8 un riferimento valido. Non esiste un'immagine verificata di un disco di allineamento di fabbrica.\", \"I dischi originali di giochi a volte hanno tracce larghe: vanno bene come prova pratica, non come riferimento di laboratorio.\", \"La soluzione pratica: un disco formattato su un altro drive che sai essere allineato bene, oppure un disco originale senza protezione (per esempio il Test\/Demo Commodore).\"],\n             [\"**A disk formatted by the drive you are adjusting is useless:** it always \\\"matches\\\" that drive.\", \"**A D64 or G64 image written back by your drive** inherits its error: it is not a valid reference. There is no verified image of a factory alignment disk.\", \"Original game disks sometimes have wide tracks: fine as a practical check, not as a lab reference.\", \"The practical answer: a disk formatted on another drive you know is well aligned, or an unprotected original disk (for example the Commodore Test\/Demo disk).\"]] } ] },\n    { id: \"a-proc\", drives: [\"1541\", \"1541ii\", \"1571\", \"pet\"], t: [\"Procedura passo passo (1541, 1541-II, 1571 in modo 1541)\", \"Step-by-step procedure (1541, 1541-II, 1571 in 1541 mode)\"], d: [\"Si ruota il motore passo-passo\", \"You rotate the stepper motor\"], body: [\n      { ol: [[\"Carica il programma di allineamento da un SD2IEC o da una 1541 Ultimate. Sul bus deve esserci un solo dispositivo con quel numero.\", \"Spegni e stacca la spina. Apri il drive (viti sotto, schermo, cavo dei LED: fotografa il verso).\", \"Gira la meccanica in modo da arrivare al passo-passo e isola la scheda dal telaio con un cartoncino.\", \"Segna con un pennarello la posizione originale del passo-passo.\", \"**Allenta senza toglierle** le due viti del passo-passo. Sono sigillate con lo smalto: usa un cacciavite della misura giusta, una vite spanata peggiora tutto.\", \"Inserisci il disco di riferimento, avvia il programma e vai alle tracce 1, 18 e 35.\", \"Ruota il corpo del passo-passo di pochissimo: tutta l'asola sposta la testina di 2\u20133 tracce, quindi non pi\u00f9 di un quarto di traccia per volta.\", \"Se legge una traccia pi\u00f9 in alto, gira dall'altra parte. Ricontrolla dopo ogni movimento.\", \"Quando le tracce importanti sono buone, stringi le viti e ricontrolla (anche dopo un colpo sul fermo della traccia 1).\", \"Blocca le viti con una goccia di frenafiletti o di smalto e lascia asciugare mezz'ora.\"],\n              [\"Load the alignment program from an SD2IEC or a 1541 Ultimate. There must be only one device with that number on the bus.\", \"Switch off and unplug. Open the drive (bottom screws, shield, LED cable: photograph its orientation).\", \"Turn the mechanism so you can reach the stepper and insulate the board from the frame with a piece of card.\", \"Mark the stepper's original position with a marker.\", \"**Loosen without removing** the two stepper screws. They are sealed with varnish: use a screwdriver of the right size, a stripped screw makes everything worse.\", \"Insert the reference disk, run the program and go to tracks 1, 18 and 35.\", \"Rotate the stepper body very slightly: the whole slot moves the head 2\u20133 tracks, so no more than a quarter track at a time.\", \"If it reads one track high, turn the other way. Recheck after each move.\", \"When the key tracks are good, tighten the screws and recheck (also after a knock on the track-1 stop).\", \"Lock the screws with a drop of thread-locker or varnish and let it cure for half an hour.\"]] },\n      { note: [\"Con la cartuccia di Jani: \\\"track requested\\\" deve coincidere con \\\"track read\\\", la percentuale \\\"on track\\\" deve essere vicina a 100 e \\\"between track\\\" bassa. Le letture \\\"poor\\\" sulle mezze tracce sono normali nei primi drive.\", \"With Jani's cartridge: \\\"track requested\\\" must match \\\"track read\\\", \\\"on track\\\" should be near 100% and \\\"between track\\\" low. \\\"Poor\\\" readings on half-tracks are normal on early drives.\"] },\n      { drives: [\"1571\"], note: [\"**1571:** il passo-passo Newtronics si ruota, quello ALPS si fa scorrere. Per la testina superiore il manuale Commodore usa il disco di allineamento capovolto (traccia 13). I programmi per 1541 controllano solo la testina di sotto.\", \"**1571:** the Newtronics stepper rotates, the ALPS one slides. For the top head the Commodore manual uses the alignment disk upside down (track 13). 1541 programs only check the bottom head.\"] } ] },\n    { id: \"a-stop\", drives: [\"1541\", \"1541ii\", \"1571\", \"pet\"], t: [\"Il fermo della traccia 1\", \"The track-1 stop\"], d: [\"Spessimetro da 0,15 mm\", \"0.15 mm feeler gauge\"], body: [\n      [\"Va regolato solo dopo tutto il resto: conta per la formattazione e per il recupero dagli errori, non per la lettura normale.\", \"Adjust it only after everything else: it matters for formatting and error recovery, not for normal reading.\"],\n      { ol: [[\"Porta la testina sulla traccia 1.\", \"Allenta la vite di blocco del fermo.\", \"Metti uno spessimetro da 0,006 pollici (0,15 mm) tra il fermo e la sporgenza del mozzo del passo-passo.\", \"Sposta il fermo finch\u00e9 tocca appena lo spessimetro senza far girare l'albero del passo-passo, poi stringi.\", \"Verifica leggendo la traccia 1 (per esempio traccia 1 settore 1).\"],\n              [\"Bring the head to track 1.\", \"Loosen the stop's lock screw.\", \"Put a 0.006 in (0.15 mm) feeler gauge between the stop and the stepper hub tab.\", \"Move the stop until it just touches the gauge without turning the stepper shaft, then tighten.\", \"Check by reading track 1 (for example track 1 sector 1).\"]] },\n      { drives: [\"1571\"], note: [\"Sul 1571 Newtronics il manuale indica una distanza tra 0,006 e 0,010 pollici, ideale 0,008 (0,2 mm).\", \"On the Newtronics 1571 the manual gives a gap of 0.006 to 0.010 in, 0.008 ideal (0.2 mm).\"] } ] },\n    { id: \"a-scope\", t: [\"Il metodo con l'oscilloscopio (\\\"occhi di gatto\\\")\", \"The oscilloscope method (\\\"cat's eyes\\\")\"], d: [\"Quello dei centri di assistenza\", \"The service-centre method\"], body: [\n      [\"Con un disco di allineamento di fabbrica e un oscilloscopio a due canali si guarda il segnale della testina su una traccia scritta apposta mezza traccia dentro e mezza fuori: le due \\\"gobbe\\\" (occhi di gatto) devono avere la stessa ampiezza.\", \"With a factory alignment disk and a two-channel scope you look at the head signal on a track written half a track in and half out: the two \\\"lobes\\\" (cat's eyes) must have the same amplitude.\"],\n      { tbl: [[[\"Drive\", \"Disco\", \"Dove misurare\", \"Tolleranza\"], [\"1541\", \"Dysan o Commodore\", \"uscita dei preamplificatori\", \"lobi entro il 90% l'uno dell'altro, tracce 17 e 34\"], [\"1571\", \"48 tpi, 970016-01 \/ 314863-01\", \"U7 piedini 13 e 14, 50 mV\/div\", \"entro il 10%, almeno 200 mV picco-picco\"], [\"1581\", \"135 tpi, 314854-03\", \"TP1 \/ TP3\", \"entro il 10%, almeno 200 mV; traccia 40\"]],\n              [[\"Drive\", \"Disk\", \"Where to measure\", \"Tolerance\"], [\"1541\", \"Dysan or Commodore\", \"preamplifier outputs\", \"lobes within 90% of each other, tracks 17 and 34\"], [\"1571\", \"48 tpi, 970016-01 \/ 314863-01\", \"U7 pins 13 and 14, 50 mV\/div\", \"within 10%, at least 200 mV peak-to-peak\"], [\"1581\", \"135 tpi, 314854-03\", \"TP1 \/ TP3\", \"within 10%, at least 200 mV; track 40\"]]] },\n      { drives: [\"1581\"], note: [\"**1581:** l'allineamento esiste nel manuale diagnostico ma serve di rado. In pratica, se la meccanica Chinon \u00e8 disallineata o consumata si sostituisce con un'altra (anche una Chinon da Amiga).\", \"**1581:** the diagnostic manual has an alignment procedure but it is rarely needed. In practice, a misaligned or worn Chinon mechanism is replaced with another (even an Amiga Chinon).\"] } ] }\n  ];\n\n  D.speed = [\n    { id: \"v-strobe\", drives: [\"1541\", \"pet\", \"1571\"], t: [\"Con lo stroboscopio sotto il perno\", \"With the strobe disc under the spindle\"], d: [\"In Italia si guarda l'anello interno (50 Hz)\", \"With 50 Hz mains watch the inner ring\"], body: [\n      { ol: [[\"Apri il drive e giralo in modo da vedere il disco stroboscopico sulla puleggia sotto il perno.\", \"Illumina con una luce che sfarfalla alla frequenza di rete: un vecchio neon o una lampada a scarica. Molte lampade LED non sfarfallano e non funzionano.\", \"**Con la rete a 50 Hz (Italia, Europa) guarda l'anello interno; a 60 Hz (USA) quello esterno.**\", \"Fai girare il motore: inserisci un disco e manda un comando, oppure usa la funzione motore dello Speed Test o della cartuccia di Jani.\", \"Gira il trimmer VR1 a piccolissimi passi finch\u00e9 le tacche dell'anello giusto sembrano ferme.\"],\n              [\"Open the drive and turn it so you can see the strobe disc on the pulley under the spindle.\", \"Light it with a lamp that flickers at mains frequency: an old fluorescent tube or a discharge lamp. Many LED lamps do not flicker and will not work.\", \"**On 50 Hz mains (Italy, Europe) watch the inner ring; on 60 Hz (USA) the outer one.**\", \"Spin the motor: insert a disk and send a command, or use the motor function of the Speed Test or Jani's cartridge.\", \"Turn trimmer VR1 in tiny steps until the marks of the right ring seem to stand still.\"]] },\n      [\"Ricontrolla ogni tanto e dopo ogni riparazione: con la cinghia vecchia la velocit\u00e0 pu\u00f2 slittare.\", \"Check it again now and then and after every repair: an old belt can slip.\"] ] },\n    { id: \"v-soft\", t: [\"Con un programma\", \"With a program\"], d: [\"Il modo pi\u00f9 semplice e preciso\", \"The easiest and most accurate way\"], body: [\n      { tbl: [[[\"Programma\", \"Come si usa\", \"Drive\"], [\"**Speed Test di Zibri**\", \"Premi 8 per scegliere il drive, F1 misura. Accettabile da 265 a 325 giri; in un drive sano il valore oscilla di 0,1\u20130,3. Esci con F7 per riportare la testina. Scrive sulla traccia 36\", \"1541, 1541-II, 1570, 1571\"], [\"**Cartuccia di Jani**, tasto S\", \"Mostra la velocit\u00e0 attuale e quella giusta\", \"1541, 1541-II, 1571 in modo 1541\"], [\"**rpm1541** di OpenCBM\", \"Da PC con ZoomFloppy o XUM1541: `rpm1541 8`\", \"1541, 1570, 1571\"], [\"**Head Alignment and Speed Check** (Equalizer)\", \"Su CSDb, non provato da noi\", \"1541, 1570\"]],\n              [[\"Program\", \"How to use it\", \"Drives\"], [\"**Zibri's Speed Test**\", \"Press 8 to pick the drive, F1 measures. 265 to 325 RPM is acceptable; on a healthy drive the reading wobbles by 0.1\u20130.3. Exit with F7 so the head returns. It writes to track 36\", \"1541, 1541-II, 1570, 1571\"], [\"**Jani's cartridge**, key S\", \"Shows the current and the nominal speed\", \"1541, 1541-II, 1571 in 1541 mode\"], [\"OpenCBM **rpm1541**\", \"From a PC with a ZoomFloppy or XUM1541: `rpm1541 8`\", \"1541, 1570, 1571\"], [\"**Head Alignment and Speed Check** (Equalizer)\", \"On CSDb, not tested by us\", \"1541, 1570\"]]] },\n      [\"Entro 2\u20133 giri da 300 va bene. Se la lettura oscilla molto, prima di regolare controlla cinghia e grasso del perno.\", \"Within 2\u20133 RPM of 300 is fine. If the reading wobbles a lot, check the belt and spindle grease before adjusting.\"] ] },\n    { id: \"v-trim\", t: [\"Dove si regola e dove no\", \"Where it can be adjusted and where not\"], d: [\"Il trimmer VR1 e i drive senza regolazione\", \"Trimmer VR1 and drives with no adjustment\"], body: [\n      { ul: [[\"**1541 (ALPS e Newtronics):** trimmer VR1 sulla piccola scheda di controllo del motore attaccata alla meccanica, non sulla scheda logica. Secondo il modello \u00e8 sopra o sotto; in alcuni c'\u00e8 un foro per arrivarci.\", \"**1541-II con meccanica Chinon:** presa diretta, nessuna regolazione. Con la Mitsumi c'\u00e8 la cinghia.\", \"**1571:** le fonti non concordano: un manuale Sams mostra un trimmer VR1 sulla scheda motore, altri dicono che non c'\u00e8 e va aggiunto. Il gate array del 1571 tollera piccoli errori di velocit\u00e0.\", \"**1581:** nessun trimmer documentato. Una velocit\u00e0 sbagliata di solito \u00e8 un condensatore guasto sulla scheda del motore della meccanica.\", \"**Drive PET:** segui il manuale della meccanica (Shugart, Micropolis, Tandon) su zimmers.net.\"],\n             [\"**1541 (ALPS and Newtronics):** trimmer VR1 on the small motor control board fixed to the mechanism, not on the logic board. Depending on the model it is on top or underneath; some have an access hole.\", \"**1541-II with Chinon mechanism:** direct drive, no adjustment. The Mitsumi has a belt.\", \"**1571:** sources disagree: a Sams manual shows a VR1 trimmer on the motor board, others say there is none and one must be added. The 1571 gate array tolerates small speed errors.\", \"**1581:** no documented trimmer. A wrong speed is usually a failed capacitor on the mechanism's motor board.\", \"**PET drives:** follow the mechanism manual (Shugart, Micropolis, Tandon) on zimmers.net.\"]] },\n      { note: [\"Gira il trimmer di pochissimo per volta e aspetta che la lettura si stabilizzi. Alla fine bloccalo con una goccia di smalto.\", \"Turn the trimmer a tiny amount at a time and wait for the reading to settle. Lock it with a drop of varnish when done.\"] } ] }\n  ];\n\n  var G = \"#ffd23f\", V = \"#5ad15f\", B = \"#3fd8ff\", M = \"#e0398a\", O = \"#f8961e\", P = \"#7c70da\";\n  D.software = [\n    { i: \"cart\", c: M, t: [\"Cartuccia diagnostica 1541 (Jani)\", \"1541 Diagnostic Cartridge (Jani)\"], tag: [\"gratuita \u00b7 CRT\/BIN\", \"free \u00b7 CRT\/BIN\"], d: [\"Allineamento, velocit\u00e0, movimento della testina, scansione errori. Per EasyFlash, Kung Fu Flash, 1541 Ultimate o EPROM.\", \"Alignment, speed, head exerciser, error scan. For EasyFlash, Kung Fu Flash, 1541 Ultimate or an EPROM.\"], u: \"https:\/\/c64os.com\/buyersguide\/1541-diagnostic\", drives: [\"1541\", \"1541ii\", \"1571\"] },\n    { i: \"disk\", c: G, t: [\"1541 Speed Test (Zibri)\", \"1541 Speed Test (Zibri)\"], tag: [\"gratuito \u00b7 D64\", \"free \u00b7 D64\"], d: [\"Misura la velocit\u00e0 e muove la testina con le frecce. Ha anche il sorgente su GitHub.\", \"Measures the speed and steps the head with the cursor keys. Source on GitHub too.\"], u: \"https:\/\/csdb.dk\/release\/?id=194046\", drives: [\"1541\", \"1541ii\", \"1571\"] },\n    { i: \"disk\", c: G, t: [\"1541\/70 Head Alignment and Speed Check\", \"1541\/70 Head Alignment and Speed Check\"], tag: [\"CSDb \u00b7 D64\", \"CSDb \u00b7 D64\"], d: [\"Controllo di allineamento e velocit\u00e0 (Equalizer).\", \"Alignment and speed check (Equalizer).\"], u: \"https:\/\/csdb.dk\/release\/?id=215722\", drives: [\"1541\", \"1541ii\", \"1571\"] },\n    { i: \"disk\", c: G, t: [\"1541 Alps Drive Check & Alignment\", \"1541 Alps Drive Check & Alignment\"], tag: [\"CSDb \u00b7 D64\", \"CSDb \u00b7 D64\"], d: [\"Programma di controllo e allineamento per le meccaniche ALPS.\", \"Check and alignment program for ALPS mechanisms.\"], u: \"https:\/\/csdb.dk\/release\/?id=96898\", drives: [\"1541\"] },\n    { i: \"book\", c: B, t: [\"Programmi BASIC di zimmers.net\", \"BASIC programs on zimmers.net\"], tag: [\"gratuiti\", \"free\"], d: [\"1541-align e 1541-tester (va anche con il 1571 in modo 1541), il circuito per provare il passo-passo dalla user port e note di allineamento.\", \"1541-align and 1541-tester (works with the 1571 in 1541 mode too), a user-port stepper test circuit and alignment notes.\"], u: \"http:\/\/www.zimmers.net\/anonftp\/pub\/cbm\/documents\/disk-drives\/\", drives: [\"1541\", \"1541ii\", \"1571\"] },\n    { i: \"disk\", c: O, t: [\"Free Spirit 1541\/1571 Drive Alignment\", \"Free Spirit 1541\/1571 Drive Alignment\"], tag: [\"commerciale \u00b7 usato\", \"commercial \u00b7 used\"], d: [\"Il kit pi\u00f9 consigliato: ha il suo disco di riferimento, controlla allineamento, velocit\u00e0 e fermo. Si trova solo usato.\", \"The most recommended kit: it has its own reference disk and checks alignment, speed and stop. Only available second-hand.\"], drives: [\"1541\", \"1541ii\", \"1571\"] },\n    { i: \"book\", c: O, t: [\"CSM 1541 Disk Drive Alignment v2 (manuale)\", \"CSM 1541 Disk Drive Alignment v2 (manual)\"], tag: [\"manuale PDF\", \"PDF manual\"], d: [\"Il manuale del kit CSM: velocit\u00e0, allineamento, fermo e test di formattazione.\", \"The CSM kit manual: speed, alignment, stop and format test.\"], u: \"https:\/\/files.commodore.software\/reference-material\/manuals\/commodore-64-manuals\/software-manuals\/1541-disk-drive-alignment-program-v2-csm.pdf\", drives: [\"1541\", \"1541ii\"] },\n    { i: \"pc\", c: V, t: [\"Nibtools e OpenCBM\", \"Nibtools and OpenCBM\"], tag: [\"PC \u00b7 ZoomFloppy\", \"PC \u00b7 ZoomFloppy\"], d: [\"Con ZoomFloppy o XUM1541 il PC parla con il drive: `rpm1541` misura la velocit\u00e0, nibtools analizza densit\u00e0 e margini delle tracce.\", \"With a ZoomFloppy or XUM1541 the PC talks to the drive: `rpm1541` measures the speed, nibtools analyses track density and margins.\"], u: \"https:\/\/github.com\/rittwage\/nibtools\", drives: [\"1541\", \"1541ii\", \"1571\"] },\n    { i: \"book\", c: P, t: [\"Tutti i programmi di allineamento su CSDb\", \"All alignment programs on CSDb\"], tag: [\"ricerca\", \"search\"], d: [\"Altri programmi d'epoca (Head Alignment Kit, Disk Alignment Utilities, SX-64 Drive Alignment\u2026), non provati da noi.\", \"Other period programs (Head Alignment Kit, Disk Alignment Utilities, SX-64 Drive Alignment\u2026), not tested by us.\"], u: \"https:\/\/csdb.dk\/search\/?seinsel=releases&search=alignment\" }\n  ];\n\n  D.docs = [\n    { i: \"book\", c: G, t: [\"Manuale di servizio 1540\/1541 (HTML)\", \"1540\/1541 service manual (HTML)\"], d: [\"Teoria dei circuiti, codici a lampeggi, tabella dei guasti, resistenze di testina e motori, disposizione delle schede.\", \"Circuit theory, flash codes, fault table, head and motor resistances, board layouts.\"], u: \"http:\/\/www.zimmers.net\/anonftp\/pub\/cbm\/schematics\/drives\/new\/1541\/service\/contents.html\", drives: [\"1541\", \"1541ii\"] },\n    { i: \"book\", c: G, t: [\"Schemi 1541 e 1541-II (zimmers.net)\", \"1541 and 1541-II schematics (zimmers.net)\"], d: [\"Manuali di servizio, addendum 1541-II, schemi di tutte le schede, liste parti di Levak, alimentatore del 1541-II.\", \"Service manuals, 1541-II addendum, schematics of every board, Levak's parts lists, the 1541-II power brick.\"], u: \"http:\/\/www.zimmers.net\/anonftp\/pub\/cbm\/schematics\/drives\/new\/1541\/\", drives: [\"1541\", \"1541ii\"] },\n    { i: \"book\", c: G, t: [\"Manuale tecnico 1541 (scansioni)\", \"1541 technical manual (scans)\"], d: [\"Liste parti e schemi della scheda lunga 1540008, della 1540048 e del 1541B 250448.\", \"Parts lists and schematics of the 1540008 long board, the 1540048 and the 1541B 250448.\"], u: \"http:\/\/www.zimmers.net\/anonftp\/pub\/cbm\/schematics\/drives\/new\/1541\/tech\/\", drives: [\"1541\"] },\n    { i: \"people\", c: V, t: [\"Ray Carlsen: note sul 1541\", \"Ray Carlsen: 1541 notes\"], d: [\"La guida chip\/sintomo, fix1541 (riparazioni di circa 40 drive), note su 1541C e 1541-II, foto e ROM.\", \"The chip\/symptom guide, fix1541 (about 40 drive repairs), 1541C and 1541-II notes, photos and ROMs.\"], u: \"https:\/\/portcommodore.com\/rcarlsen\/cbm\/1541\/\", drives: [\"1541\", \"1541ii\"] },\n    { i: \"book\", c: B, t: [\"1541 Troubleshooting & Repair Guide\", \"1541 Troubleshooting & Repair Guide\"], d: [\"Il libro di Michael Peltier (Sams, 1986): programma exerciser, velocit\u00e0, allineamento con e senza oscilloscopio. Scansione di bassa qualit\u00e0.\", \"Michael Peltier's book (Sams, 1986): exerciser program, speed, alignment with and without a scope. Low-quality scan.\"], u: \"https:\/\/archive.org\/details\/Commodore_1541_Troubleshooting_and_Repair_Guide\", drives: [\"1541\", \"1541ii\"] },\n    { i: \"book\", c: G, t: [\"Schemi e manuali 1571\", \"1571 schematics and manuals\"], d: [\"Manuale di servizio (anche in HTML), manuali diagnostici, schema 310420, liste parti e note sul 1571CR.\", \"Service manual (also as HTML), diagnostic manuals, 310420 schematic, parts lists and 1571CR notes.\"], u: \"https:\/\/www.zimmers.net\/anonftp\/pub\/cbm\/schematics\/drives\/new\/1571\/\", drives: [\"1571\"] },\n    { i: \"book\", c: B, t: [\"Manuale diagnostico 1571 \/ C128D\", \"1571 \/ C128D diagnostic manual\"], d: [\"Codici a lampeggi, allineamento con oscilloscopio, fermo, test della protezione.\", \"Flash codes, scope alignment, stop, write-protect test.\"], u: \"https:\/\/archive.org\/details\/diagnostic-manual-1571-c-128-d-version-1.2-1.3-314855-03-1988-oct\", drives: [\"1571\"] },\n    { i: \"people\", c: V, t: [\"Ray Carlsen: 1571, C128D e DCR\", \"Ray Carlsen: 1571, C128D and DCR\"], d: [\"Tabella chip\/sintomo del 1571, testina superiore, modifica della protezione, ventola del DCR, foto.\", \"1571 chip\/symptom table, top head, write-protect mod, DCR fan, photos.\"], u: \"https:\/\/portcommodore.com\/rcarlsen\/cbm\/1571\/\", drives: [\"1571\"] },\n    { i: \"book\", c: P, t: [\"Retroisle: guida ai guasti del 1571\", \"Retroisle: 1571 troubleshooting guide\"], d: [\"Tabella dei sintomi, programma per capire che ROM hai, programma di allineamento di RUN Magazine.\", \"Symptom table, a program to tell which ROM you have, RUN Magazine alignment program.\"], u: \"https:\/\/retroisle.com\/commodore\/c64128\/Technical\/Hardware\/1571_troubleshooting.php\", drives: [\"1571\"] },\n    { i: \"book\", c: G, t: [\"Schemi e manuale 1581\", \"1581 schematics and manual\"], d: [\"Manuale di servizio 314982 (anche a pagine), schema 252380, lista parti, alimentatore, manuale diagnostico.\", \"Service manual 314982 (also as pages), schematic 252380, parts list, power supply, diagnostic manual.\"], u: \"https:\/\/www.zimmers.net\/anonftp\/pub\/cbm\/schematics\/drives\/new\/1581\/\", drives: [\"1581\"] },\n    { i: \"people\", c: V, t: [\"Ray Carlsen: 1581\", \"Ray Carlsen: 1581\"], d: [\"Accensione normale, spia di errore, alimentatore, guasti di U2, U4, U10 e U13, ponticello J1, meccaniche sostitutive.\", \"Normal power-on, error light, power supply, U2, U4, U10 and U13 faults, jumper J1, replacement mechanisms.\"], u: \"https:\/\/portcommodore.com\/rcarlsen\/cbm\/1581\/\", drives: [\"1581\"] },\n    { i: \"book\", c: B, t: [\"Riparare un 1581 (retro.moe)\", \"Repairing a 1581 (retro.moe)\"], d: [\"Un caso reale in due parti: utile per capire che non basta cambiare il WD1772.\", \"A real case in two parts: useful to see that swapping the WD1772 is not always enough.\"], u: \"https:\/\/retro.moe\/2016\/03\/14\/repairing-the-commodore-1581-floppy-disk-drive-part-1\/\", drives: [\"1581\"] },\n    { i: \"book\", c: G, t: [\"Schemi dei drive IEEE (zimmers.net)\", \"IEEE drive schematics (zimmers.net)\"], d: [\"Cartelle 2031, 4040, 8050, 8280, SFD-1001 con manuali di servizio, schemi, liste parti e la tabella dei codici a lampeggi.\", \"2031, 4040, 8050, 8280 and SFD-1001 folders with service manuals, schematics, parts lists and the flash-code table.\"], u: \"http:\/\/www.zimmers.net\/anonftp\/pub\/cbm\/schematics\/drives\/old\/\", drives: [\"pet\"] },\n    { i: \"people\", c: V, t: [\"Ray Carlsen: PET e SFD-1001\", \"Ray Carlsen: PET and SFD-1001\"], d: [\"Pagine del manuale 8050 (codici di avvio e guasti), manuale del 2031, ROM dell'SFD-1001.\", \"8050 manual pages (start-up codes and faults), 2031 manual, SFD-1001 ROMs.\"], u: \"https:\/\/portcommodore.com\/rcarlsen\/cbm\/PET\/\", drives: [\"pet\"] },\n    { i: \"book\", c: B, t: [\"Riparare un CBM 8050 (Retro Engineer)\", \"Repairing a CBM 8050 (Retro Engineer)\"], d: [\"Un lampo all'accensione: 6532 guasto in UC1 e adattatore per la ROM.\", \"One flash at power-on: a bad 6532 at UC1 and a ROM adapter.\"], u: \"https:\/\/retro.engineer\/projects\/2021-05-15_CBM-8050\/\", drives: [\"pet\"] },\n    { i: \"book\", c: B, t: [\"Riparare un 1541 (Retro Engineer)\", \"Repairing a 1541 (Retro Engineer)\"], d: [\"Scheda 250442: reset in corto su UB1, un 6522 montato al contrario e la testina aperta al piedino 5.\", \"Board 250442: reset shorted at UB1, a 6522 fitted backwards and an open head at pin 5.\"], u: \"https:\/\/retro.engineer\/projects\/2021-02-23_Commodore_1541\/\", drives: [\"1541\"] },\n    { i: \"chip\", c: M, t: [\"EasyGate1541\", \"EasyGate1541\"], d: [\"Sostituto open source a CPLD per il gate array 325572-01 delle schede marroni e corte.\", \"Open-source CPLD replacement for the 325572-01 gate array on brown and short boards.\"], u: \"https:\/\/codeberg.org\/diwou\/EasyGate1541\", drives: [\"1541\"] },\n    { i: \"chip\", c: M, t: [\"Scheda replica 1541 (Bob's Bits)\", \"1541 replica board (Bob's Bits)\"], d: [\"Circuito stampato nuovo copia della 250446, con lista componenti.\", \"New printed circuit board copying the 250446, with a parts list.\"], u: \"https:\/\/www.tindie.com\/products\/bobsbits\/commodore-1541-disk-drive-replica-pcb\", drives: [\"1541\"] },\n    { i: \"eprom\", c: O, t: [\"JiffyDOS\", \"JiffyDOS\"], d: [\"ROM veloci per 1541, 1541-II, 1571 e 1581 (servono anche quelle del computer). Sul 1571 risolve i difetti della ROM -03.\", \"Fast ROMs for the 1541, 1541-II, 1571 and 1581 (the computer needs its own too). On the 1571 it fixes the -03 ROM bugs.\"], u: \"https:\/\/www.go4retro.com\/?p=54\", drives: [\"1541\", \"1541ii\", \"1571\", \"1581\"] },\n    { i: \"eprom\", c: P, t: [\"ROM dei drive (zimmers.net)\", \"Drive ROMs (zimmers.net)\"], d: [\"Le immagini di tutte le ROM originali, per programmare una EPROM di ricambio.\", \"Images of every original ROM, to burn a replacement EPROM.\"], u: \"https:\/\/www.zimmers.net\/anonftp\/pub\/cbm\/firmware\/drives\/new\/\" }\n  ];\n\n  D.tools = [\n    { i: \"meter\", c: B, t: [\"Multimetro\", \"Multimeter\"], d: [\"Alimentazioni, fusibile, bobine della testina e dei motori, continuit\u00e0 dei cavi.\", \"Supplies, fuse, head and motor coils, cable continuity.\"] },\n    { i: \"probe\", c: G, t: [\"Sonda logica\", \"Logic probe\"], d: [\"Clock, reset e linee del bus seriale: dice subito se un segnale \u00e8 fermo o si muove.\", \"Clock, reset and serial bus lines: it tells you at once whether a signal is stuck or toggling.\"] },\n    { i: \"scope\", c: V, t: [\"Oscilloscopio\", \"Oscilloscope\"], d: [\"Segnale della testina, allineamento con gli occhi di gatto, clock da 16 MHz.\", \"Head signal, cat's-eye alignment, the 16 MHz clock.\"] },\n    { i: \"cart\", c: M, t: [\"SD2IEC, Pi1541 o 1541 Ultimate\", \"SD2IEC, Pi1541 or 1541 Ultimate\"], d: [\"Per capire se il guasto \u00e8 nel computer e per caricare i programmi di test senza usare il drive sospetto.\", \"To tell whether the fault is in the computer and to load test programs without using the suspect drive.\"] },\n    { i: \"disk\", c: G, t: [\"Dischi buoni e dischi da buttare\", \"Good disks and scratch disks\"], d: [\"Un disco formattato su un drive sano per le prove di lettura e l'allineamento, e dischi da sacrificare per le formattazioni.\", \"A disk formatted on a healthy drive for read tests and alignment, and disks to sacrifice for formatting.\"] },\n    { i: \"brush\", c: B, t: [\"Alcool isopropilico e cotton fioc\", \"Isopropyl alcohol and cotton buds\"], d: [\"Al 90% o pi\u00f9, per testina, guide e sensori. Niente acetone.\", \"90% or stronger, for the head, rails and sensors. No acetone.\"] },\n    { i: \"driver\", c: O, t: [\"Cacciaviti della misura giusta\", \"Screwdrivers of the right size\"], d: [\"Le viti del passo-passo sono sigillate: un cacciavite sbagliato le spana.\", \"The stepper screws are sealed: a wrong screwdriver strips them.\"] },\n    { i: \"gauge\", c: P, t: [\"Spessimetro\", \"Feeler gauge\"], d: [\"Lama da 0,15 mm (0,006\\\") per il fermo della traccia 1.\", \"A 0.15 mm (0.006\\\") blade for the track-1 stop.\"] },\n    { i: \"lamp\", c: G, t: [\"Neon o lampada stroboscopica\", \"Fluorescent tube or strobe light\"], d: [\"Per leggere il disco stroboscopico sotto il perno. Le lampade LED di solito non vanno bene.\", \"To read the strobe disc under the spindle. LED lamps usually do not work.\"] },\n    { i: \"spray\", c: V, t: [\"Spray congelante\", \"Freeze spray\"], d: [\"Trova il chip che cede a caldo.\", \"Finds the chip that fails when warm.\"] },\n    { i: \"iron\", c: M, t: [\"Saldatore e dissaldatore\", \"Soldering and desoldering iron\"], d: [\"A temperatura controllata; monta zoccoli torniti sui chip che sostituisci.\", \"Temperature-controlled; fit turned-pin sockets on the chips you replace.\"] },\n    { i: \"eprom\", c: O, t: [\"Programmatore EPROM\", \"EPROM programmer\"], d: [\"Per rifare le ROM del DOS su EPROM (con adattatore dove serve).\", \"To rebuild DOS ROMs on EPROMs (with an adapter where needed).\"] }\n  ];\n\n  var Z = \"http:\/\/www.zimmers.net\/anonftp\/pub\/cbm\/schematics\/drives\/\";\n  function L(u) { return \"[\" + \"zimmers\" + \"](\" + u + \")\"; }\n  D.pcbs = [\n    { drives: [\"1541\"], cells: [\"1540 \/ 1541\", [\"**1540001 \/ 1540008** (stampato 1540007)\", \"**1540001 \/ 1540008** (marked 1540007)\"], \"ALPS\", [\"Scheda lunga, quattro RAM 2114, case bianco\", \"Long board, four 2114 RAMs, white case\"], L(Z + \"new\/1541\/tech\/\")] },\n    { drives: [\"1541\"], cells: [\"1541\", \"**1540048** -01 \/ -03\", [\"ALPS \/ Newtronics\", \"ALPS \/ Newtronics\"], [\"Prima scheda corta: una RAM 2K e il gate array 325572\", \"First short board: one 2K RAM and the 325572 gate array\"], L(Z + \"new\/1541\/\")] },\n    { drives: [\"1541\"], cells: [\"1541\", \"**1540050**\", \"ALPS\", [\"Marrone 1982, porta che si abbassa\", \"Brown 1982, push-down door\"], L(Z + \"new\/1541\/\")] },\n    { drives: [\"1541\"], cells: [\"1541\", \"**251830 \/ 251777**\", \"Newtronics\", [\"Marrone 1984, leva a rotazione\", \"Brown 1984, twist latch\"], L(Z + \"new\/1541\/\")] },\n    { drives: [\"1541\"], cells: [\"1541A\", \"**250442 \/ 250446**\", [\"ALPS o Newtronics (ponticello)\", \"ALPS or Newtronics (jumper)\"], [\"Sulla 250446 un 74LS123 al posto del 9602 in UD4\", \"On the 250446 a 74LS123 replaces the 9602 at UD4\"], L(Z + \"new\/1541\/\")] },\n    { drives: [\"1541\"], cells: [\"1541B \/ 1541C\", \"**250448 \/ 251854**\", \"Newtronics \/ Mitsumi\", [\"Una ROM 16K, gate array 251828 e 251829, sensore di traccia 0 disattivato (J3)\", \"One 16K ROM, 251828 and 251829 gate arrays, track-0 sensor disabled (J3)\"], L(Z + \"new\/1541\/tech\/\")] },\n    { drives: [\"1541\"], cells: [\"SX-64\", \"**250410**\", \"ALPS\", [\"In verticale dietro la scheda I\/O\", \"Standing on edge behind the I\/O board\"], \"[Ray Carlsen](https:\/\/portcommodore.com\/rcarlsen\/cbm\/sx64\/)\"] },\n    { drives: [\"1541ii\"], cells: [\"1541-II\", [\"**340503** (schema 355207)\", \"**340503** (schematic 355207)\"], \"Chinon \/ Newtronics \/ Mitsumi \/ ALPS\", [\"Alimentatore esterno, interruttori di indirizzo dietro, amplificatore CX20185 SMD\", \"External brick, rear address switches, SMD CX20185 amplifier\"], L(Z + \"new\/1541\/\")] },\n    { drives: [\"1571\"], cells: [\"1571 \/ C128D\", \"**310420**\", \"Newtronics D502 \/ ALPS\", [\"Alimentatore switching interno, due porte seriali\", \"Internal switching PSU, two serial ports\"], L(Z + \"new\/1571\/\")] },\n    { drives: [\"1571\"], cells: [\"C128DCR\", [\"scheda madre (schema 252451)\", \"main board (schematic 252451)\"], \"Newtronics D502\", [\"Sigle U1xx, MOS 5710, ROM 318047\", \"U1xx references, MOS 5710, ROM 318047\"], \"[zimmers](https:\/\/www.zimmers.net\/anonftp\/pub\/cbm\/schematics\/computers\/c128\/)\"] },\n    { drives: [\"1581\"], cells: [\"1581\", [\"**250471** (schema 252380)\", \"**250471** (schematic 252380)\"], \"Chinon F-354E\", [\"3\u00bd\\\", WD1772, solo U2 su zoccolo\", \"3\u00bd\\\", WD1772, only U2 socketed\"], L(Z + \"new\/1581\/\")] },\n    { drives: [\"pet\"], cells: [\"2040 \/ 3040 \/ 4040\", [\"digitale 320806, analogica 320816\", \"digital 320806, analogue 320816\"], \"Shugart SA390\", [\"Doppio, 6502 + 6504, 6530 a maschera\", \"Dual, 6502 + 6504, masked 6530\"], L(Z + \"old\/4040\/\")] },\n    { drives: [\"pet\"], cells: [\"8050 \/ 8250\", [\"digitale 8050002\", \"digital 8050002\"], \"Micropolis \/ Tandon \/ MPI\", [\"Doppio, alta densit\u00e0; analogica diversa per ogni meccanica\", \"Dual, high density; analogue board differs per mechanism\"], L(Z + \"old\/8050\/\")] },\n    { drives: [\"pet\"], cells: [\"2031\", [\"HP 2031040 \/ LP 1540033\", \"HP 2031040 \/ LP 1540033\"], \"Shugart \/ ALPS\", [\"Singolo IEEE; la versione LP deriva dal 1541\", \"Single IEEE; the LP version derives from the 1541\"], L(Z + \"old\/2031\/\")] },\n    { drives: [\"pet\"], cells: [\"SFD-1001\", [\"con adattatore 6530 (251232)\", \"with 6530 adapter (251232)\"], \"Matsushita JU-570-2\", [\"Singolo, doppia faccia, DOS 2.7 come l'8250\", \"Single, double-sided, DOS 2.7 like the 8250\"], L(Z + \"old\/1001\/\")] }\n  ];\n})(window.RF_DRIVE_DATA);\n\n\/*END*\/\n<\/script>\n<script>\n(function () {\n  var root = document.getElementById('rfdd');\n  if (!root || root.dataset.ready) return;\n  root.dataset.ready = '1';\n  var D = window.RF_DRIVE_DATA, EN = \/^en\/i.test(document.documentElement.lang || '');\n  var $ = function (id) { return document.getElementById(id); };\n  function t(a) { return Array.isArray(a) ? a[EN ? 1 : 0] : (a == null ? '' : a); }\n  function esc(s) { return String(s == null ? '' : s).replace(\/[&<>\"']\/g, function (c) { return { '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#39;' }[c]; }); }\n  \/\/ testo con **grassetto**, `codice` e [link](url): l'HTML viene sempre filtrato\n  function md(s) {\n    return esc(t(s)).replace(\/\\*\\*(.+?)\\*\\*\/g, '<b>$1<\/b>').replace(\/`(.+?)`\/g, '<code>$1<\/code>')\n      .replace(\/\\[([^\\]]+)\\]\\(([^)\\s]+)\\)\/g, function (m, a, u) { var ext = u.charAt(0) !== '\/'; return '<a class=\"lk\" href=\"' + u + '\"' + (ext ? ' target=\"_blank\" rel=\"noopener\"' : '') + '>' + a + '<\/a>'; });\n  }\n  function norm(s) { return String(s || '').toLowerCase().normalize('NFD').replace(\/[\u0300-\u036f]\/g, ''); }\n  var UI = D.ui;\n  [].forEach.call(root.querySelectorAll('[data-t]'), function (el) { el.innerHTML = md(UI[el.dataset.t]); });\n  $('dQ').placeholder = t(UI.searchPh);\n  $('dNav').innerHTML = D.nav.map(function (n) { return '<a href=\"#' + n[0] + '\">' + esc(t(n[1])) + '<\/a>'; }).join('');\n  $('dWarn').innerHTML = '\u26a0\ufe0f <span>' + md(UI.warn) + '<\/span>';\n  $('dFoot').innerHTML = md(UI.foot);\n\n  \/* ---------- icone pixel ---------- *\/\n  function pix(m, col) {\n    var s = '', pal = { a: col, b: '#ffffff', c: '#5ad15f', d: '#9a9a9a', e: '#f94144' };\n    for (var y = 0; y < m.length; y++) for (var x = 0; x < m[y].length; x++) { var ch = m[y][x]; if (ch !== '.') s += '<rect x=\"' + x + '\" y=\"' + y + '\" width=\"1.02\" height=\"1.02\" fill=\"' + pal[ch] + '\"\/>'; }\n    return '<svg viewBox=\"0 0 12 12\" shape-rendering=\"crispEdges\" aria-hidden=\"true\">' + s + '<\/svg>';\n  }\n  function icon(name, col) { return pix(D.pix[name] || D.pix.chip, col); }\n\n  \/\/ disegno del drive visto di fronte (pixel art 64x26)\n  function driveSvg(L) {\n    var W = L.w, H = L.h, x0 = Math.round((64 - W) \/ 2), y0 = 25 - H, r = '';\n    function R(x, y, w, h, c) { r += '<rect x=\"' + x + '\" y=\"' + y + '\" width=\"' + w + '\" height=\"' + h + '\" fill=\"' + c + '\"\/>'; }\n    R(x0, y0, W, H, L.c); R(x0, y0, W, 1, L.hi || '#ffffff66'); R(x0, y0 + H - 1, W, 1, '#00000066');\n    if (L.f) R(x0 + 1, y0 + 3, W - 2, H - 5, L.f);\n    var n = L.dual ? 2 : 1, sw = Math.round(L.dual ? W * 0.36 : L.slot === 3 ? W * 0.5 : W * 0.6), sy = y0 + Math.round(H * 0.4);\n    for (var i = 0; i < n; i++) {\n      var sx = L.dual ? x0 + Math.round(W * (i ? 0.58 : 0.06)) : x0 + Math.round((W - sw) \/ 2) + (L.slot === 3 ? -3 : 0);\n      R(sx, sy, sw, 2, '#15120d');\n      var mid = sx + Math.round(sw \/ 2);\n      if (L.door === 'lever') R(mid - 1, sy - 3, 2, 8, L.lv || '#4a4236');\n      else if (L.door === 'twist') { R(mid - 4, sy - 1, 8, 4, L.lv || '#4a4236'); R(mid - 1, sy - 2, 2, 6, '#00000055'); }\n      else if (L.door === 'push') R(sx + sw + 2, sy - 1, 4, 4, L.lv || '#bdb6a3');\n      else if (L.door === 'eject') R(sx + sw - 4, sy + 3, 4, 2, L.lv || '#bdb6a3');\n    }\n    var ly = y0 + H - 4, lx = L.dual ? x0 + Math.round(W \/ 2) - 3 : x0 + 3, c = L.lamps || ['#5ad15f', '#f94144'];\n    R(lx, ly, 2, 1, c[0]); R(lx + 3, ly, 2, 1, c[1]);\n    return '<svg viewBox=\"0 0 64 26\" shape-rendering=\"crispEdges\" aria-hidden=\"true\">' + r + '<\/svg>';\n  }\n\n  \/* ---------- stato ---------- *\/\n  var DRIVES = D.drives, drive = DRIVES[1].id, board = null, sym = null, chip = null;\n  var saved = new URLSearchParams(location.search);\n  if (saved.get('drive') && DRIVES.some(function (d) { return d.id === saved.get('drive'); })) drive = saved.get('drive');\n  function cur() { return DRIVES.filter(function (d) { return d.id === drive; })[0]; }\n  function boardsOf(id) { return D.boards.filter(function (b) { return b.drive === id; }); }\n  function B() { return D.boards.filter(function (b) { return b.id === board; })[0]; }\n  function forDrive(x) { return !x.drives || x.drives.indexOf(drive) >= 0; }\n  function writeUrl() {\n    var p = new URLSearchParams(location.search);\n    p.set('drive', drive); if (sym) p.set('sintomo', sym); else p.delete('sintomo');\n    try { history.replaceState(null, '', location.pathname + '?' + p.toString() + location.hash); } catch (e) { \/* ignora *\/ }\n  }\n\n  \/* ---------- scelta del drive ---------- *\/\n  function renderMach() {\n    $('dMach').innerHTML = '<span class=\"mach-t\">' + esc(t(UI.pick)) + '<\/span><div class=\"mach-l\">' + DRIVES.map(function (d) {\n      return '<button type=\"button\" data-drive=\"' + d.id + '\"' + (d.id === drive ? ' class=\"on\" aria-pressed=\"true\"' : ' aria-pressed=\"false\"') + '>' + driveSvg(d.look) + '<span><b>' + esc(d.name) + '<\/b><small>' + esc(t(d.sub)) + '<\/small><\/span><\/button>';\n    }).join('') + '<\/div>';\n    $('dInfo').innerHTML = md(cur().info);\n  }\n\n  \/* ---------- LED all'accensione ---------- *\/\n  var ledTimers = [];\n  function renderLeds() {\n    ledTimers.forEach(clearTimeout); ledTimers = [];\n    var list = D.leds.filter(forDrive), dark = cur().dark, lc = cur().lamps || ['cg', 'cr'];\n    $('dLeds').innerHTML = list.map(function (l, i) {\n      return '<button type=\"button\" class=\"lcard\" ' + (l.test ? 'data-test=\"' + l.test + '\"' : 'data-pick=\"' + l.go + '\"') + '><div class=\"front' + (dark ? ' dark' : '') + '\" data-led=\"' + i + '\"><div class=\"slot\"><\/div><div class=\"door\"><\/div><span class=\"lamp g ' + lc[0] + '\"><\/span><span class=\"lamp r ' + lc[1] + '\"><\/span><span class=\"spin\"><i>\u2731<\/i> ' + esc(t(UI.motor)) + '<\/span><\/div><b>' + esc(t(l.t)) + '<\/b><small>' + esc(t(l.d)) + '<\/small><span class=\"go\">' + esc(t(l.test ? UI.toTest : UI.toChips)) + ' \u25b6<\/span><\/button>';\n    }).join('');\n    list.forEach(function (l, i) {\n      var f = root.querySelector('[data-led=\"' + i + '\"]'), g = f.querySelector('.g'), r = f.querySelector('.r'), m = f.querySelector('.spin');\n      g.classList.toggle('on', l.power !== false); g.classList.toggle('dim', !!l.dim);\n      m.classList.toggle('on', !!l.motor);\n      var seq = l.seq || [[1, 1000]], k = 0;\n      (function step() {\n        var s = seq[k % seq.length]; r.classList.toggle('on', !!s[0]);\n        if (s[3] != null) g.classList.toggle('lo', !s[3]);\n        if (s[2] != null) m.classList.toggle('on', !!s[2]);\n        k++; if (seq.length > 1) ledTimers.push(setTimeout(step, s[1]));\n      })();\n    });\n  }\n\n  \/* ---------- schermate ---------- *\/\n  function renderScreens() {\n    var c = cur();\n    $('dScreens').innerHTML = D.screens.filter(forDrive).map(function (s) {\n      var lines = (c.boot || D.boot).concat(t(s.lines)).join('\\n') + (s.hang ? '' : '\\n\u2588');\n      return '<button type=\"button\" class=\"scard\" data-pick=\"' + s.go + '\"><div class=\"tv\"><div class=\"scr\"><div class=\"in\">' + esc(lines) + '<\/div><\/div><\/div><b>' + esc(t(s.t)) + '<\/b><small>' + esc(t(s.d)) + '<\/small><span class=\"go\">' + esc(t(UI.toChips)) + ' \u25b6<\/span><\/button>';\n    }).join('');\n  }\n\n  \/* ---------- sintomi e chip ---------- *\/\n  function symsOfBoard(b) {\n    var used = {};\n    b.chips.forEach(function (c) { (c.s || []).forEach(function (s) { used[s] = 1; }); (c.a || []).forEach(function (s) { used[s] = 1; }); });\n    (b.extra || []).forEach(function (s) { used[s] = 1; });\n    return D.symptoms.filter(function (s) { return used[s.id] || (s.general && forDrive(s)); });\n  }\n  function chipsFor(b, sid) {\n    var main = [], also = [];\n    b.chips.forEach(function (c) { if ((c.s || []).indexOf(sid) >= 0) main.push(c); else if ((c.a || []).indexOf(sid) >= 0) also.push(c); });\n    return { main: main, also: also };\n  }\n  function symById(id) { return D.symptoms.filter(function (s) { return s.id === id; })[0]; }\n  function renderBoards() {\n    var bs = boardsOf(drive);\n    if (!bs.some(function (b) { return b.id === board; })) board = bs[0].id;\n    $('dBoards').innerHTML = bs.map(function (b) { return '<button type=\"button\" class=\"tab' + (b.id === board ? ' on' : '') + '\" data-board=\"' + b.id + '\">' + esc(t(b.label)) + '<\/button>'; }).join('');\n    renderSyms(); renderBoard(); renderDetail();\n  }\n  function renderSyms() {\n    var b = B(), list = symsOfBoard(b), n = 0;\n    $('dSyms').innerHTML = D.cats.map(function (cat) {\n      var items = list.filter(function (s) { return s.cat === cat[0]; });\n      if (!items.length) return '';\n      return '<div class=\"scat\"><b>' + esc(t(cat[1]).toUpperCase()) + '<\/b><div>' + items.map(function (s) {\n        n++; return '<button type=\"button\" class=\"sym' + (s.id === sym ? ' on' : '') + '\" data-pick=\"' + s.id + '\"><span class=\"n\">' + n + '<\/span><span>' + esc(t(s.t)) + '<\/span><\/button>';\n      }).join('') + '<\/div><\/div>';\n    }).join('');\n  }\n  function renderBoard() {\n    var b = B(), hot = [], also = [];\n    if (sym) { var r = chipsFor(b, sym); hot = r.main.map(function (c) { return c.ref; }); also = r.also.map(function (c) { return c.ref; }); }\n    var groups = [];\n    b.chips.forEach(function (c) { var g = t(D.groups[c.g] || c.g); if (groups.indexOf(g) < 0) groups.push(g); });\n    $('dBoard').className = 'board' + (sym || chip ? ' dim' : '');\n    $('dBoard').innerHTML = '<div class=\"bt\">' + md(b.note) + '<\/div>' + groups.map(function (g) {\n      return '<div class=\"grp\"><b>' + esc(g.toUpperCase()) + '<\/b><div class=\"row\">' + b.chips.filter(function (c) { return t(D.groups[c.g] || c.g) === g; }).map(function (c) {\n        var cls = hot.indexOf(c.ref) >= 0 ? ' hot' : also.indexOf(c.ref) >= 0 ? ' also' : c.ref === chip ? ' sel' : '';\n        return '<button type=\"button\" class=\"ic' + cls + '\" data-chip=\"' + esc(c.ref) + '\"><span class=\"u\">' + esc(c.ref) + '<\/span><span class=\"p\">' + esc(t(c.part)) + '<\/span><span class=\"r\">' + esc(t(c.role)) + '<\/span><\/button>';\n      }).join('') + '<\/div><\/div>';\n    }).join('') + '<div class=\"legend\"><span><i style=\"background:#ffd23f\"><\/i>' + esc(t(UI.lgMain)) + '<\/span><span><i style=\"background:#c09bff\"><\/i>' + esc(t(UI.lgAlso)) + '<\/span><span><i style=\"background:#3fd8ff\"><\/i>' + esc(t(UI.lgSel)) + '<\/span><\/div>';\n  }\n  function chipBtn(c, cls) { return '<button type=\"button\" class=\"chip' + (cls || '') + '\" data-chip=\"' + esc(c.ref) + '\"><span class=\"u\">' + esc(c.ref) + '<\/span>' + esc(t(c.part)) + '<\/button>'; }\n  function testLinks(ids) {\n    return (ids || []).map(function (id) { var x = D.tests.concat(D.align, D.speed).filter(function (p) { return p.id === id; })[0]; return x ? '<button type=\"button\" class=\"chip\" data-test=\"' + id + '\">\ud83d\udd27 ' + esc(t(x.t)) + '<\/button>' : ''; }).join('');\n  }\n  function renderDetail() {\n    var b = B(), h = '';\n    if (chip) {\n      var c = b.chips.filter(function (x) { return x.ref === chip; })[0];\n      if (c) {\n        h = '<h4>' + esc(c.ref) + ' \u00b7 ' + esc(t(c.part)) + '<\/h4><p>' + md(c.role) + (c.d ? ' \u2014 ' + md(c.d) : '') + '<\/p>';\n        if (c.s && c.s.length) h += '<span class=\"k\">' + esc(t(UI.whenFails)) + '<\/span><ul>' + c.s.map(function (s) { var x = symById(s); return x ? '<li><a href=\"#d-chip\" class=\"lk\" data-pick=\"' + s + '\">' + esc(t(x.t)) + '<\/a><\/li>' : ''; }).join('') + '<\/ul>';\n        if (c.a && c.a.length) h += '<span class=\"k\">' + esc(t(UI.alsoIn)) + '<\/span><ul>' + c.a.map(function (s) { var x = symById(s); return x ? '<li><a href=\"#d-chip\" class=\"lk\" data-pick=\"' + s + '\">' + esc(t(x.t)) + '<\/a><\/li>' : ''; }).join('') + '<\/ul>';\n        if (c.sub) h += '<span class=\"k\">' + esc(t(UI.subst)) + '<\/span><p>' + md(c.sub) + '<\/p>';\n      }\n    } else if (sym) {\n      var s = symById(sym), r = chipsFor(b, sym);\n      h = '<h4>' + esc(t(s.t)) + '<\/h4>' + (s.d ? '<p>' + md(s.d) + '<\/p>' : '');\n      if (s.first) h += '<span class=\"k\">' + esc(t(UI.first)) + '<\/span><ul>' + t(s.first).map(function (x) { return '<li>' + md(x) + '<\/li>'; }).join('') + '<\/ul>';\n      if (r.main.length || r.also.length) h += '<span class=\"k\">' + esc(t(UI.suspects)) + ' (' + esc(t(b.label)) + ')<\/span><div class=\"cl\">' + r.main.map(function (c) { return chipBtn(c); }).join('') + r.also.map(function (c) { return chipBtn(c, ' also'); }).join('') + '<\/div>';\n      if (s.tests) h += '<span class=\"k\">' + esc(t(UI.howTest)) + '<\/span><div class=\"cl\">' + testLinks(s.tests) + '<\/div>';\n    } else h = '<p>' + md(UI.pickHint) + '<\/p>';\n    $('dDetail').innerHTML = h;\n  }\n  function pick(id, scroll) {\n    var b = B();\n    if (!symsOfBoard(b).some(function (s) { return s.id === id; })) {\n      var other = boardsOf(drive).filter(function (x) { return symsOfBoard(x).some(function (s) { return s.id === id; }); })[0];\n      if (other) board = other.id;\n    }\n    sym = id; chip = null; renderBoards(); writeUrl();\n    if (scroll) $('d-chip').scrollIntoView({ behavior: 'smooth', block: 'start' });\n  }\n\n  \/* ---------- procedure ---------- *\/\n  function block(x) {\n    if (typeof x === 'string' || Array.isArray(x)) return '<p>' + md(x) + '<\/p>';\n    if (x.h) return '<h5>' + esc(t(x.h)) + '<\/h5>';\n    if (x.ol) return '<ol>' + t(x.ol).map(function (l) { return '<li>' + md(l) + '<\/li>'; }).join('') + '<\/ol>';\n    if (x.ul) return '<ul>' + t(x.ul).map(function (l) { return '<li>' + md(l) + '<\/li>'; }).join('') + '<\/ul>';\n    if (x.code) return '<pre class=\"code\">' + esc(x.code) + '<\/pre>';\n    if (x.note) return '<div class=\"note\">' + md(x.note) + '<\/div>';\n    if (x.tbl) { var tb = t(x.tbl); return '<div class=\"tw\"><table class=\"tbl\"><tr>' + tb[0].map(function (c) { return '<th>' + md(c) + '<\/th>'; }).join('') + '<\/tr>' + tb.slice(1).map(function (r) { return '<tr>' + r.map(function (c) { return '<td>' + md(c) + '<\/td>'; }).join('') + '<\/tr>'; }).join('') + '<\/table><\/div>'; }\n    return '';\n  }\n  function renderAcc(el, list, col) {\n    var items = list.filter(forDrive), open = el.querySelector('.open');\n    var keep = open ? open.dataset.id : null;\n    el.innerHTML = items.map(function (p, i) {\n      return '<div data-id=\"' + p.id + '\" id=\"p-' + p.id + '\"' + (p.id === keep ? ' class=\"open\"' : '') + ' style=\"--acc:' + (p.c || col) + '\"><button type=\"button\" aria-expanded=\"' + (p.id === keep) + '\"><span class=\"n\">' + (i + 1 < 10 ? '0' : '') + (i + 1) + '<\/span><span>' + esc(t(p.t)) + '<small>' + esc(t(p.d)) + '<\/small><\/span><\/button><div class=\"bd\">' + p.body.filter(forDrive).map(block).join('') + '<\/div><\/div>';\n    }).join('');\n  }\n  function renderProcs() { renderAcc($('dTests'), D.tests, '#3fd8ff'); renderAcc($('dAlign'), D.align, '#ffd23f'); renderAcc($('dSpeed'), D.speed, '#5ad15f'); }\n  function openProc(id) {\n    var el = $('p-' + id); if (!el) return;\n    el.classList.add('open'); el.querySelector('button').setAttribute('aria-expanded', 'true');\n    el.scrollIntoView({ behavior: 'smooth', block: 'start' });\n  }\n\n  \/* ---------- schede: software, documenti, attrezzatura ---------- *\/\n  function host(u) { if (u.charAt(0) === '\/') return 'retrofixer.it'; try { return new URL(u).hostname.replace(\/^www\\.\/, ''); } catch (e) { return ''; } }\n  function cards(list) {\n    return list.filter(forDrive).map(function (d) {\n      var ext = d.u && d.u.charAt(0) !== '\/', tag = d.u ? 'a href=\"' + d.u + '\"' + (ext ? ' target=\"_blank\" rel=\"noopener\"' : '') : 'div';\n      return '<' + tag + ' class=\"card\" style=\"--acc:' + (d.c || '#7c70da') + '\"><div class=\"ct\">' + icon(d.i || 'book', d.c || '#7c70da') + '<div><h4>' + esc(t(d.t)) + '<\/h4>' + (d.tag ? '<span class=\"tag\">' + esc(t(d.tag)) + '<\/span>' : '') + '<\/div><\/div><p>' + md(d.d) + '<\/p>' + (d.u ? '<span class=\"dom\">' + esc(host(d.u)) + (ext ? ' \u2197' : ' \u2192') + '<\/span>' : '') + '<\/' + (d.u ? 'a' : 'div') + '>';\n    }).join('');\n  }\n  function renderCards() {\n    $('dSoft').innerHTML = cards(D.software);\n    $('dDocs').innerHTML = cards(D.docs);\n    $('dTools').innerHTML = cards(D.tools);\n    var rows = D.pcbs.filter(forDrive);\n    $('dPcb').innerHTML = rows.length ? '<table class=\"tbl\"><tr>' + t(UI.pcbHead).map(function (h) { return '<th>' + esc(h) + '<\/th>'; }).join('') + '<\/tr>' + rows.map(function (r) { return '<tr>' + r.cells.map(function (c) { return '<td>' + md(c) + '<\/td>'; }).join('') + '<\/tr>'; }).join('') + '<\/table>' : '';\n  }\n\n  \/* ---------- stroboscopio ---------- *\/\n  var cv = $('dCanvas'), cx = cv.getContext('2d'), hz = 50, last = 0;\n  \/\/ 300 giri: 72 tacche stanno ferme con 120 lampi\/s (60 Hz), 100 tacche con 100 lampi\/s (50 Hz); sull'altra frequenza scorrono\n  var RINGS = [{ n: 72, r1: 222, r2: 182, ph: 0 }, { n: 100, r1: 170, r2: 132, ph: 0 }];\n  $('dHz').innerHTML = [['50', '50 Hz'], ['60', '60 Hz'], ['led', t(UI.spLed)]].map(function (o, i) { return '<button type=\"button\" data-hz=\"' + o[0] + '\"' + (i ? '' : ' class=\"on\"') + '>' + esc(o[1]) + '<\/button>'; }).join('');\n  function drawStrobe(now) {\n    var rpm = +$('dRpm').value, dt = last ? Math.min(0.05, (now - last) \/ 1000) : 0; last = now;\n    var W = cv.width, R = W \/ 2;\n    cx.clearRect(0, 0, W, W);\n    cx.save(); cx.translate(R, R);\n    cx.fillStyle = '#d9d4c7'; cx.beginPath(); cx.arc(0, 0, R - 6, 0, 7); cx.fill();\n    var flashes = hz === 'led' ? 0 : 2 * hz, rev = rpm \/ 60; \/\/ la lampada a scarica fa 2 lampi per periodo di rete\n    RINGS.forEach(function (rg) {\n      var n = rg.n, s = 2 * Math.PI \/ n, vel;\n      \/\/ movimento apparente: a ogni lampo la tacca piu' vicina e' spostata di d (tra -mezza tacca e +mezza tacca)\n      if (flashes) { var d = (2 * Math.PI * rev \/ flashes) % s; if (d > s \/ 2) d -= s; vel = d * flashes; }\n      else vel = 2 * Math.PI * rev;\n      rg.ph = (rg.ph + vel * dt) % (2 * Math.PI);\n      var fast = Math.abs(vel) \/ s > 6, copies = fast ? 10 : 1; \/\/ oltre ~6 tacche al secondo l'occhio vede solo una striscia\n      cx.fillStyle = '#222'; cx.globalAlpha = fast ? 0.16 : 1;\n      for (var k = 0; k < copies; k++) {\n        var off = fast ? k * s \/ copies : 0;\n        for (var i = 0; i < n; i++) { cx.save(); cx.rotate(rg.ph + off + i * s); cx.fillRect(rg.r2, -2.5, rg.r1 - rg.r2, 5); cx.restore(); }\n      }\n      cx.globalAlpha = 1;\n    });\n    cx.fillStyle = '#9e978a'; cx.beginPath(); cx.arc(0, 0, R - 118, 0, 7); cx.fill();\n    cx.fillStyle = '#333'; cx.font = 'bold 19px Inter, sans-serif'; cx.textAlign = 'center';\n    t(UI.spCenter).split(' \u00b7 ').forEach(function (s, i) { cx.fillText(s, 0, i ? 22 : -6); });\n    cx.restore();\n    requestAnimationFrame(drawStrobe);\n  }\n  function strobeText() {\n    var rpm = +$('dRpm').value, d = rpm - 300;\n    $('dRead').textContent = rpm.toFixed(1) + ' RPM';\n    var txt;\n    if (hz === 'led') txt = UI.spTxtLed;\n    else if (Math.abs(d) < 0.6) txt = UI.spTxtOk;\n    else txt = d > 0 ? UI.spTxtFast : UI.spTxtSlow;\n    $('dStrobeTxt').innerHTML = md(txt).replace('{ring}', hz === 60 ? t(UI.spOuter) : t(UI.spInner));\n  }\n  $('dRpm').addEventListener('input', strobeText);\n  var ioStarted = false;\n  function startStrobe() { if (!ioStarted) { ioStarted = true; requestAnimationFrame(drawStrobe); } }\n  if ('IntersectionObserver' in window) new IntersectionObserver(function (e) { if (e[0].isIntersecting) startStrobe(); }).observe(cv); else startStrobe();\n\n  \/* ---------- ricerca ---------- *\/\n  function searchIndex() {\n    var out = [];\n    D.symptoms.filter(forDrive).forEach(function (s) { out.push({ k: 's', id: s.id, t: t(s.t), x: norm(t(s.t) + ' ' + t(s.d) + ' ' + (s.kw || '')) }); });\n    D.boards.filter(function (b) { return b.drive === drive; }).forEach(function (b) { b.chips.forEach(function (c) { out.push({ k: 'c', id: c.ref, b: b.id, t: c.ref + ' \u00b7 ' + t(c.part) + ' \u2014 ' + t(c.role) + ' (' + t(b.label) + ')', x: norm(c.ref + ' ' + t(c.part) + ' ' + t(c.role) + ' ' + t(c.d)) }); }); });\n    D.tests.concat(D.align, D.speed).filter(forDrive).forEach(function (p) { out.push({ k: 'g', id: p.id, t: t(p.t), x: norm(t(p.t) + ' ' + t(p.d) + ' ' + JSON.stringify(p.body)) }); });\n    return out;\n  }\n  function search(q) {\n    var words = norm(q).split(\/\\s+\/).filter(function (w) { return w.length > 1; });\n    if (!words.length) { $('dRes').innerHTML = ''; return; }\n    var res = searchIndex().map(function (r) {\n      var s = 0; for (var i = 0; i < words.length; i++) { if (r.x.indexOf(words[i]) < 0) return null; if (norm(r.t).indexOf(words[i]) >= 0) s += 3; s++; }\n      return { r: r, s: s + (r.k === 's' ? 1 : 0) };\n    }).filter(Boolean).sort(function (a, b) { return b.s - a.s; }).slice(0, 9);\n    var TP = { s: t(UI.tpSym), c: 'CHIP', g: t(UI.tpGuide) };\n    $('dRes').innerHTML = res.length ? res.map(function (x) {\n      var r = x.r, a = r.k === 's' ? 'data-pick=\"' + r.id + '\"' : r.k === 'c' ? 'data-board-chip=\"' + r.b + '|' + esc(r.id) + '\"' : 'data-test=\"' + r.id + '\"';\n      return '<button type=\"button\" class=\"res\" ' + a + '><span class=\"tp ' + r.k + '\">' + esc(TP[r.k]) + '<\/span>' + esc(r.t) + '<\/button>';\n    }).join('') : '<div class=\"res\" style=\"cursor:default\">' + esc(t(UI.notFound)) + '<\/div>';\n  }\n  var st;\n  $('dQ').addEventListener('input', function (e) { clearTimeout(st); st = setTimeout(function () { search(e.target.value); }, 120); });\n\n  \/* ---------- eventi ---------- *\/\n  function all() { renderMach(); renderLeds(); renderScreens(); renderBoards(); renderProcs(); renderCards(); $('dLcd').innerHTML = esc(cur().name) + '<small>' + D.boards.filter(function (b) { return b.drive === drive; }).reduce(function (n, b) { return n + b.chips.length; }, 0) + ' CHIP \u00b7 READY.<\/small>'; }\n  root.addEventListener('click', function (e) {\n    var x;\n    if ((x = e.target.closest('[data-drive]'))) { drive = x.dataset.drive; board = null; sym = null; chip = null; all(); writeUrl(); return; }\n    if ((x = e.target.closest('[data-board]'))) { board = x.dataset.board; chip = null; renderBoards(); return; }\n    if ((x = e.target.closest('[data-pick]'))) { e.preventDefault(); clearSearch(); if (sym === x.dataset.pick && x.classList.contains('sym')) { sym = null; renderBoards(); writeUrl(); return; } pick(x.dataset.pick, !x.classList.contains('sym')); return; }\n    if ((x = e.target.closest('[data-board-chip]'))) { var p = x.dataset.boardChip.split('|'); clearSearch(); board = p[0]; sym = null; chip = p[1]; renderBoards(); $('d-chip').scrollIntoView({ behavior: 'smooth', block: 'start' }); return; }\n    if ((x = e.target.closest('[data-chip]'))) { chip = chip === x.dataset.chip && x.classList.contains('ic') ? null : x.dataset.chip; if (!x.classList.contains('ic')) sym = null; renderSyms(); renderBoard(); renderDetail(); if (!x.classList.contains('ic')) $('dBoard').scrollIntoView({ behavior: 'smooth', block: 'nearest' }); return; }\n    if ((x = e.target.closest('[data-test]'))) { clearSearch(); openProc(x.dataset.test); return; }\n    if ((x = e.target.closest('[data-hz]'))) { hz = x.dataset.hz === 'led' ? 'led' : +x.dataset.hz; [].forEach.call($('dHz').children, function (b) { b.classList.toggle('on', b === x); }); strobeText(); return; }\n    if ((x = e.target.closest('.acc>div>button'))) { var d = x.parentNode, o = !d.classList.contains('open'); d.classList.toggle('open', o); x.setAttribute('aria-expanded', o); return; }\n  });\n  function clearSearch() { $('dRes').innerHTML = ''; $('dQ').value = ''; }\n\n  all(); strobeText();\n  var s0 = saved.get('sintomo');\n  if (s0 && symById(s0)) { pick(s0, false); setTimeout(function () { $('d-chip').scrollIntoView({ block: 'start' }); }, 300); }\n  root._state = function () { return { drive: drive, board: board, sym: sym, chip: chip }; };\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>&gt;<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-11551","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/retrofixer.it\/en\/wp-json\/wp\/v2\/pages\/11551","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/retrofixer.it\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/retrofixer.it\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/retrofixer.it\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/retrofixer.it\/en\/wp-json\/wp\/v2\/comments?post=11551"}],"version-history":[{"count":3,"href":"https:\/\/retrofixer.it\/en\/wp-json\/wp\/v2\/pages\/11551\/revisions"}],"predecessor-version":[{"id":11554,"href":"https:\/\/retrofixer.it\/en\/wp-json\/wp\/v2\/pages\/11551\/revisions\/11554"}],"wp:attachment":[{"href":"https:\/\/retrofixer.it\/en\/wp-json\/wp\/v2\/media?parent=11551"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/retrofixer.it\/en\/wp-json\/wp\/v2\/categories?post=11551"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/retrofixer.it\/en\/wp-json\/wp\/v2\/tags?post=11551"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}