{"id":11519,"date":"2026-11-03T15:17:33","date_gmt":"2026-11-03T14:17:33","guid":{"rendered":"https:\/\/retrofixer.it\/?page_id=11519"},"modified":"2026-11-03T20:22:51","modified_gmt":"2026-11-03T19:22:51","slug":"keyboard-explorer","status":"publish","type":"page","link":"https:\/\/retrofixer.it\/en\/keyboard-explorer\/","title":{"rendered":"Keyboard Explorer"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"11519\" class=\"elementor elementor-11519\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a1b2c3d e-con-full e-flex e-con e-parent\" data-id=\"a1b2c3d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e4f5a6b elementor-widget elementor-widget-html\" data-id=\"e4f5a6b\" 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\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\r\n<!--\r\n  RETRO FIXER - Keyboard Explorer (matrici delle tastiere)\r\n  Da incollare in un widget \"HTML\" di Elementor. Tutto lo stile e' racchiuso nella classe .rfkb.\r\n  I dati delle tastiere sono in DATA, generati da tastiere\/build.py a partire da tastiere\/dati\/*.json.\r\n  I testi in inglese sono nel dizionario T e nei campi *_en dei dati: su \/en\/ la pagina si traduce da sola.\r\n-->\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\r\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\">\r\n\r\n<style>\r\n.rfkb{\r\n  --bg:#0f0c24; --bg2:#171338; --panel:#1d1846; --line:#342c74; --text:#eceaff; --muted:#aaa5d8;\r\n  --c64l:#7c70da; --mag:#e0398a; --yel:#ffd23f; --grn:#5ad15f; --cya:#3fd8ff; --red:#f94144;\r\n  font-family:'Inter',system-ui,-apple-system,Segoe UI,Roboto,sans-serif; color:var(--text); background:var(--bg); line-height:1.5;\r\n  padding:36px 0 20px;\r\n}\r\n.rfkb *,.rfkb *::before,.rfkb *::after{box-sizing:border-box}\r\n.rfkb h2,.rfkb h3,.rfkb p{margin:0;padding:0}\r\n.rfkb h2,.rfkb h3{font-family:'Inter',system-ui,sans-serif!important;letter-spacing:0;text-transform:none;font-weight:700}\r\n.rfkb a{color:var(--cya)}\r\n.rfkb button{font:inherit;color:inherit;cursor:pointer}\r\n.rfkb [hidden]{display:none!important}\r\n\/* il contatore visite sotto la pagina e' trasparente: senza sfondo resta una striscia tra il widget e il footer *\/\r\n.post-views.post-11519{background:#0f0c24;color:#aaa5d8;margin:0;padding:0 16px 8px;font-size:13px}\r\n.rfkb .wrap{max-width:1400px;margin:0 auto;padding:0 16px}\r\n.rfkb .head h2{font-family:'Press Start 2P',monospace!important;font-size:clamp(18px,3vw,28px);line-height:1.4;color:var(--yel);margin-bottom:12px}\r\n.rfkb .head p{color:var(--muted);max-width:860px;font-size:16px}\r\n.rfkb .bar{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:flex-end;margin:22px 0 12px}\r\n.rfkb .grp{display:flex;flex-direction:column;gap:4px}\r\n.rfkb .grp>span{font-family:'VT323',monospace;font-size:15px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}\r\n.rfkb .seg{display:inline-flex;flex-wrap:wrap;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--bg2)}\r\n.rfkb .seg button{background:none;border:0;padding:8px 12px;font-size:14px;color:var(--muted);border-right:1px solid var(--line);white-space:nowrap}\r\n.rfkb .seg button:last-child{border-right:0}\r\n.rfkb .seg button[aria-pressed=true]{background:#342c74;color:#fff}\r\n.rfkb .seg button:hover{color:#fff}\r\n.rfkb .tools{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:4px 0 10px}\r\n.rfkb .btn{background:var(--bg2);border:1px solid var(--line);border-radius:8px;padding:7px 12px;font-size:14px;color:var(--muted)}\r\n.rfkb .btn:hover{color:#fff;border-color:#7c70da}\r\n.rfkb .hint{color:var(--muted);font-size:14px}\r\n.rfkb .kbd{background:#07060f;border:1px solid var(--line);border-radius:10px;padding:14px;overflow-x:auto}\r\n.rfkb .kbd svg{display:block;margin:0 auto;width:100%;min-width:700px;height:auto;user-select:none;-webkit-user-select:none}\r\n.rfkb .kbd .mname{font-family:'VT323',monospace;font-size:19px;color:var(--yel);margin:-4px 0 8px}\r\n.rfkb .k{cursor:pointer;outline:none}\r\n.rfkb .k rect{fill:var(--cap);stroke:rgba(0,0,0,.55);stroke-width:2}\r\n.rfkb .k.fk rect{fill:var(--capf)}\r\n.rfkb .k text{fill:var(--capt);font-family:'Inter',system-ui,sans-serif;font-weight:600;pointer-events:none;text-anchor:middle}\r\n.rfkb .k.fk text{fill:var(--capft)}\r\n.rfkb .k text.t2{font-weight:500;opacity:.8;text-anchor:start}\r\n.rfkb .k.sp rect{stroke-dasharray:6 4;stroke:#d8d0ff}\r\n.rfkb .k:hover rect,.rfkb .k:focus rect{stroke:#fff;stroke-width:3}\r\n.rfkb .k.ca rect{fill:#145a6e;stroke:var(--cya);stroke-width:3}\r\n.rfkb .k.cb rect{fill:#6e1a4a;stroke:var(--mag);stroke-width:3}\r\n.rfkb .k.ca.cb rect{fill:#3a2a78}\r\n.rfkb .k.ca text,.rfkb .k.cb text{fill:#fff}\r\n.rfkb .k.on rect{fill:var(--yel);stroke:#fff;stroke-width:3}\r\n.rfkb .k.on text{fill:#14112e}\r\n.rfkb .k.dg rect{fill:var(--red);stroke:#fff;stroke-width:3}\r\n.rfkb .k.dg text{fill:#fff}\r\n.rfkb .k.chk rect{stroke:var(--yel);stroke-width:4;stroke-dasharray:7 4}\r\n.rfkb .k.dim{opacity:.35}\r\n.rfkb .main{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:14px;margin-top:14px}\r\n.rfkb .box{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px;font-size:14px;min-width:0}\r\n.rfkb .lbl{font-family:'VT323',monospace;font-size:17px;color:var(--yel);text-transform:uppercase;margin:0 0 8px;letter-spacing:.5px}\r\n.rfkb .lbl.mt{margin-top:16px}\r\n.rfkb .conn{margin-bottom:14px}\r\n.rfkb .conn .cn{color:#fff;font-weight:600;margin-bottom:6px}\r\n.rfkb .pins{display:flex;flex-wrap:wrap;gap:4px}\r\n.rfkb .pin{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:46px;padding:4px 4px 5px;border:1px solid var(--line);border-radius:6px;background:var(--bg2);font-size:12px;line-height:1.2;color:var(--muted)}\r\n.rfkb .pin b{font-family:'VT323',monospace;font-size:16px;font-weight:400;color:#fff}\r\n.rfkb .pin.col{border-top:3px solid var(--cya)}\r\n.rfkb .pin.row{border-top:3px solid var(--mag)}\r\n.rfkb .pin.ext{border-top:3px solid var(--grn)}\r\n.rfkb .pin.pw{cursor:default;opacity:.7}\r\n.rfkb button.pin:hover{border-color:#fff;color:#fff}\r\n.rfkb .pin.ha{background:#145a6e;border-color:var(--cya);color:#fff}\r\n.rfkb .pin.hb{background:#6e1a4a;border-color:var(--mag);color:#fff}\r\n.rfkb .pin.hc{background:#5a4a10;border-color:var(--yel);color:#fff}\r\n.rfkb .info{min-height:200px}\r\n.rfkb .info h3{font-size:19px;color:#fff;margin-bottom:4px;word-break:break-word}\r\n.rfkb .info .sub{color:var(--muted);margin-bottom:10px}\r\n.rfkb .info ul{margin:4px 0 0;padding-left:18px;color:var(--muted)}\r\n.rfkb .info li{margin:3px 0}\r\n.rfkb .ln{border:1px solid var(--line);border-left:4px solid var(--line);border-radius:6px;padding:8px 10px;margin:8px 0;background:var(--bg2)}\r\n.rfkb .ln.a{border-left-color:var(--cya)}\r\n.rfkb .ln.b{border-left-color:var(--mag)}\r\n.rfkb .ln.c{border-left-color:var(--yel)}\r\n.rfkb .ln .h{color:#fff;font-weight:600}\r\n.rfkb .ln .d{color:var(--muted);margin-top:2px}\r\n.rfkb .ln .ks{margin-top:6px}\r\n.rfkb .chip{display:inline-block;font-family:'VT323',monospace;font-size:16px;line-height:1.2;border:1px solid var(--line);border-radius:4px;padding:0 6px;margin:0 4px 4px 0;color:var(--text);background:none}\r\n.rfkb button.chip:hover{border-color:#fff}\r\n.rfkb .chip.x{border-color:var(--red);color:#ffd0d0}\r\n.rfkb .chip.q{border-color:var(--yel);color:var(--yel)}\r\n.rfkb .note{background:rgba(63,216,255,.08);border:1px solid rgba(63,216,255,.35);border-radius:8px;padding:9px 11px;margin:10px 0;color:#cdeffd}\r\n.rfkb .warn{background:rgba(249,65,68,.12);border:1px solid rgba(249,65,68,.55);border-radius:8px;padding:9px 11px;margin:10px 0;color:#ffd0d0}\r\n.rfkb .ok{background:rgba(90,209,95,.1);border:1px solid rgba(90,209,95,.5);border-radius:8px;padding:9px 11px;margin:10px 0;color:#d6f5d7}\r\n.rfkb details{margin-top:14px}\r\n.rfkb summary{cursor:pointer;font-family:'VT323',monospace;font-size:19px;color:var(--yel);text-transform:uppercase;letter-spacing:.5px}\r\n.rfkb .mx{overflow-x:auto;margin-top:10px}\r\n.rfkb .mx table{border-collapse:collapse;font-size:13px;min-width:100%}\r\n.rfkb .mx th,.rfkb .mx td{border:1px solid var(--line);padding:4px 6px;text-align:center;white-space:nowrap}\r\n.rfkb .mx th{background:var(--bg2);font-family:'VT323',monospace;font-size:16px;font-weight:400;color:#fff;cursor:pointer}\r\n.rfkb .mx th small{display:block;font-family:'Inter',sans-serif;font-size:10.5px;color:var(--muted)}\r\n.rfkb .mx th.c{border-top:3px solid var(--cya)}\r\n.rfkb .mx th.r{border-left:3px solid var(--mag)}\r\n.rfkb .mx td{cursor:pointer;color:var(--text)}\r\n.rfkb .mx td:empty{cursor:default}\r\n.rfkb .mx td:hover:not(:empty){background:#342c74}\r\n.rfkb .mx .ha{background:#145a6e}\r\n.rfkb .mx .hb{background:#6e1a4a}\r\n.rfkb .mx td.on{background:var(--yel);color:#14112e;font-weight:700}\r\n.rfkb .mx td.dg{background:var(--red);color:#fff}\r\n.rfkb .about{color:var(--muted)}\r\n.rfkb .about p{margin:6px 0}\r\n.rfkb .about ul{margin:6px 0;padding-left:18px}\r\n.rfkb .credits{margin-top:16px;color:var(--muted);font-size:13.5px;max-width:980px}\r\n@media(max-width:980px){\r\n  .rfkb .main{grid-template-columns:1fr}\r\n}\r\n@media(max-width:600px){\r\n  .rfkb .seg button{padding:7px 9px;font-size:13px}\r\n  .rfkb .head p{font-size:15px}\r\n  .rfkb .kbd{padding:10px}\r\n}\r\n<\/style>\r\n\r\n<div class=\"rfkb\" data-no-translation>\r\n <div class=\"wrap\">\r\n  <div class=\"head\">\r\n   <h2 data-t=\"title\">Keyboard Explorer<\/h2>\r\n   <p data-t=\"intro\">Le tastiere dei computer Commodore, Amiga, Sinclair, Atari, MSX, Amstrad, Oric, Philips, Texas Instruments e VTech con la loro matrice. Clicca un tasto: vedi le due linee che chiude, su quali pin del connettore arrivano e a quale chip vanno sulla scheda madre. Con \u00abCerca il guasto\u00bb selezioni i tasti che non funzionano e la pagina ti dice quale linea hanno in comune.<\/p>\r\n  <\/div>\r\n  <div class=\"bar\" id=\"rfkMachines\"><\/div>\r\n  <div class=\"tools\">\r\n   <div class=\"seg\" id=\"rfkMode\" role=\"group\">\r\n    <button data-m=\"key\" aria-pressed=\"true\" data-t=\"mKey\">Tasto per tasto<\/button>\r\n    <button data-m=\"diag\" aria-pressed=\"false\" data-t=\"mDiag\">Cerca il guasto<\/button>\r\n   <\/div>\r\n   <button class=\"btn\" id=\"rfkClear\" data-t=\"clear\">Pulisci<\/button>\r\n   <span class=\"hint\" id=\"rfkHint\"><\/span>\r\n  <\/div>\r\n  <div class=\"kbd\" id=\"rfkKbd\"><\/div>\r\n  <div class=\"main\">\r\n   <div class=\"box\">\r\n    <div class=\"lbl\" data-t=\"conn\">Connettore della tastiera<\/div>\r\n    <div id=\"rfkConn\"><\/div>\r\n    <details id=\"rfkMxBox\">\r\n     <summary data-t=\"matrix\">Tabella della matrice<\/summary>\r\n     <div class=\"mx\" id=\"rfkMx\"><\/div>\r\n    <\/details>\r\n    <details id=\"rfkAbBox\">\r\n     <summary data-t=\"about\">Come funziona la scansione e note per la riparazione<\/summary>\r\n     <div class=\"about\" id=\"rfkAbout\"><\/div>\r\n    <\/details>\r\n   <\/div>\r\n   <aside class=\"box info\" id=\"rfkInfo\" aria-live=\"polite\"><\/aside>\r\n  <\/div>\r\n  <p class=\"credits\" data-t=\"credits\">Matrici e piedinature ricavate dagli schemi e dai manuali tecnici originali, confrontati con il codice degli emulatori MAME e VICE; per C64, VIC-20 e C128 i percorsi sulla scheda vengono dalle repliche KiCad usate nel PCB Explorer. Le fonti di ogni macchina sono elencate nelle note. Le sigle dei componenti cambiano tra una revisione e l'altra della scheda: prima di dissaldare, controlla sempre sullo schema della tua scheda.<\/p>\r\n <\/div>\r\n<\/div>\r\n\r\n<script>\r\n(function(){\r\n'use strict';\r\nvar EN = \/^en\/i.test(document.documentElement.lang || '');\r\nvar LG = EN ? 'en' : 'it';\r\nvar DATA = \/*KBDATA*\/{\"a1200\":{\"id\":\"a1200\",\"name\":\"Commodore Amiga 1200 (tastiera ITA)\",\"sources\":[{\"t\":\"MAME src\/devices\/bus\/amiga\/keyboard\/matrix.cpp (matrice logica ROW0-14 x bit, varianti IT\/US)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/devices\/bus\/amiga\/keyboard\/matrix.cpp\"},{\"t\":\"MAME src\/devices\/bus\/amiga\/keyboard\/a1200.cpp (68HC05: righe PA0-7\/PC0-6, colonne PB2-PB7, modificatori PD, LED PC7, KB_RESET su TCMP)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/devices\/bus\/amiga\/keyboard\/a1200.cpp\"},{\"t\":\"A1200 Schematics 1992 (rev 1 -> 1D): U13, CN13 \\\"Keyboard tail\\\", U7 8520\",\"u\":\"https:\/\/archive.org\/details\/A1200_Schematics_1992_Commodore\"},{\"t\":\"amiga-stuff.com, piedinatura 68HC05 U13 A1200 e collegamenti a CN13\",\"u\":\"https:\/\/amiga-stuff.com\/hardware\/68hc05.html\"},{\"t\":\"A. Eberbach, A1200KB (netlist della membrana A1200 tracciata, 31 vie; geometria tasti)\",\"u\":\"https:\/\/github.com\/aeberbach\/A1200KB\"},{\"t\":\"QMK keyboards\/converter\/a1200 (8bits4ever), adattatore USB per membrana A1200\",\"u\":\"https:\/\/github.com\/qmk\/qmk_firmware\/tree\/master\/keyboards\/converter\/a1200\"},{\"t\":\"Amiga Hardware Reference Manual, 3rd ed., cap. Keyboard (protocollo KCLK\/KDAT, codici, Caps Lock)\",\"u\":\"https:\/\/archive.org\/details\/amiga-hardware-reference-manual-3rd-edition\"}],\"scan_it\":\"La tastiera A1200 \u00e8 una membrana passiva su cavo piatto (FFC) a 31 vie, passo 1,25 mm, che entra nel connettore CN13 della scheda madre. Il controller \u00e8 U13 sulla scheda madre: MC68HC05C4AFN (391508-01) o MC68HC05C12FN (391508-02), PLCC-44, quarzo 3 MHz Y621. U13 pilota 15 righe su PA0-PA7 e PC0-PC6 (CN13 pin 15-29) e legge 6 colonne su PB2-PB7 (CN13 pin 7, 5, 1, 2, 3, 4; pull-up R624). I 7 modificatori hanno linee proprie su PD0-PD5 e PD7 (pull-up R621) verso GND (CN13-30). U13 trasmette i codici con PB1 = _KB_CLOCK (pin 14) e PB0 = _KB_DATA (pin 13, anche su TCAP pin 41 per l'handshake) al CIA 8520 U7 (CIA-A, PLCC): CNT pin 44 e SP pin 43, pull-up R511A\/R511B 10k. U13 \u00e8 resettata dal circuito \\\"Power OK\\\" (U49, _PWR_BAD) sul pin 1.\",\"scan_en\":\"The A1200 keyboard is a passive membrane on a 31-way, 1.25 mm pitch flat cable (FFC) that plugs into motherboard connector CN13. The controller is U13 on the motherboard: MC68HC05C4AFN (391508-01) or MC68HC05C12FN (391508-02), PLCC-44, 3 MHz crystal Y621. U13 drives 15 rows on PA0-PA7 and PC0-PC6 (CN13 pins 15-29) and reads 6 columns on PB2-PB7 (CN13 pins 7, 5, 1, 2, 3, 4; pull-ups R624). The 7 modifiers have their own lines on PD0-PD5 and PD7 (pull-ups R621) to GND (CN13-30). U13 sends the key codes with PB1 = _KB_CLOCK (pin 14) and PB0 = _KB_DATA (pin 13, also on TCAP pin 41 for the handshake) to 8520 CIA U7 (CIA-A, PLCC): CNT pin 44 and SP pin 43, pull-ups R511A\/R511B 10k. U13 is reset by the \\\"Power OK\\\" circuit (U49, _PWR_BAD) on pin 1.\",\"lines\":[{\"id\":\"PA0\",\"group\":\"col\",\"name\":\"ROW0\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"12\",\"conn_pin\":\"15\"},{\"id\":\"PA1\",\"group\":\"col\",\"name\":\"ROW1\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"11\",\"conn_pin\":\"16\"},{\"id\":\"PA2\",\"group\":\"col\",\"name\":\"ROW2\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"10\",\"conn_pin\":\"17\"},{\"id\":\"PA3\",\"group\":\"col\",\"name\":\"ROW3\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"9\",\"conn_pin\":\"18\"},{\"id\":\"PA4\",\"group\":\"col\",\"name\":\"ROW4\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"8\",\"conn_pin\":\"19\"},{\"id\":\"PA5\",\"group\":\"col\",\"name\":\"ROW5\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"7\",\"conn_pin\":\"20\"},{\"id\":\"PA6\",\"group\":\"col\",\"name\":\"ROW6\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"6\",\"conn_pin\":\"21\"},{\"id\":\"PA7\",\"group\":\"col\",\"name\":\"ROW7\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"5\",\"conn_pin\":\"22\"},{\"id\":\"PC0\",\"group\":\"col\",\"name\":\"ROW8\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"31\",\"conn_pin\":\"23\"},{\"id\":\"PC1\",\"group\":\"col\",\"name\":\"ROW9\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"30\",\"conn_pin\":\"24\"},{\"id\":\"PC2\",\"group\":\"col\",\"name\":\"ROW10\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"29\",\"conn_pin\":\"25\"},{\"id\":\"PC3\",\"group\":\"col\",\"name\":\"ROW11\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"28\",\"conn_pin\":\"26\"},{\"id\":\"PC4\",\"group\":\"col\",\"name\":\"ROW12\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"27\",\"conn_pin\":\"27\"},{\"id\":\"PC5\",\"group\":\"col\",\"name\":\"ROW13\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"26\",\"conn_pin\":\"28\"},{\"id\":\"PC6\",\"group\":\"col\",\"name\":\"ROW14\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"25\",\"conn_pin\":\"29\"},{\"id\":\"PB2\",\"group\":\"row\",\"name\":\"COL bit 2\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"15\",\"conn_pin\":\"7\",\"also_it\":\"pull-up R624 4,7k x9\",\"also_en\":\"pull-up R624 4,7k x9\"},{\"id\":\"PB3\",\"group\":\"row\",\"name\":\"COL bit 3\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"16\",\"conn_pin\":\"5\",\"also_it\":\"pull-up R624 4,7k x9\",\"also_en\":\"pull-up R624 4,7k x9\"},{\"id\":\"PB4\",\"group\":\"row\",\"name\":\"COL bit 4\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"17\",\"conn_pin\":\"1\",\"also_it\":\"pull-up R624 4,7k x9\",\"also_en\":\"pull-up R624 4,7k x9\"},{\"id\":\"PB5\",\"group\":\"row\",\"name\":\"COL bit 5\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"19\",\"conn_pin\":\"2\",\"also_it\":\"pull-up R624 4,7k x9\",\"also_en\":\"pull-up R624 4,7k x9\"},{\"id\":\"PB6\",\"group\":\"row\",\"name\":\"COL bit 6\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"20\",\"conn_pin\":\"3\",\"also_it\":\"pull-up R624 4,7k x9\",\"also_en\":\"pull-up R624 4,7k x9\"},{\"id\":\"PB7\",\"group\":\"row\",\"name\":\"COL bit 7\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"21\",\"conn_pin\":\"4\",\"also_it\":\"pull-up R624 4,7k x9\",\"also_en\":\"pull-up R624 4,7k x9\"},{\"id\":\"PD0\",\"group\":\"extra\",\"name\":\"Right Shift\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"32\",\"conn_pin\":\"6\",\"name_it\":\"Shift destro\",\"also_it\":\"pull-up R621 4,7k; tasto verso GND (CN13-30)\",\"also_en\":\"key to GND (CN13-30)\"},{\"id\":\"PD1\",\"group\":\"extra\",\"name\":\"Right Alt\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"33\",\"conn_pin\":\"8\",\"name_it\":\"Alt destro\",\"also_it\":\"pull-up R621 4,7k; tasto verso GND (CN13-30)\",\"also_en\":\"key to GND (CN13-30)\"},{\"id\":\"PD2\",\"group\":\"extra\",\"name\":\"Right Amiga\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"34\",\"conn_pin\":\"10\",\"name_it\":\"Amiga destro\",\"also_it\":\"pull-up R621 4,7k; tasto verso GND (CN13-30)\",\"also_en\":\"key to GND (CN13-30)\"},{\"id\":\"PD3\",\"group\":\"extra\",\"name\":\"Ctrl\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"35\",\"conn_pin\":\"11\",\"also_it\":\"pull-up R621 4,7k; tasto verso GND (CN13-30)\",\"also_en\":\"key to GND (CN13-30)\"},{\"id\":\"PD4\",\"group\":\"extra\",\"name\":\"Left Shift\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"36\",\"conn_pin\":\"12\",\"name_it\":\"Shift sinistro\",\"also_it\":\"pull-up R621 4,7k; tasto verso GND (CN13-30)\",\"also_en\":\"key to GND (CN13-30)\"},{\"id\":\"PD5\",\"group\":\"extra\",\"name\":\"Left Alt\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"37\",\"conn_pin\":\"13\",\"name_it\":\"Alt sinistro\",\"also_it\":\"pull-up R621 4,7k; tasto verso GND (CN13-30)\",\"also_en\":\"key to GND (CN13-30)\"},{\"id\":\"PD7\",\"group\":\"extra\",\"name\":\"Left Amiga\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"39\",\"conn_pin\":\"14\",\"name_it\":\"Amiga sinistro\",\"also_it\":\"pull-up R621 4,7k; tasto verso GND (CN13-30)\",\"also_en\":\"key to GND (CN13-30)\"},{\"id\":\"PC7\",\"group\":\"extra\",\"name\":\"CAPS LED\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"24\",\"conn_pin\":\"31\",\"also_it\":\"tramite R622 100 \u03a9; LED acceso con PC7 basso\",\"also_en\":\"through R622 100 \u03a9; LED on when PC7 is low\"},{\"id\":\"PB0\",\"group\":\"extra\",\"name\":\"_KB_DATA\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"13\",\"conn_pin\":\"\",\"also_it\":\"anche su TCAP pin 41; -> 8520 U7 (CIA-A) SP pin 43, pull-up R511B 10k\",\"also_en\":\"also on TCAP pin 41; -> 8520 U7 SP pin 43\"},{\"id\":\"PB1\",\"group\":\"extra\",\"name\":\"_KB_CLOCK\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"14\",\"conn_pin\":\"\",\"also_it\":\"-> 8520 U7 (CIA-A) CNT pin 44, pull-up R511A 10k\",\"also_en\":\"-> 8520 U7 (CIA-A) CNT pin 44, pull-up R511A 10k\"},{\"id\":\"TCMP\",\"group\":\"extra\",\"name\":\"_KB_RESET\",\"chip\":\"U13\",\"chip_part\":\"MC68HC05C4AFN 391508-01 \/ MC68HC05C12FN 391508-02 (PLCC-44)\",\"chip_pin\":\"38\",\"conn_pin\":\"\",\"also_it\":\"uscita di reset (Ctrl-Amiga-Amiga) verso la logica di reset; R626\/R623; punto di prova TP1 pin 9\",\"also_en\":\"reset output (Ctrl-Amiga-Amiga) to the reset logic; R626\/R623; test point TP1 pin 9\"}],\"connector\":{\"ref\":\"CN13\",\"it\":\"Connettore membrana tastiera 31 vie \\\"Keyboard tail\\\" (FFC passo 1,25 mm)\",\"en\":\"31-way keyboard membrane connector \\\"Keyboard tail\\\" (1.25 mm pitch FFC)\",\"pins\":[{\"n\":\"1\",\"sig\":\"PB4\",\"note_it\":\"COL bit 4\",\"note_en\":\"COL bit 4\"},{\"n\":\"2\",\"sig\":\"PB5\",\"note_it\":\"COL bit 5\",\"note_en\":\"COL bit 5\"},{\"n\":\"3\",\"sig\":\"PB6\",\"note_it\":\"COL bit 6\",\"note_en\":\"COL bit 6\"},{\"n\":\"4\",\"sig\":\"PB7\",\"note_it\":\"COL bit 7\",\"note_en\":\"COL bit 7\"},{\"n\":\"5\",\"sig\":\"PB3\",\"note_it\":\"COL bit 3\",\"note_en\":\"COL bit 3\"},{\"n\":\"6\",\"sig\":\"PD0\",\"note_it\":\"Shift destro\",\"note_en\":\"Right Shift\"},{\"n\":\"7\",\"sig\":\"PB2\",\"note_it\":\"COL bit 2\",\"note_en\":\"COL bit 2\"},{\"n\":\"8\",\"sig\":\"PD1\",\"note_it\":\"Alt destro\",\"note_en\":\"Right Alt\"},{\"n\":\"9\",\"sig\":\"+5V\",\"note_it\":\"VCC, anodo LED Caps Lock\",\"note_en\":\"VCC, Caps Lock LED anode\"},{\"n\":\"10\",\"sig\":\"PD2\",\"note_it\":\"Amiga destro\",\"note_en\":\"Right Amiga\"},{\"n\":\"11\",\"sig\":\"PD3\",\"note_it\":\"Ctrl\",\"note_en\":\"Ctrl\"},{\"n\":\"12\",\"sig\":\"PD4\",\"note_it\":\"Shift sinistro\",\"note_en\":\"Left Shift\"},{\"n\":\"13\",\"sig\":\"PD5\",\"note_it\":\"Alt sinistro\",\"note_en\":\"Left Alt\"},{\"n\":\"14\",\"sig\":\"PD7\",\"note_it\":\"Amiga sinistro\",\"note_en\":\"Left Amiga\"},{\"n\":\"15\",\"sig\":\"PA0\",\"note_it\":\"ROW0\",\"note_en\":\"ROW0\"},{\"n\":\"16\",\"sig\":\"PA1\",\"note_it\":\"ROW1\",\"note_en\":\"ROW1\"},{\"n\":\"17\",\"sig\":\"PA2\",\"note_it\":\"ROW2\",\"note_en\":\"ROW2\"},{\"n\":\"18\",\"sig\":\"PA3\",\"note_it\":\"ROW3\",\"note_en\":\"ROW3\"},{\"n\":\"19\",\"sig\":\"PA4\",\"note_it\":\"ROW4\",\"note_en\":\"ROW4\"},{\"n\":\"20\",\"sig\":\"PA5\",\"note_it\":\"ROW5\",\"note_en\":\"ROW5\"},{\"n\":\"21\",\"sig\":\"PA6\",\"note_it\":\"ROW6\",\"note_en\":\"ROW6\"},{\"n\":\"22\",\"sig\":\"PA7\",\"note_it\":\"ROW7\",\"note_en\":\"ROW7\"},{\"n\":\"23\",\"sig\":\"PC0\",\"note_it\":\"ROW8\",\"note_en\":\"ROW8\"},{\"n\":\"24\",\"sig\":\"PC1\",\"note_it\":\"ROW9\",\"note_en\":\"ROW9\"},{\"n\":\"25\",\"sig\":\"PC2\",\"note_it\":\"ROW10\",\"note_en\":\"ROW10\"},{\"n\":\"26\",\"sig\":\"PC3\",\"note_it\":\"ROW11\",\"note_en\":\"ROW11\"},{\"n\":\"27\",\"sig\":\"PC4\",\"note_it\":\"ROW12\",\"note_en\":\"ROW12\"},{\"n\":\"28\",\"sig\":\"PC5\",\"note_it\":\"ROW13\",\"note_en\":\"ROW13\"},{\"n\":\"29\",\"sig\":\"PC6\",\"note_it\":\"ROW14\",\"note_en\":\"ROW14\"},{\"n\":\"30\",\"sig\":\"GND\",\"note_it\":\"comune dei modificatori\",\"note_en\":\"modifier common\"},{\"n\":\"31\",\"sig\":\"PC7\",\"note_it\":\"catodo LED Caps Lock via R622 100 \u03a9\",\"note_en\":\"Caps Lock LED cathode via R622 100 \u03a9\"}]},\"layout\":[{\"id\":\"esc\",\"t\":\"Esc\",\"x\":0.0,\"y\":0.0,\"w\":1.0,\"h\":1.0},{\"id\":\"f1\",\"t\":\"F1\",\"x\":1.5,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"f2\",\"t\":\"F2\",\"x\":2.75,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"f3\",\"t\":\"F3\",\"x\":4.0,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"f4\",\"t\":\"F4\",\"x\":5.25,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"f5\",\"t\":\"F5\",\"x\":6.5,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"f6\",\"t\":\"F6\",\"x\":8.25,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"f7\",\"t\":\"F7\",\"x\":9.5,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"f8\",\"t\":\"F8\",\"x\":10.75,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"f9\",\"t\":\"F9\",\"x\":12.0,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"f10\",\"t\":\"F10\",\"x\":13.25,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"grave\",\"t\":\"`\",\"t2\":\"~\",\"x\":0.0,\"y\":1.5,\"w\":1.5,\"h\":1.0},{\"id\":\"n1\",\"t\":\"1\",\"t2\":\"!\",\"x\":1.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"n2\",\"t\":\"2\",\"t2\":\"\\\"\",\"x\":2.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"n3\",\"t\":\"3\",\"t2\":\"\u00a3\",\"x\":3.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"n4\",\"t\":\"4\",\"t2\":\"$\",\"x\":4.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"n5\",\"t\":\"5\",\"t2\":\"%\",\"x\":5.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"n6\",\"t\":\"6\",\"t2\":\"&\",\"x\":6.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"n7\",\"t\":\"7\",\"t2\":\"\/\",\"x\":7.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"n8\",\"t\":\"8\",\"t2\":\"(\",\"x\":8.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"n9\",\"t\":\"9\",\"t2\":\")\",\"x\":9.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"n0\",\"t\":\"0\",\"t2\":\"=\",\"x\":10.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"minus\",\"t\":\"'\",\"t2\":\"?\",\"x\":11.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"equal\",\"t\":\"\u00ec\",\"t2\":\"^\",\"x\":12.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"bslash\",\"t\":\"\\\\\",\"t2\":\"|\",\"x\":13.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"bs\",\"t\":\"\u2190\",\"x\":14.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"del\",\"t\":\"Del\",\"x\":16.0,\"y\":1.5,\"w\":1.5,\"h\":1.0},{\"id\":\"help\",\"t\":\"Help\",\"x\":17.5,\"y\":1.5,\"w\":1.5,\"h\":1.0},{\"id\":\"kplp\",\"t\":\"(\",\"x\":19.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"kprp\",\"t\":\")\",\"x\":20.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"kpdiv\",\"t\":\"\/\",\"x\":21.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"kpmul\",\"t\":\"*\",\"x\":22.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"tab\",\"t\":\"Tab\",\"x\":0.0,\"y\":2.5,\"w\":2.0,\"h\":1.0},{\"id\":\"q\",\"t\":\"Q\",\"x\":2.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"w\",\"t\":\"W\",\"x\":3.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"e\",\"t\":\"E\",\"x\":4.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"r\",\"t\":\"R\",\"x\":5.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"t\",\"t\":\"T\",\"x\":6.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"y\",\"t\":\"Y\",\"x\":7.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"u\",\"t\":\"U\",\"x\":8.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"i\",\"t\":\"I\",\"x\":9.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"o\",\"t\":\"O\",\"x\":10.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"p\",\"t\":\"P\",\"x\":11.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"lbr\",\"t\":\"\u00e8\",\"t2\":\"\u00e9\",\"x\":12.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"rbr\",\"t\":\"+\",\"t2\":\"*\",\"x\":13.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"ret\",\"t\":\"\u21b5\",\"x\":14.25,\"y\":2.5,\"w\":1.25,\"h\":2},{\"id\":\"kp7\",\"t\":\"7\",\"t2\":\"Home\",\"x\":19.5,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"kp8\",\"t\":\"8\",\"t2\":\"\u2191\",\"x\":20.5,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"kp9\",\"t\":\"9\",\"t2\":\"PgUp\",\"x\":21.5,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"kpminus\",\"t\":\"-\",\"x\":22.5,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"ctrl\",\"t\":\"Ctrl\",\"x\":0.0,\"y\":3.5,\"w\":1.25,\"h\":1.0},{\"id\":\"caps\",\"t\":\"Caps Lock\",\"x\":1.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"a\",\"t\":\"A\",\"x\":2.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"s\",\"t\":\"S\",\"x\":3.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"d\",\"t\":\"D\",\"x\":4.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"f\",\"t\":\"F\",\"x\":5.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"g\",\"t\":\"G\",\"x\":6.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"h\",\"t\":\"H\",\"x\":7.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"j\",\"t\":\"J\",\"x\":8.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"k\",\"t\":\"K\",\"x\":9.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"l\",\"t\":\"L\",\"x\":10.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"semi\",\"t\":\"\u00f2\",\"t2\":\"@\",\"x\":11.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"quote\",\"t\":\"\u00e0\",\"t2\":\"#\",\"x\":12.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"hash\",\"t\":\"\u00f9\",\"t2\":\"\u00a7\",\"x\":13.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"up\",\"t\":\"\u2191\",\"x\":17.0,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"kp4\",\"t\":\"4\",\"t2\":\"\u2190\",\"x\":19.5,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"kp5\",\"t\":\"5\",\"x\":20.5,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"kp6\",\"t\":\"6\",\"t2\":\"\u2192\",\"x\":21.5,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"kpplus\",\"t\":\"+\",\"x\":22.5,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"lshift\",\"t\":\"Shift\",\"x\":0.0,\"y\":4.5,\"w\":1.75,\"h\":1.0},{\"id\":\"lt\",\"t\":\"<\",\"t2\":\">\",\"x\":1.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"z\",\"t\":\"Z\",\"x\":2.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"x\",\"t\":\"X\",\"x\":3.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"c\",\"t\":\"C\",\"x\":4.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"v\",\"t\":\"V\",\"x\":5.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"b\",\"t\":\"B\",\"x\":6.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"n\",\"t\":\"N\",\"x\":7.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"m\",\"t\":\"M\",\"x\":8.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"comma\",\"t\":\",\",\"t2\":\";\",\"x\":9.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"period\",\"t\":\".\",\"t2\":\":\",\"x\":10.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"slash\",\"t\":\"-\",\"t2\":\"_\",\"x\":11.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"rshift\",\"t\":\"Shift\",\"x\":12.75,\"y\":4.5,\"w\":2.75,\"h\":1.0},{\"id\":\"left\",\"t\":\"\u2190\",\"x\":16.0,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"down\",\"t\":\"\u2193\",\"x\":17.0,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"right\",\"t\":\"\u2192\",\"x\":18.0,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"kp1\",\"t\":\"1\",\"t2\":\"End\",\"x\":19.5,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"kp2\",\"t\":\"2\",\"t2\":\"\u2193\",\"x\":20.5,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"kp3\",\"t\":\"3\",\"t2\":\"PgDn\",\"x\":21.5,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"kpenter\",\"t\":\"Enter\",\"x\":22.5,\"y\":4.5,\"w\":1.0,\"h\":2.0},{\"id\":\"lalt\",\"t\":\"Alt\",\"x\":0.75,\"y\":5.5,\"w\":1.25,\"h\":1.0},{\"id\":\"lamiga\",\"t\":\"A\",\"x\":2.0,\"y\":5.5,\"w\":1.25,\"h\":1.0},{\"id\":\"space\",\"t\":\"\",\"x\":3.25,\"y\":5.5,\"w\":9.0,\"h\":1},{\"id\":\"ramiga\",\"t\":\"A\",\"x\":12.25,\"y\":5.5,\"w\":1.25,\"h\":1.0},{\"id\":\"ralt\",\"t\":\"Alt\",\"x\":13.5,\"y\":5.5,\"w\":1.25,\"h\":1.0},{\"id\":\"kp0\",\"t\":\"0\",\"t2\":\"Ins\",\"x\":19.5,\"y\":5.5,\"w\":2.0,\"h\":1.0},{\"id\":\"kpdot\",\"t\":\".\",\"t2\":\"Del\",\"x\":21.5,\"y\":5.5,\"w\":1.0,\"h\":1.0}],\"matrix\":{\"esc\":[\"PA0\",\"PB2\"],\"grave\":[\"PA0\",\"PB3\"],\"tab\":[\"PA0\",\"PB4\"],\"caps\":[\"PA0\",\"PB5\"],\"lt\":[\"PA0\",\"PB6\"],\"kpmul\":[\"PA0\",\"PB7\"],\"kplp\":[\"PA1\",\"PB2\"],\"n1\":[\"PA1\",\"PB3\"],\"q\":[\"PA1\",\"PB4\"],\"a\":[\"PA1\",\"PB5\"],\"z\":[\"PA1\",\"PB6\"],\"kpplus\":[\"PA1\",\"PB7\"],\"f1\":[\"PA2\",\"PB2\"],\"n2\":[\"PA2\",\"PB3\"],\"w\":[\"PA2\",\"PB4\"],\"s\":[\"PA2\",\"PB5\"],\"x\":[\"PA2\",\"PB6\"],\"kp9\":[\"PA2\",\"PB7\"],\"f2\":[\"PA3\",\"PB2\"],\"n3\":[\"PA3\",\"PB3\"],\"e\":[\"PA3\",\"PB4\"],\"d\":[\"PA3\",\"PB5\"],\"c\":[\"PA3\",\"PB6\"],\"kp6\":[\"PA3\",\"PB7\"],\"f3\":[\"PA4\",\"PB2\"],\"n4\":[\"PA4\",\"PB3\"],\"r\":[\"PA4\",\"PB4\"],\"f\":[\"PA4\",\"PB5\"],\"v\":[\"PA4\",\"PB6\"],\"kp3\":[\"PA4\",\"PB7\"],\"f4\":[\"PA5\",\"PB2\"],\"n5\":[\"PA5\",\"PB3\"],\"t\":[\"PA5\",\"PB4\"],\"g\":[\"PA5\",\"PB5\"],\"b\":[\"PA5\",\"PB6\"],\"kpdot\":[\"PA5\",\"PB7\"],\"f5\":[\"PA6\",\"PB2\"],\"n6\":[\"PA6\",\"PB3\"],\"y\":[\"PA6\",\"PB4\"],\"h\":[\"PA6\",\"PB5\"],\"n\":[\"PA6\",\"PB6\"],\"kp8\":[\"PA6\",\"PB7\"],\"kprp\":[\"PA7\",\"PB2\"],\"n7\":[\"PA7\",\"PB3\"],\"u\":[\"PA7\",\"PB4\"],\"j\":[\"PA7\",\"PB5\"],\"m\":[\"PA7\",\"PB6\"],\"kp5\":[\"PA7\",\"PB7\"],\"f6\":[\"PC0\",\"PB2\"],\"n8\":[\"PC0\",\"PB3\"],\"i\":[\"PC0\",\"PB4\"],\"k\":[\"PC0\",\"PB5\"],\"comma\":[\"PC0\",\"PB6\"],\"kp2\":[\"PC0\",\"PB7\"],\"kpdiv\":[\"PC1\",\"PB2\"],\"n9\":[\"PC1\",\"PB3\"],\"o\":[\"PC1\",\"PB4\"],\"l\":[\"PC1\",\"PB5\"],\"period\":[\"PC1\",\"PB6\"],\"kpenter\":[\"PC1\",\"PB7\"],\"f7\":[\"PC2\",\"PB2\"],\"n0\":[\"PC2\",\"PB3\"],\"p\":[\"PC2\",\"PB4\"],\"semi\":[\"PC2\",\"PB5\"],\"slash\":[\"PC2\",\"PB6\"],\"kp7\":[\"PC2\",\"PB7\"],\"f8\":[\"PC3\",\"PB2\"],\"minus\":[\"PC3\",\"PB3\"],\"lbr\":[\"PC3\",\"PB4\"],\"quote\":[\"PC3\",\"PB5\"],\"kp4\":[\"PC3\",\"PB7\"],\"f9\":[\"PC4\",\"PB2\"],\"equal\":[\"PC4\",\"PB3\"],\"rbr\":[\"PC4\",\"PB4\"],\"hash\":[\"PC4\",\"PB5\"],\"space\":[\"PC4\",\"PB6\"],\"kp1\":[\"PC4\",\"PB7\"],\"f10\":[\"PC5\",\"PB2\"],\"bslash\":[\"PC5\",\"PB3\"],\"ret\":[\"PC5\",\"PB4\"],\"del\":[\"PC5\",\"PB5\"],\"bs\":[\"PC5\",\"PB6\"],\"kp0\":[\"PC5\",\"PB7\"],\"help\":[\"PC6\",\"PB2\"],\"up\":[\"PC6\",\"PB3\"],\"left\":[\"PC6\",\"PB4\"],\"right\":[\"PC6\",\"PB5\"],\"down\":[\"PC6\",\"PB6\"],\"kpminus\":[\"PC6\",\"PB7\"]},\"special\":{\"rshift\":{\"lines\":[\"PD0\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: chiude la linea dedicata PD0 (U13 pin 32, CN13 pin 6) verso GND (CN13 pin 30).\",\"en\":\"Not in the matrix: pulls the dedicated line PD0 (U13 pin 32, CN13 pin 6) to GND (CN13 pin 30).\"},\"ralt\":{\"lines\":[\"PD1\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: chiude la linea dedicata PD1 (U13 pin 33, CN13 pin 8) verso GND (CN13 pin 30).\",\"en\":\"Not in the matrix: pulls the dedicated line PD1 (U13 pin 33, CN13 pin 8) to GND (CN13 pin 30).\"},\"ramiga\":{\"lines\":[\"PD2\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: chiude la linea dedicata PD2 (U13 pin 34, CN13 pin 10) verso GND (CN13 pin 30). Reset Ctrl+Amiga+Amiga: sull'A1200 non c'\u00e8 una porta logica dedicata; \u00e8 il firmware di U13 che riconosce Ctrl (PD3) + Amiga sinistro (PD7) + Amiga destro (PD2) e porta basso _KB_RESET tramite l'uscita TCMP (pin 38).\",\"en\":\"Not in the matrix: pulls the dedicated line PD2 (U13 pin 34, CN13 pin 10) to GND (CN13 pin 30). Ctrl+Amiga+Amiga reset: the A1200 has no dedicated gate; U13 firmware detects Ctrl (PD3) + Left Amiga (PD7) + Right Amiga (PD2) and pulls _KB_RESET low through its TCMP output (pin 38).\"},\"ctrl\":{\"lines\":[\"PD3\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: chiude la linea dedicata PD3 (U13 pin 35, CN13 pin 11) verso GND (CN13 pin 30). Reset Ctrl+Amiga+Amiga: sull'A1200 non c'\u00e8 una porta logica dedicata; \u00e8 il firmware di U13 che riconosce Ctrl (PD3) + Amiga sinistro (PD7) + Amiga destro (PD2) e porta basso _KB_RESET tramite l'uscita TCMP (pin 38).\",\"en\":\"Not in the matrix: pulls the dedicated line PD3 (U13 pin 35, CN13 pin 11) to GND (CN13 pin 30). Ctrl+Amiga+Amiga reset: the A1200 has no dedicated gate; U13 firmware detects Ctrl (PD3) + Left Amiga (PD7) + Right Amiga (PD2) and pulls _KB_RESET low through its TCMP output (pin 38).\"},\"lshift\":{\"lines\":[\"PD4\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: chiude la linea dedicata PD4 (U13 pin 36, CN13 pin 12) verso GND (CN13 pin 30).\",\"en\":\"Not in the matrix: pulls the dedicated line PD4 (U13 pin 36, CN13 pin 12) to GND (CN13 pin 30).\"},\"lalt\":{\"lines\":[\"PD5\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: chiude la linea dedicata PD5 (U13 pin 37, CN13 pin 13) verso GND (CN13 pin 30).\",\"en\":\"Not in the matrix: pulls the dedicated line PD5 (U13 pin 37, CN13 pin 13) to GND (CN13 pin 30).\"},\"lamiga\":{\"lines\":[\"PD7\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: chiude la linea dedicata PD7 (U13 pin 39, CN13 pin 14) verso GND (CN13 pin 30). Reset Ctrl+Amiga+Amiga: sull'A1200 non c'\u00e8 una porta logica dedicata; \u00e8 il firmware di U13 che riconosce Ctrl (PD3) + Amiga sinistro (PD7) + Amiga destro (PD2) e porta basso _KB_RESET tramite l'uscita TCMP (pin 38).\",\"en\":\"Not in the matrix: pulls the dedicated line PD7 (U13 pin 39, CN13 pin 14) to GND (CN13 pin 30). Ctrl+Amiga+Amiga reset: the A1200 has no dedicated gate; U13 firmware detects Ctrl (PD3) + Left Amiga (PD7) + Right Amiga (PD2) and pulls _KB_RESET low through its TCMP output (pin 38).\"},\"caps\":{\"lines\":[\"PA0\",\"PB5\"],\"it\":\"Caps Lock \u00e8 un normale tasto di matrice (PA0 x PB5). Il LED nel tasto sta tra CN13 pin 9 (+5V) e pin 31; U13 lo accende portando basso PC7 (pin 24) tramite R622 da 100 \u03a9. Il LED \u00e8 gestito dal firmware (codice $62 premuto\/rilasciato a ogni cambio di stato).\",\"en\":\"Caps Lock is an ordinary matrix key (PA0 x PB5). The LED in the key sits between CN13 pin 9 (+5V) and pin 31; U13 lights it by pulling PC7 (pin 24) low through R622 (100 \u03a9). The firmware handles the LED (code $62 down\/up on each change of state).\"}},\"notes_it\":[\"La membrana A1200 ha la stessa piedinatura a 31 pin della tastiera A500 Mitsumi (stessa posizione di righe, colonne, modificatori, +5V, GND e LED).\",\"I tasti ISO (< > a sinistra di Z e \u00f9 a sinistra di Invio) ci sono sulla membrana di tutte le versioni; sulle tastiere USA sono semplicemente assenti.\",\"Il connettore originale a 31 vie \u00e8 introvabile: chi lo sostituisce usa un FFC a 32 vie lasciando libero il pin 32.\",\"Geometria approssimata da un PCB sostitutivo (Eberbach A1200KB). Invio a L: rettangolo della parte bassa.\",\"Legende ITA prese da MAME (matrix_it); i tasti Amiga sono indicati con \\\"A\\\".\"],\"notes_en\":[\"The A1200 membrane has the same 31-pin pinout as the Mitsumi A500 keyboard (same position of rows, columns, modifiers, +5V, GND and LED).\",\"The ISO keys (< > left of Z and \u00f9 left of Return) are on the membrane of every version; on US keyboards they are simply not fitted.\",\"The original 31-way connector is unobtainable: replacements use a 32-way FFC with pin 32 left free.\",\"Key geometry approximated from a replacement PCB (Eberbach A1200KB). Return is L-shaped: the rectangle is its lower part.\",\"ITA legends taken from MAME (matrix_it); Amiga keys are shown as \\\"A\\\".\"],\"board_it\":\"scheda A1200 rev. 1 - 1D (schema 364717)\",\"board_en\":\"A1200 board rev. 1 - 1D (schematic 364717)\",\"name_en\":\"Commodore Amiga 1200 (Italian keyboard)\"},\"a500\":{\"id\":\"a500\",\"name\":\"Commodore Amiga 500 (tastiera ITA 312502-04)\",\"sources\":[{\"t\":\"MAME src\/devices\/bus\/amiga\/keyboard\/matrix.cpp (matrice logica ROW0-14 x bit, varianti IT\/US)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/devices\/bus\/amiga\/keyboard\/matrix.cpp\"},{\"t\":\"MAME src\/devices\/bus\/amiga\/keyboard\/mitsumi.cpp (6570-036: righe su PC\/PD, colonne PA2-PA7, modificatori PB0-PB6, LED PB7, KDAT\/KCLK PA0\/PA1, watchdog PD7, reset Ctrl-Amiga-Amiga)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/devices\/bus\/amiga\/keyboard\/mitsumi.cpp\"},{\"t\":\"nocash, schema della tastiera A500 Mitsumi 56 A620A (EAB, copia in BleuLlama\/AmigaSchematics)\",\"u\":\"https:\/\/github.com\/BleuLlama\/AmigaSchematics\/blob\/master\/A500_kyb_Mitsumi\/Reference\/A5kyb_nocash_schem.txt\"},{\"t\":\"amiga-stuff.com, piedinatura 6500\/1 - 6570-036\",\"u\":\"https:\/\/amiga-stuff.com\/hardware\/6500_1.html\"},{\"t\":\"A500 System Schematics rev 5\/6A\/7, sheet 6 (CN13, U7 8520)\",\"u\":\"https:\/\/archive.org\/details\/system-schematics-a-500-revisions-5-6a-7\"},{\"t\":\"A500 Service Manual PN 314981-04 (CN13 pinout, codici lampeggio Caps Lock)\",\"u\":\"https:\/\/archive.org\/details\/a-500-service-manual-pn-314981-04-oct-1990-ocred\"},{\"t\":\"A. Eberbach, A1200KB (netlist della membrana A1200, stessa piedinatura 31 pin; geometria tasti)\",\"u\":\"https:\/\/github.com\/aeberbach\/A1200KB\"},{\"t\":\"Amiga Hardware Reference Manual, 3rd ed., cap. Keyboard (protocollo KCLK\/KDAT, codici, Caps Lock)\",\"u\":\"https:\/\/archive.org\/details\/amiga-hardware-reference-manual-3rd-edition\"}],\"scan_it\":\"Il microcontrollore 6570-036 (famiglia 6500\/1, 40 pin DIP) \u00e8 sulla scheda della tastiera, non sulla scheda madre. Pilota a turno le 15 righe (PD6-PD0 e PC7-PC0, pin 15-29 della membrana) e legge 6 colonne su PA2-PA7 (pin 1-5 e 7). I 7 modificatori (Shift, Alt, Amiga, Ctrl) hanno ciascuno una linea propria su PB0-PB6 chiusa a massa. Ogni tasto premuto\/rilasciato viene trasmesso in seriale sincrona: PA1 = KCLK, PA0 = KDAT (attivi bassi, open collector), cavo 8 pin -> CN13 della scheda madre -> CIA 8520 U7 (CIA-A): KCLK su CNT pin 40, KDAT su SP pin 39. Il computer conferma ogni byte tenendo KDAT basso per almeno ~85 \u00b5s (handshake). Un watchdog 74LS123 (impulsi da PD7) resetta la MCU se il programma si blocca.\",\"scan_en\":\"The 6570-036 microcontroller (6500\/1 family, 40-pin DIP) sits on the keyboard PCB, not on the motherboard. It drives the 15 rows in turn (PD6-PD0 and PC7-PC0, membrane pins 15-29) and reads 6 columns on PA2-PA7 (pins 1-5 and 7). The 7 modifiers (Shift, Alt, Amiga, Ctrl) each have their own line on PB0-PB6, switched to ground. Every key press\/release is sent as synchronous serial: PA1 = KCLK, PA0 = KDAT (active low, open collector), 8-pin cable -> motherboard CN13 -> 8520 CIA U7 (CIA-A): KCLK on CNT pin 40, KDAT on SP pin 39. The computer acknowledges each byte by holding KDAT low for at least ~85 \u00b5s (handshake). A 74LS123 watchdog (pulsed from PD7) resets the MCU if the program hangs.\",\"lines\":[{\"id\":\"PD6\",\"group\":\"col\",\"name\":\"ROW0 (Y14)\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"3\",\"conn_pin\":\"15\"},{\"id\":\"PD5\",\"group\":\"col\",\"name\":\"ROW1 (Y13)\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"4\",\"conn_pin\":\"16\"},{\"id\":\"PD4\",\"group\":\"col\",\"name\":\"ROW2 (Y12)\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"5\",\"conn_pin\":\"17\"},{\"id\":\"PD3\",\"group\":\"col\",\"name\":\"ROW3 (Y11)\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"6\",\"conn_pin\":\"18\"},{\"id\":\"PD2\",\"group\":\"col\",\"name\":\"ROW4 (Y10)\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"7\",\"conn_pin\":\"19\"},{\"id\":\"PD1\",\"group\":\"col\",\"name\":\"ROW5 (Y9)\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"8\",\"conn_pin\":\"20\"},{\"id\":\"PD0\",\"group\":\"col\",\"name\":\"ROW6 (Y8)\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"9\",\"conn_pin\":\"21\"},{\"id\":\"PC7\",\"group\":\"col\",\"name\":\"ROW7 (Y7)\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"13\",\"conn_pin\":\"22\"},{\"id\":\"PC6\",\"group\":\"col\",\"name\":\"ROW8 (Y6)\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"14\",\"conn_pin\":\"23\"},{\"id\":\"PC5\",\"group\":\"col\",\"name\":\"ROW9 (Y5)\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"15\",\"conn_pin\":\"24\"},{\"id\":\"PC4\",\"group\":\"col\",\"name\":\"ROW10 (Y4)\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"16\",\"conn_pin\":\"25\"},{\"id\":\"PC3\",\"group\":\"col\",\"name\":\"ROW11 (Y3)\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"17\",\"conn_pin\":\"26\"},{\"id\":\"PC2\",\"group\":\"col\",\"name\":\"ROW12 (Y2)\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"18\",\"conn_pin\":\"27\"},{\"id\":\"PC1\",\"group\":\"col\",\"name\":\"ROW13 (Y1)\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"19\",\"conn_pin\":\"28\"},{\"id\":\"PC0\",\"group\":\"col\",\"name\":\"ROW14 (Y0)\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"20\",\"conn_pin\":\"29\"},{\"id\":\"PA2\",\"group\":\"row\",\"name\":\"COL bit 2 (X2)\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"36\",\"conn_pin\":\"7\"},{\"id\":\"PA3\",\"group\":\"row\",\"name\":\"COL bit 3 (X3)\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"35\",\"conn_pin\":\"5\"},{\"id\":\"PA4\",\"group\":\"row\",\"name\":\"COL bit 4 (X4)\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"34\",\"conn_pin\":\"1\"},{\"id\":\"PA5\",\"group\":\"row\",\"name\":\"COL bit 5 (X5)\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"33\",\"conn_pin\":\"2\"},{\"id\":\"PA6\",\"group\":\"row\",\"name\":\"COL bit 6 (X6)\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"32\",\"conn_pin\":\"3\"},{\"id\":\"PA7\",\"group\":\"row\",\"name\":\"COL bit 7 (X7)\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"31\",\"conn_pin\":\"4\"},{\"id\":\"PB0\",\"group\":\"extra\",\"name\":\"Right Shift\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"29\",\"conn_pin\":\"6\",\"name_it\":\"Shift destro\",\"also_it\":\"tasto dedicato verso GND (pin 30)\",\"also_en\":\"dedicated key to GND (pin 30)\"},{\"id\":\"PB1\",\"group\":\"extra\",\"name\":\"Right Alt\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"28\",\"conn_pin\":\"8\",\"name_it\":\"Alt destro\",\"also_it\":\"tasto dedicato verso GND (pin 30)\",\"also_en\":\"dedicated key to GND (pin 30)\"},{\"id\":\"PB2\",\"group\":\"extra\",\"name\":\"Right Amiga\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"27\",\"conn_pin\":\"10\",\"name_it\":\"Amiga destro\",\"also_it\":\"tasto dedicato verso GND (pin 30)\",\"also_en\":\"dedicated key to GND (pin 30)\"},{\"id\":\"PB3\",\"group\":\"extra\",\"name\":\"Ctrl\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"26\",\"conn_pin\":\"11\",\"also_it\":\"tasto dedicato verso GND (pin 30)\",\"also_en\":\"dedicated key to GND (pin 30)\"},{\"id\":\"PB4\",\"group\":\"extra\",\"name\":\"Left Shift\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"25\",\"conn_pin\":\"12\",\"name_it\":\"Shift sinistro\",\"also_it\":\"tasto dedicato verso GND (pin 30)\",\"also_en\":\"dedicated key to GND (pin 30)\"},{\"id\":\"PB5\",\"group\":\"extra\",\"name\":\"Left Alt\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"24\",\"conn_pin\":\"13\",\"name_it\":\"Alt sinistro\",\"also_it\":\"tasto dedicato verso GND (pin 30)\",\"also_en\":\"dedicated key to GND (pin 30)\"},{\"id\":\"PB6\",\"group\":\"extra\",\"name\":\"Left Amiga\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"23\",\"conn_pin\":\"14\",\"name_it\":\"Amiga sinistro\",\"also_it\":\"tasto dedicato verso GND (pin 30)\",\"also_en\":\"dedicated key to GND (pin 30)\"},{\"id\":\"PB7\",\"group\":\"extra\",\"name\":\"CAPS LED\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"22\",\"conn_pin\":\"\",\"also_it\":\"pilota il transistor Q2 (BC458C) che accende il LED del Caps Lock sul pin 31 della membrana\",\"also_en\":\"drives transistor Q2 (BC458C) which lights the Caps Lock LED on membrane pin 31\"},{\"id\":\"PA0\",\"group\":\"extra\",\"name\":\"KDAT\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"38\",\"conn_pin\":\"\",\"also_it\":\"cavo 8 pin, pin 2 -> CN13-2 -> 8520 U7 SP pin 39\",\"also_en\":\"8-pin cable pin 2 -> CN13-2 -> 8520 U7 SP pin 39\"},{\"id\":\"PA1\",\"group\":\"extra\",\"name\":\"KCLK\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"37\",\"conn_pin\":\"\",\"also_it\":\"cavo 8 pin, pin 1 -> CN13-1 -> 8520 U7 CNT pin 40\",\"also_en\":\"8-pin cable pin 1 -> CN13-1 -> 8520 U7 CNT pin 40\"},{\"id\":\"PD7\",\"group\":\"extra\",\"name\":\"WATCHDOG\",\"chip\":\"\",\"chip_part\":\"MOS\/CSG 6570-036 (6500\/1, 328191-02)\",\"chip_pin\":\"2\",\"conn_pin\":\"\",\"also_it\":\"impulsi verso il 74LS123 (watchdog); se si fermano il 74LS123 resetta la MCU\",\"also_en\":\"pulses to the 74LS123 watchdog; if they stop the 74LS123 resets the MCU\"}],\"connectors\":[{\"ref\":\"\",\"it\":\"Connettore membrana 31 pin sulla scheda controller (passo 1,25 mm)\",\"en\":\"31-pin membrane connector on the controller PCB (1.25 mm pitch)\",\"pins\":[{\"n\":\"1\",\"sig\":\"PA4\",\"note_it\":\"COL bit 4 (X4)\",\"note_en\":\"COL bit 4 (X4)\"},{\"n\":\"2\",\"sig\":\"PA5\",\"note_it\":\"COL bit 5 (X5)\",\"note_en\":\"COL bit 5 (X5)\"},{\"n\":\"3\",\"sig\":\"PA6\",\"note_it\":\"COL bit 6 (X6)\",\"note_en\":\"COL bit 6 (X6)\"},{\"n\":\"4\",\"sig\":\"PA7\",\"note_it\":\"COL bit 7 (X7)\",\"note_en\":\"COL bit 7 (X7)\"},{\"n\":\"5\",\"sig\":\"PA3\",\"note_it\":\"COL bit 3 (X3)\",\"note_en\":\"COL bit 3 (X3)\"},{\"n\":\"6\",\"sig\":\"PB0\",\"note_it\":\"Shift destro\",\"note_en\":\"Right Shift\"},{\"n\":\"7\",\"sig\":\"PA2\",\"note_it\":\"COL bit 2 (X2)\",\"note_en\":\"COL bit 2 (X2)\"},{\"n\":\"8\",\"sig\":\"PB1\",\"note_it\":\"Alt destro\",\"note_en\":\"Right Alt\"},{\"n\":\"9\",\"sig\":\"+5V\",\"note_it\":\"alimentazione LED Caps Lock (anodo)\",\"note_en\":\"Caps Lock LED supply (anode)\"},{\"n\":\"10\",\"sig\":\"PB2\",\"note_it\":\"Amiga destro\",\"note_en\":\"Right Amiga\"},{\"n\":\"11\",\"sig\":\"PB3\",\"note_it\":\"Ctrl\",\"note_en\":\"Ctrl\"},{\"n\":\"12\",\"sig\":\"PB4\",\"note_it\":\"Shift sinistro\",\"note_en\":\"Left Shift\"},{\"n\":\"13\",\"sig\":\"PB5\",\"note_it\":\"Alt sinistro\",\"note_en\":\"Left Alt\"},{\"n\":\"14\",\"sig\":\"PB6\",\"note_it\":\"Amiga sinistro\",\"note_en\":\"Left Amiga\"},{\"n\":\"15\",\"sig\":\"PD6\",\"note_it\":\"ROW0 (Y14)\",\"note_en\":\"ROW0 (Y14)\"},{\"n\":\"16\",\"sig\":\"PD5\",\"note_it\":\"ROW1 (Y13)\",\"note_en\":\"ROW1 (Y13)\"},{\"n\":\"17\",\"sig\":\"PD4\",\"note_it\":\"ROW2 (Y12)\",\"note_en\":\"ROW2 (Y12)\"},{\"n\":\"18\",\"sig\":\"PD3\",\"note_it\":\"ROW3 (Y11)\",\"note_en\":\"ROW3 (Y11)\"},{\"n\":\"19\",\"sig\":\"PD2\",\"note_it\":\"ROW4 (Y10)\",\"note_en\":\"ROW4 (Y10)\"},{\"n\":\"20\",\"sig\":\"PD1\",\"note_it\":\"ROW5 (Y9)\",\"note_en\":\"ROW5 (Y9)\"},{\"n\":\"21\",\"sig\":\"PD0\",\"note_it\":\"ROW6 (Y8)\",\"note_en\":\"ROW6 (Y8)\"},{\"n\":\"22\",\"sig\":\"PC7\",\"note_it\":\"ROW7 (Y7)\",\"note_en\":\"ROW7 (Y7)\"},{\"n\":\"23\",\"sig\":\"PC6\",\"note_it\":\"ROW8 (Y6)\",\"note_en\":\"ROW8 (Y6)\"},{\"n\":\"24\",\"sig\":\"PC5\",\"note_it\":\"ROW9 (Y5)\",\"note_en\":\"ROW9 (Y5)\"},{\"n\":\"25\",\"sig\":\"PC4\",\"note_it\":\"ROW10 (Y4)\",\"note_en\":\"ROW10 (Y4)\"},{\"n\":\"26\",\"sig\":\"PC3\",\"note_it\":\"ROW11 (Y3)\",\"note_en\":\"ROW11 (Y3)\"},{\"n\":\"27\",\"sig\":\"PC2\",\"note_it\":\"ROW12 (Y2)\",\"note_en\":\"ROW12 (Y2)\"},{\"n\":\"28\",\"sig\":\"PC1\",\"note_it\":\"ROW13 (Y1)\",\"note_en\":\"ROW13 (Y1)\"},{\"n\":\"29\",\"sig\":\"PC0\",\"note_it\":\"ROW14 (Y0)\",\"note_en\":\"ROW14 (Y0)\"},{\"n\":\"30\",\"sig\":\"GND\",\"note_it\":\"comune dei tasti modificatori\",\"note_en\":\"common of the modifier keys\"},{\"n\":\"31\",\"sig\":\"CAPS_LED\",\"note_it\":\"catodo LED Caps Lock, verso Q2 (comandato da PB7)\",\"note_en\":\"Caps Lock LED cathode, to Q2 (driven by PB7)\"}]},{\"ref\":\"CN13\",\"it\":\"Cavo tastiera 8 pin verso CN13 della scheda madre (SIL 8)\",\"en\":\"8-pin keyboard cable to motherboard CN13 (8-pin SIL)\",\"pins\":[{\"n\":\"1\",\"sig\":\"KCLK\",\"note_it\":\"MCU PA1 (pin 37) -> scheda madre CN13-1 -> 8520 U7 CNT pin 40 (pull-up RP501 10k)\",\"note_en\":\"motherboard CN13-1 -> 8520 U7 CNT pin 40\"},{\"n\":\"2\",\"sig\":\"KDAT\",\"note_it\":\"MCU PA0 (pin 38) -> CN13-2 -> 8520 U7 SP pin 39 (pull-up RP501 10k)\",\"note_en\":\"MCU PA0 (pin 38) -> CN13-2 -> 8520 U7 SP pin 39 (pull-up RP501 10k)\"},{\"n\":\"3\",\"sig\":\"\/KRESET\",\"note_it\":\"uscita reset del 555 sulla tastiera (Ctrl-Amiga-Amiga) -> CN13-3 _KBRESET -> Gary U5 pin 5\",\"note_en\":\"keyboard 555 reset output -> CN13-3 _KBRESET -> Gary U5 pin 5\"},{\"n\":\"4\",\"sig\":\"+5V\"},{\"n\":\"5\",\"sig\":\"KEY\",\"note_it\":\"nessun pin, polarizzazione\",\"note_en\":\"no pin, polarisation key\"},{\"n\":\"6\",\"sig\":\"GND\"},{\"n\":\"7\",\"sig\":\"POWER LED\",\"note_it\":\"STATUS: LED rosso alimentazione (filtro audio), da 8520 U7 PA1 _LED via Q502\",\"note_en\":\"red power LED, from 8520 U7 PA1 _LED via Q502\"},{\"n\":\"8\",\"sig\":\"DRIVE LED\",\"note_it\":\"INUSE: LED verde drive, da _MTR0 via Q503\",\"note_en\":\"green drive LED, from _MTR0 via Q503\"}]}],\"layout\":[{\"id\":\"esc\",\"t\":\"Esc\",\"x\":0.0,\"y\":0.0,\"w\":1.0,\"h\":1.0},{\"id\":\"f1\",\"t\":\"F1\",\"x\":1.5,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"f2\",\"t\":\"F2\",\"x\":2.75,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"f3\",\"t\":\"F3\",\"x\":4.0,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"f4\",\"t\":\"F4\",\"x\":5.25,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"f5\",\"t\":\"F5\",\"x\":6.5,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"f6\",\"t\":\"F6\",\"x\":8.25,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"f7\",\"t\":\"F7\",\"x\":9.5,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"f8\",\"t\":\"F8\",\"x\":10.75,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"f9\",\"t\":\"F9\",\"x\":12.0,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"f10\",\"t\":\"F10\",\"x\":13.25,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"grave\",\"t\":\"`\",\"t2\":\"~\",\"x\":0.0,\"y\":1.5,\"w\":1.5,\"h\":1.0},{\"id\":\"n1\",\"t\":\"1\",\"t2\":\"!\",\"x\":1.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"n2\",\"t\":\"2\",\"t2\":\"\\\"\",\"x\":2.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"n3\",\"t\":\"3\",\"t2\":\"\u00a3\",\"x\":3.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"n4\",\"t\":\"4\",\"t2\":\"$\",\"x\":4.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"n5\",\"t\":\"5\",\"t2\":\"%\",\"x\":5.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"n6\",\"t\":\"6\",\"t2\":\"&\",\"x\":6.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"n7\",\"t\":\"7\",\"t2\":\"\/\",\"x\":7.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"n8\",\"t\":\"8\",\"t2\":\"(\",\"x\":8.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"n9\",\"t\":\"9\",\"t2\":\")\",\"x\":9.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"n0\",\"t\":\"0\",\"t2\":\"=\",\"x\":10.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"minus\",\"t\":\"'\",\"t2\":\"?\",\"x\":11.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"equal\",\"t\":\"\u00ec\",\"t2\":\"^\",\"x\":12.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"bslash\",\"t\":\"\\\\\",\"t2\":\"|\",\"x\":13.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"bs\",\"t\":\"\u2190\",\"x\":14.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"del\",\"t\":\"Del\",\"x\":16.0,\"y\":1.5,\"w\":1.5,\"h\":1.0},{\"id\":\"help\",\"t\":\"Help\",\"x\":17.5,\"y\":1.5,\"w\":1.5,\"h\":1.0},{\"id\":\"kplp\",\"t\":\"(\",\"x\":19.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"kprp\",\"t\":\")\",\"x\":20.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"kpdiv\",\"t\":\"\/\",\"x\":21.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"kpmul\",\"t\":\"*\",\"x\":22.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"tab\",\"t\":\"Tab\",\"x\":0.0,\"y\":2.5,\"w\":2.0,\"h\":1.0},{\"id\":\"q\",\"t\":\"Q\",\"x\":2.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"w\",\"t\":\"W\",\"x\":3.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"e\",\"t\":\"E\",\"x\":4.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"r\",\"t\":\"R\",\"x\":5.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"t\",\"t\":\"T\",\"x\":6.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"y\",\"t\":\"Y\",\"x\":7.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"u\",\"t\":\"U\",\"x\":8.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"i\",\"t\":\"I\",\"x\":9.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"o\",\"t\":\"O\",\"x\":10.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"p\",\"t\":\"P\",\"x\":11.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"lbr\",\"t\":\"\u00e8\",\"t2\":\"\u00e9\",\"x\":12.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"rbr\",\"t\":\"+\",\"t2\":\"*\",\"x\":13.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"ret\",\"t\":\"\u21b5\",\"x\":14.25,\"y\":2.5,\"w\":1.25,\"h\":2},{\"id\":\"kp7\",\"t\":\"7\",\"t2\":\"Home\",\"x\":19.5,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"kp8\",\"t\":\"8\",\"t2\":\"\u2191\",\"x\":20.5,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"kp9\",\"t\":\"9\",\"t2\":\"PgUp\",\"x\":21.5,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"kpminus\",\"t\":\"-\",\"x\":22.5,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"ctrl\",\"t\":\"Ctrl\",\"x\":0.0,\"y\":3.5,\"w\":1.25,\"h\":1.0},{\"id\":\"caps\",\"t\":\"Caps Lock\",\"x\":1.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"a\",\"t\":\"A\",\"x\":2.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"s\",\"t\":\"S\",\"x\":3.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"d\",\"t\":\"D\",\"x\":4.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"f\",\"t\":\"F\",\"x\":5.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"g\",\"t\":\"G\",\"x\":6.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"h\",\"t\":\"H\",\"x\":7.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"j\",\"t\":\"J\",\"x\":8.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"k\",\"t\":\"K\",\"x\":9.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"l\",\"t\":\"L\",\"x\":10.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"semi\",\"t\":\"\u00f2\",\"t2\":\"@\",\"x\":11.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"quote\",\"t\":\"\u00e0\",\"t2\":\"#\",\"x\":12.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"hash\",\"t\":\"\u00f9\",\"t2\":\"\u00a7\",\"x\":13.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"up\",\"t\":\"\u2191\",\"x\":17.0,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"kp4\",\"t\":\"4\",\"t2\":\"\u2190\",\"x\":19.5,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"kp5\",\"t\":\"5\",\"x\":20.5,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"kp6\",\"t\":\"6\",\"t2\":\"\u2192\",\"x\":21.5,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"kpplus\",\"t\":\"+\",\"x\":22.5,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"lshift\",\"t\":\"Shift\",\"x\":0.0,\"y\":4.5,\"w\":1.75,\"h\":1.0},{\"id\":\"lt\",\"t\":\"<\",\"t2\":\">\",\"x\":1.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"z\",\"t\":\"Z\",\"x\":2.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"x\",\"t\":\"X\",\"x\":3.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"c\",\"t\":\"C\",\"x\":4.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"v\",\"t\":\"V\",\"x\":5.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"b\",\"t\":\"B\",\"x\":6.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"n\",\"t\":\"N\",\"x\":7.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"m\",\"t\":\"M\",\"x\":8.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"comma\",\"t\":\",\",\"t2\":\";\",\"x\":9.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"period\",\"t\":\".\",\"t2\":\":\",\"x\":10.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"slash\",\"t\":\"-\",\"t2\":\"_\",\"x\":11.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"rshift\",\"t\":\"Shift\",\"x\":12.75,\"y\":4.5,\"w\":2.75,\"h\":1.0},{\"id\":\"left\",\"t\":\"\u2190\",\"x\":16.0,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"down\",\"t\":\"\u2193\",\"x\":17.0,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"right\",\"t\":\"\u2192\",\"x\":18.0,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"kp1\",\"t\":\"1\",\"t2\":\"End\",\"x\":19.5,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"kp2\",\"t\":\"2\",\"t2\":\"\u2193\",\"x\":20.5,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"kp3\",\"t\":\"3\",\"t2\":\"PgDn\",\"x\":21.5,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"kpenter\",\"t\":\"Enter\",\"x\":22.5,\"y\":4.5,\"w\":1.0,\"h\":2.0},{\"id\":\"lalt\",\"t\":\"Alt\",\"x\":0.75,\"y\":5.5,\"w\":1.25,\"h\":1.0},{\"id\":\"lamiga\",\"t\":\"A\",\"x\":2.0,\"y\":5.5,\"w\":1.25,\"h\":1.0},{\"id\":\"space\",\"t\":\"\",\"x\":3.25,\"y\":5.5,\"w\":9.0,\"h\":1},{\"id\":\"ramiga\",\"t\":\"A\",\"x\":12.25,\"y\":5.5,\"w\":1.25,\"h\":1.0},{\"id\":\"ralt\",\"t\":\"Alt\",\"x\":13.5,\"y\":5.5,\"w\":1.25,\"h\":1.0},{\"id\":\"kp0\",\"t\":\"0\",\"t2\":\"Ins\",\"x\":19.5,\"y\":5.5,\"w\":2.0,\"h\":1.0},{\"id\":\"kpdot\",\"t\":\".\",\"t2\":\"Del\",\"x\":21.5,\"y\":5.5,\"w\":1.0,\"h\":1.0}],\"matrix\":{\"esc\":[\"PD6\",\"PA2\"],\"grave\":[\"PD6\",\"PA3\"],\"tab\":[\"PD6\",\"PA4\"],\"caps\":[\"PD6\",\"PA5\"],\"lt\":[\"PD6\",\"PA6\"],\"kpmul\":[\"PD6\",\"PA7\"],\"kplp\":[\"PD5\",\"PA2\"],\"n1\":[\"PD5\",\"PA3\"],\"q\":[\"PD5\",\"PA4\"],\"a\":[\"PD5\",\"PA5\"],\"z\":[\"PD5\",\"PA6\"],\"kpplus\":[\"PD5\",\"PA7\"],\"f1\":[\"PD4\",\"PA2\"],\"n2\":[\"PD4\",\"PA3\"],\"w\":[\"PD4\",\"PA4\"],\"s\":[\"PD4\",\"PA5\"],\"x\":[\"PD4\",\"PA6\"],\"kp9\":[\"PD4\",\"PA7\"],\"f2\":[\"PD3\",\"PA2\"],\"n3\":[\"PD3\",\"PA3\"],\"e\":[\"PD3\",\"PA4\"],\"d\":[\"PD3\",\"PA5\"],\"c\":[\"PD3\",\"PA6\"],\"kp6\":[\"PD3\",\"PA7\"],\"f3\":[\"PD2\",\"PA2\"],\"n4\":[\"PD2\",\"PA3\"],\"r\":[\"PD2\",\"PA4\"],\"f\":[\"PD2\",\"PA5\"],\"v\":[\"PD2\",\"PA6\"],\"kp3\":[\"PD2\",\"PA7\"],\"f4\":[\"PD1\",\"PA2\"],\"n5\":[\"PD1\",\"PA3\"],\"t\":[\"PD1\",\"PA4\"],\"g\":[\"PD1\",\"PA5\"],\"b\":[\"PD1\",\"PA6\"],\"kpdot\":[\"PD1\",\"PA7\"],\"f5\":[\"PD0\",\"PA2\"],\"n6\":[\"PD0\",\"PA3\"],\"y\":[\"PD0\",\"PA4\"],\"h\":[\"PD0\",\"PA5\"],\"n\":[\"PD0\",\"PA6\"],\"kp8\":[\"PD0\",\"PA7\"],\"kprp\":[\"PC7\",\"PA2\"],\"n7\":[\"PC7\",\"PA3\"],\"u\":[\"PC7\",\"PA4\"],\"j\":[\"PC7\",\"PA5\"],\"m\":[\"PC7\",\"PA6\"],\"kp5\":[\"PC7\",\"PA7\"],\"f6\":[\"PC6\",\"PA2\"],\"n8\":[\"PC6\",\"PA3\"],\"i\":[\"PC6\",\"PA4\"],\"k\":[\"PC6\",\"PA5\"],\"comma\":[\"PC6\",\"PA6\"],\"kp2\":[\"PC6\",\"PA7\"],\"kpdiv\":[\"PC5\",\"PA2\"],\"n9\":[\"PC5\",\"PA3\"],\"o\":[\"PC5\",\"PA4\"],\"l\":[\"PC5\",\"PA5\"],\"period\":[\"PC5\",\"PA6\"],\"kpenter\":[\"PC5\",\"PA7\"],\"f7\":[\"PC4\",\"PA2\"],\"n0\":[\"PC4\",\"PA3\"],\"p\":[\"PC4\",\"PA4\"],\"semi\":[\"PC4\",\"PA5\"],\"slash\":[\"PC4\",\"PA6\"],\"kp7\":[\"PC4\",\"PA7\"],\"f8\":[\"PC3\",\"PA2\"],\"minus\":[\"PC3\",\"PA3\"],\"lbr\":[\"PC3\",\"PA4\"],\"quote\":[\"PC3\",\"PA5\"],\"kp4\":[\"PC3\",\"PA7\"],\"f9\":[\"PC2\",\"PA2\"],\"equal\":[\"PC2\",\"PA3\"],\"rbr\":[\"PC2\",\"PA4\"],\"hash\":[\"PC2\",\"PA5\"],\"space\":[\"PC2\",\"PA6\"],\"kp1\":[\"PC2\",\"PA7\"],\"f10\":[\"PC1\",\"PA2\"],\"bslash\":[\"PC1\",\"PA3\"],\"ret\":[\"PC1\",\"PA4\"],\"del\":[\"PC1\",\"PA5\"],\"bs\":[\"PC1\",\"PA6\"],\"kp0\":[\"PC1\",\"PA7\"],\"help\":[\"PC0\",\"PA2\"],\"up\":[\"PC0\",\"PA3\"],\"left\":[\"PC0\",\"PA4\"],\"right\":[\"PC0\",\"PA5\"],\"down\":[\"PC0\",\"PA6\"],\"kpminus\":[\"PC0\",\"PA7\"]},\"special\":{\"rshift\":{\"lines\":[\"PB0\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: il tasto chiude la linea dedicata PB0 (pin 29 della MCU, pin 6 della membrana) verso GND (pin 30 della membrana). Cos\u00ec non pu\u00f2 essere \\\"mascherato\\\" da altri tasti.\",\"en\":\"Not in the matrix: the key pulls the dedicated line PB0 (MCU pin 29, membrane pin 6) to GND (membrane pin 30), so it can never be masked by other keys.\"},\"ralt\":{\"lines\":[\"PB1\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: il tasto chiude la linea dedicata PB1 (pin 28 della MCU, pin 8 della membrana) verso GND (pin 30 della membrana). Cos\u00ec non pu\u00f2 essere \\\"mascherato\\\" da altri tasti.\",\"en\":\"Not in the matrix: the key pulls the dedicated line PB1 (MCU pin 28, membrane pin 8) to GND (membrane pin 30), so it can never be masked by other keys.\"},\"ramiga\":{\"lines\":[\"PB2\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: il tasto chiude la linea dedicata PB2 (pin 27 della MCU, pin 10 della membrana) verso GND (pin 30 della membrana). Cos\u00ec non pu\u00f2 essere \\\"mascherato\\\" da altri tasti. Fa parte del reset Ctrl+Amiga+Amiga: PB3, PB6 e PB2 vanno anche a una NOR 74LS27; con tutti e tre premuti la NOR va alta, Q1 (BC458C) scarica il trigger del timer HA17555\/NE555 che genera un impulso di reset (~0,5 s) sia sulla linea \/KRESET del cavo (pin 3) sia sul \/RES della 6570 (pin 39), tramite le altre porte della 74LS27.\",\"en\":\"Not in the matrix: the key pulls the dedicated line PB2 (MCU pin 27, membrane pin 10) to GND (membrane pin 30), so it can never be masked by other keys. Part of the Ctrl+Amiga+Amiga reset: PB3, PB6 and PB2 also feed a 74LS27 NOR; with all three held the NOR goes high, Q1 (BC458C) pulls the HA17555\/NE555 trigger and the timer produces a reset pulse (~0.5 s) on both the cable \/KRESET line (pin 3) and the 6570 \/RES (pin 39) through the other 74LS27 gates.\"},\"ctrl\":{\"lines\":[\"PB3\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: il tasto chiude la linea dedicata PB3 (pin 26 della MCU, pin 11 della membrana) verso GND (pin 30 della membrana). Cos\u00ec non pu\u00f2 essere \\\"mascherato\\\" da altri tasti. Fa parte del reset Ctrl+Amiga+Amiga: PB3, PB6 e PB2 vanno anche a una NOR 74LS27; con tutti e tre premuti la NOR va alta, Q1 (BC458C) scarica il trigger del timer HA17555\/NE555 che genera un impulso di reset (~0,5 s) sia sulla linea \/KRESET del cavo (pin 3) sia sul \/RES della 6570 (pin 39), tramite le altre porte della 74LS27.\",\"en\":\"Not in the matrix: the key pulls the dedicated line PB3 (MCU pin 26, membrane pin 11) to GND (membrane pin 30), so it can never be masked by other keys. Part of the Ctrl+Amiga+Amiga reset: PB3, PB6 and PB2 also feed a 74LS27 NOR; with all three held the NOR goes high, Q1 (BC458C) pulls the HA17555\/NE555 trigger and the timer produces a reset pulse (~0.5 s) on both the cable \/KRESET line (pin 3) and the 6570 \/RES (pin 39) through the other 74LS27 gates.\"},\"lshift\":{\"lines\":[\"PB4\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: il tasto chiude la linea dedicata PB4 (pin 25 della MCU, pin 12 della membrana) verso GND (pin 30 della membrana). Cos\u00ec non pu\u00f2 essere \\\"mascherato\\\" da altri tasti.\",\"en\":\"Not in the matrix: the key pulls the dedicated line PB4 (MCU pin 25, membrane pin 12) to GND (membrane pin 30), so it can never be masked by other keys.\"},\"lalt\":{\"lines\":[\"PB5\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: il tasto chiude la linea dedicata PB5 (pin 24 della MCU, pin 13 della membrana) verso GND (pin 30 della membrana). Cos\u00ec non pu\u00f2 essere \\\"mascherato\\\" da altri tasti.\",\"en\":\"Not in the matrix: the key pulls the dedicated line PB5 (MCU pin 24, membrane pin 13) to GND (membrane pin 30), so it can never be masked by other keys.\"},\"lamiga\":{\"lines\":[\"PB6\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: il tasto chiude la linea dedicata PB6 (pin 23 della MCU, pin 14 della membrana) verso GND (pin 30 della membrana). Cos\u00ec non pu\u00f2 essere \\\"mascherato\\\" da altri tasti. Fa parte del reset Ctrl+Amiga+Amiga: PB3, PB6 e PB2 vanno anche a una NOR 74LS27; con tutti e tre premuti la NOR va alta, Q1 (BC458C) scarica il trigger del timer HA17555\/NE555 che genera un impulso di reset (~0,5 s) sia sulla linea \/KRESET del cavo (pin 3) sia sul \/RES della 6570 (pin 39), tramite le altre porte della 74LS27.\",\"en\":\"Not in the matrix: the key pulls the dedicated line PB6 (MCU pin 23, membrane pin 14) to GND (membrane pin 30), so it can never be masked by other keys. Part of the Ctrl+Amiga+Amiga reset: PB3, PB6 and PB2 also feed a 74LS27 NOR; with all three held the NOR goes high, Q1 (BC458C) pulls the HA17555\/NE555 trigger and the timer produces a reset pulse (~0.5 s) on both the cable \/KRESET line (pin 3) and the 6570 \/RES (pin 39) through the other 74LS27 gates.\"},\"caps\":{\"lines\":[\"PD6\",\"PA5\"],\"it\":\"Il tasto Caps Lock \u00e8 normale tasto di matrice (PD6 x PA5). Il LED nel tasto \u00e8 alimentato dal pin 9 (+5V) della membrana e chiuso a massa sul pin 31 dal transistor Q2, comandato da PB7 (pin 22). La MCU gestisce da sola il LED: alla prima pressione accende il LED e invia il codice $62 \\\"premuto\\\", alla seconda lo spegne e invia $62 \\\"rilasciato\\\". All'accensione il LED lampeggia in caso di guasto della tastiera: 1 lampeggio ROM, 2 RAM, 3 watchdog (74LS123).\",\"en\":\"Caps Lock is an ordinary matrix key (PD6 x PA5). The LED inside the key is fed from membrane pin 9 (+5V) and switched to ground on pin 31 by transistor Q2, driven by PB7 (pin 22). The MCU handles the LED itself: first press lights it and sends code $62 \\\"down\\\", second press turns it off and sends $62 \\\"up\\\". At power-on the LED blinks a fault code: 1 blink ROM, 2 RAM, 3 watchdog (74LS123).\"}},\"notes_it\":[\"Versione documentata: tastiera Mitsumi a membrana con scheda controller \\\"MTM-4V-0 \/ PCB A-500 \/ 56 A620A\\\" e un solo connettore a 31 pin per la membrana. Esistono anche tastiere A500 pi\u00f9 vecchie con due connettori per la matrice (non documentate qui) e altre marche (es. Chicony\/Mitsumi successive): la matrice logica \u00e8 la stessa, ma la piedinatura del connettore pu\u00f2 cambiare.\",\"La matrice \u00e8 identica su A500, A600 e A1200 (stesso firmware Commodore, stessi codici tasto): cambiano solo le porte della MCU e la numerazione dei connettori.\",\"Le righe PD6-PD0\/PC7-PC0 sono uscite attive basse; le colonne PA2-PA7 hanno pull-up interni. Un gruppo di tasti morti sulla stessa colonna (es. tutti i tasti della fila Q-P) indica la pista PA4\/pin 1 della membrana; un gruppo sulla stessa riga indica una sola linea Y.\",\"Il connettore della scheda madre CN13 porta anche i LED di alimentazione (pin 7) e drive (pin 8) che stanno nel gruppo tastiera.\",\"Geometria dei tasti approssimata (da un PCB sostitutivo per A1200, stessa disposizione dell'A500). Invio \u00e8 a L: il rettangolo \u00e8 quello della parte bassa su due file.\",\"Legende ITA prese da MAME (matrix_it); i tasti Amiga sono indicati con \\\"A\\\".\"],\"notes_en\":[\"Version documented: Mitsumi membrane keyboard with the \\\"MTM-4V-0 \/ PCB A-500 \/ 56 A620A\\\" controller PCB and a single 31-pin membrane connector. Older A500 keyboards with two matrix connectors exist (not documented here), as do other makes; the logical matrix is the same but the connector pinout may differ.\",\"The matrix is the same on the A500, A600 and A1200 (same Commodore firmware, same key codes); only the MCU ports and the connector numbering change.\",\"Rows PD6-PD0\/PC7-PC0 are active-low outputs; columns PA2-PA7 have internal pull-ups. A group of dead keys on one column (e.g. the whole Q-P row) points at the PA4 \/ membrane pin 1 track; a group on one row points at a single Y line.\",\"Motherboard connector CN13 also carries the power (pin 7) and drive (pin 8) LEDs that sit in the keyboard housing.\",\"Key geometry is approximate (taken from an A1200 replacement PCB, same arrangement as the A500). Return is L-shaped: the rectangle is its lower part spanning two rows.\",\"ITA legends taken from MAME (matrix_it); Amiga keys are shown as \\\"A\\\".\"],\"board_it\":\"tastiera Mitsumi con controller MTM-4V-0 (membrana su connettore 31 pin); scheda madre A500 rev. 6A\",\"board_en\":\"Mitsumi keyboard with MTM-4V-0 controller (membrane on a 31-pin connector); A500 rev. 6A motherboard\",\"name_en\":\"Commodore Amiga 500 (Italian keyboard 312502-04)\"},\"a600\":{\"id\":\"a600\",\"name\":\"Commodore Amiga 600 (tastiera ITA, senza tastierino numerico)\",\"sources\":[{\"t\":\"MAME src\/devices\/bus\/amiga\/keyboard\/matrix.cpp (matrice logica ROW0-14 x bit, varianti IT\/US)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/devices\/bus\/amiga\/keyboard\/matrix.cpp\"},{\"t\":\"MAME src\/devices\/bus\/amiga\/keyboard\/mitsumi.cpp (6570-036: righe su PC\/PD, colonne PA2-PA7, modificatori PB0-PB6, LED PB7, KDAT\/KCLK PA0\/PA1, watchdog PD7, reset Ctrl-Amiga-Amiga)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/devices\/bus\/amiga\/keyboard\/mitsumi.cpp\"},{\"t\":\"A600 System Schematics 1992-04 (schema 315987 rev C, foglio 9 \\\"Keyboard\\\"; foglio 7 CIA U7)\",\"u\":\"https:\/\/archive.org\/details\/A600_System_Schematics_1992-04_Commodore\"},{\"t\":\"amiga-stuff.com, piedinatura U13 A600 e collegamenti a CN13\",\"u\":\"https:\/\/amiga-stuff.com\/hardware\/6500_1.html\"},{\"t\":\"A. Eberbach, A600KB (netlist della membrana A600 tracciata, geometria tasti)\",\"u\":\"https:\/\/github.com\/aeberbach\/A600KB\"},{\"t\":\"Amiga Hardware Reference Manual, 3rd ed., cap. Keyboard (protocollo KCLK\/KDAT, codici, Caps Lock)\",\"u\":\"https:\/\/archive.org\/details\/amiga-hardware-reference-manual-3rd-edition\"}],\"scan_it\":\"La tastiera A600 \u00e8 solo una membrana passiva su cavo piatto a 30 vie; il controller \u00e8 sulla scheda madre: U13, MCU 6570-036 (6500\/1) in contenitore PLCC-44, con risonatore 3 MHz Y621. U13 pilota 15 righe (PD6-PD0 e PC7-PC0, CN13 pin 15-29) e legge 5 colonne su PA2-PA6 (CN13 pin 1, 2, 3, 5, 7); la sesta colonna (PA7) del tastierino non esiste. I 7 modificatori hanno linee proprie su PB0-PB6 verso GND (CN13-30). U13 trasmette i codici con PA1 = _KB_CLOCK (pin 41) e PA0 = _KB_DATA (pin 42) al CIA 8520 U7 (CIA-A): CNT pin 44 e SP pin 43, pull-up R511A\/R511B 10k. U13 \u00e8 resettata dal reset di sistema (_RST, pin 43).\",\"scan_en\":\"The A600 keyboard is just a passive membrane on a 30-way flat cable; the controller is on the motherboard: U13, a 6570-036 (6500\/1) MCU in a PLCC-44 package with 3 MHz resonator Y621. U13 drives 15 rows (PD6-PD0 and PC7-PC0, CN13 pins 15-29) and reads 5 columns on PA2-PA6 (CN13 pins 1, 2, 3, 5, 7); the sixth (keypad) column PA7 is not used for keys. The 7 modifiers have their own lines on PB0-PB6 to GND (CN13-30). U13 sends the key codes with PA1 = _KB_CLOCK (pin 41) and PA0 = _KB_DATA (pin 42) to 8520 CIA U7 (CIA-A): CNT pin 44 and SP pin 43, pull-ups R511A\/R511B 10k. U13 is reset by the system reset (_RST, pin 43).\",\"lines\":[{\"id\":\"PD6\",\"group\":\"col\",\"name\":\"ROW0\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"3\",\"conn_pin\":\"15\"},{\"id\":\"PD5\",\"group\":\"col\",\"name\":\"ROW1\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"4\",\"conn_pin\":\"16\"},{\"id\":\"PD4\",\"group\":\"col\",\"name\":\"ROW2\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"6\",\"conn_pin\":\"17\"},{\"id\":\"PD3\",\"group\":\"col\",\"name\":\"ROW3\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"7\",\"conn_pin\":\"18\"},{\"id\":\"PD2\",\"group\":\"col\",\"name\":\"ROW4\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"8\",\"conn_pin\":\"19\"},{\"id\":\"PD1\",\"group\":\"col\",\"name\":\"ROW5\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"9\",\"conn_pin\":\"20\"},{\"id\":\"PD0\",\"group\":\"col\",\"name\":\"ROW6\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"10\",\"conn_pin\":\"21\"},{\"id\":\"PC7\",\"group\":\"col\",\"name\":\"ROW7\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"14\",\"conn_pin\":\"22\"},{\"id\":\"PC6\",\"group\":\"col\",\"name\":\"ROW8\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"15\",\"conn_pin\":\"23\"},{\"id\":\"PC5\",\"group\":\"col\",\"name\":\"ROW9\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"16\",\"conn_pin\":\"24\"},{\"id\":\"PC4\",\"group\":\"col\",\"name\":\"ROW10\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"18\",\"conn_pin\":\"25\"},{\"id\":\"PC3\",\"group\":\"col\",\"name\":\"ROW11\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"19\",\"conn_pin\":\"26\"},{\"id\":\"PC2\",\"group\":\"col\",\"name\":\"ROW12\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"20\",\"conn_pin\":\"27\"},{\"id\":\"PC1\",\"group\":\"col\",\"name\":\"ROW13\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"21\",\"conn_pin\":\"28\"},{\"id\":\"PC0\",\"group\":\"col\",\"name\":\"ROW14\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"22\",\"conn_pin\":\"29\"},{\"id\":\"PA2\",\"group\":\"row\",\"name\":\"COL bit 2\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"40\",\"conn_pin\":\"1\"},{\"id\":\"PA3\",\"group\":\"row\",\"name\":\"COL bit 3\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"38\",\"conn_pin\":\"2\"},{\"id\":\"PA4\",\"group\":\"row\",\"name\":\"COL bit 4\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"37\",\"conn_pin\":\"3\"},{\"id\":\"PA5\",\"group\":\"row\",\"name\":\"COL bit 5\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"36\",\"conn_pin\":\"5\"},{\"id\":\"PA6\",\"group\":\"row\",\"name\":\"COL bit 6\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"35\",\"conn_pin\":\"7\"},{\"id\":\"PB0\",\"group\":\"extra\",\"name\":\"Right Shift\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"32\",\"conn_pin\":\"6\",\"name_it\":\"Shift destro\",\"also_it\":\"tasto dedicato verso GND (CN13-30)\",\"also_en\":\"dedicated key to GND (CN13-30)\"},{\"id\":\"PB1\",\"group\":\"extra\",\"name\":\"Right Alt\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"31\",\"conn_pin\":\"8\",\"name_it\":\"Alt destro\",\"also_it\":\"tasto dedicato verso GND (CN13-30)\",\"also_en\":\"dedicated key to GND (CN13-30)\"},{\"id\":\"PB2\",\"group\":\"extra\",\"name\":\"Right Amiga\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"30\",\"conn_pin\":\"10\",\"name_it\":\"Amiga destro\",\"also_it\":\"tasto dedicato verso GND (CN13-30)\",\"also_en\":\"dedicated key to GND (CN13-30)\"},{\"id\":\"PB3\",\"group\":\"extra\",\"name\":\"Ctrl\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"29\",\"conn_pin\":\"11\",\"also_it\":\"tasto dedicato verso GND (CN13-30)\",\"also_en\":\"dedicated key to GND (CN13-30)\"},{\"id\":\"PB4\",\"group\":\"extra\",\"name\":\"Left Shift\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"28\",\"conn_pin\":\"12\",\"name_it\":\"Shift sinistro\",\"also_it\":\"tasto dedicato verso GND (CN13-30)\",\"also_en\":\"dedicated key to GND (CN13-30)\"},{\"id\":\"PB5\",\"group\":\"extra\",\"name\":\"Left Alt\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"27\",\"conn_pin\":\"13\",\"name_it\":\"Alt sinistro\",\"also_it\":\"tasto dedicato verso GND (CN13-30)\",\"also_en\":\"dedicated key to GND (CN13-30)\"},{\"id\":\"PB6\",\"group\":\"extra\",\"name\":\"Left Amiga\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"26\",\"conn_pin\":\"14\",\"name_it\":\"Amiga sinistro\",\"also_it\":\"tasto dedicato verso GND (CN13-30)\",\"also_en\":\"dedicated key to GND (CN13-30)\"},{\"id\":\"PB7\",\"group\":\"extra\",\"name\":\"CAPS LED\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"25\",\"conn_pin\":\"\",\"also_it\":\"R621 1k -> base Q621 (2N3904); il collettore tramite R622 100 \u03a9 chiude a massa il LED su CN13-4\",\"also_en\":\"R621 1k -> Q621 (2N3904) base; its collector, through R622 100 \u03a9, sinks the LED on CN13-4\"},{\"id\":\"PA7\",\"group\":\"extra\",\"name\":\"CTRL-A-A sense\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"34\",\"conn_pin\":\"\",\"also_it\":\"via R624 al trigger del NE555 U14 (circuito di reset), il firmware lo legge ma non lo usa\",\"also_en\":\"via R624 to the NE555 U14 trigger (reset circuit); read but unused by the firmware\"},{\"id\":\"PA0\",\"group\":\"extra\",\"name\":\"_KB_DATA\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"42\",\"conn_pin\":\"\",\"also_it\":\"-> 8520 U7 (CIA-A) SP pin 43, pull-up R511B 10k\",\"also_en\":\"-> 8520 U7 (CIA-A) SP pin 43, pull-up R511B 10k\"},{\"id\":\"PA1\",\"group\":\"extra\",\"name\":\"_KB_CLOCK\",\"chip\":\"U13\",\"chip_part\":\"6570-036 (6500\/1, PLCC-44)\",\"chip_pin\":\"41\",\"conn_pin\":\"\",\"also_it\":\"-> 8520 U7 (CIA-A) CNT pin 44, pull-up R511A 10k\",\"also_en\":\"-> 8520 U7 (CIA-A) CNT pin 44, pull-up R511A 10k\"}],\"connector\":{\"ref\":\"CN13\",\"it\":\"Connettore membrana tastiera 30 vie (FFC passo 1,25 mm)\",\"en\":\"30-way keyboard membrane connector (1.25 mm pitch FFC)\",\"pins\":[{\"n\":\"1\",\"sig\":\"PA2\",\"note_it\":\"COL bit 2\",\"note_en\":\"COL bit 2\"},{\"n\":\"2\",\"sig\":\"PA3\",\"note_it\":\"COL bit 3\",\"note_en\":\"COL bit 3\"},{\"n\":\"3\",\"sig\":\"PA4\",\"note_it\":\"COL bit 4\",\"note_en\":\"COL bit 4\"},{\"n\":\"4\",\"sig\":\"CAPS_LED\",\"note_it\":\"catodo LED Caps Lock -> R622 100 \u03a9 -> Q621 (comandato da PB7)\",\"note_en\":\"Caps Lock LED cathode -> R622 100 \u03a9 -> Q621 (driven by PB7)\"},{\"n\":\"5\",\"sig\":\"PA5\",\"note_it\":\"COL bit 5\",\"note_en\":\"COL bit 5\"},{\"n\":\"6\",\"sig\":\"PB0\",\"note_it\":\"Shift destro\",\"note_en\":\"Right Shift\"},{\"n\":\"7\",\"sig\":\"PA6\",\"note_it\":\"COL bit 6\",\"note_en\":\"COL bit 6\"},{\"n\":\"8\",\"sig\":\"PB1\",\"note_it\":\"Alt destro\",\"note_en\":\"Right Alt\"},{\"n\":\"9\",\"sig\":\"+5V\",\"note_it\":\"VCC, anodo LED Caps Lock\",\"note_en\":\"VCC, Caps Lock LED anode\"},{\"n\":\"10\",\"sig\":\"PB2\",\"note_it\":\"Amiga destro\",\"note_en\":\"Right Amiga\"},{\"n\":\"11\",\"sig\":\"PB3\",\"note_it\":\"Ctrl\",\"note_en\":\"Ctrl\"},{\"n\":\"12\",\"sig\":\"PB4\",\"note_it\":\"Shift sinistro\",\"note_en\":\"Left Shift\"},{\"n\":\"13\",\"sig\":\"PB5\",\"note_it\":\"Alt sinistro\",\"note_en\":\"Left Alt\"},{\"n\":\"14\",\"sig\":\"PB6\",\"note_it\":\"Amiga sinistro\",\"note_en\":\"Left Amiga\"},{\"n\":\"15\",\"sig\":\"PD6\",\"note_it\":\"ROW0\",\"note_en\":\"ROW0\"},{\"n\":\"16\",\"sig\":\"PD5\",\"note_it\":\"ROW1\",\"note_en\":\"ROW1\"},{\"n\":\"17\",\"sig\":\"PD4\",\"note_it\":\"ROW2\",\"note_en\":\"ROW2\"},{\"n\":\"18\",\"sig\":\"PD3\",\"note_it\":\"ROW3\",\"note_en\":\"ROW3\"},{\"n\":\"19\",\"sig\":\"PD2\",\"note_it\":\"ROW4\",\"note_en\":\"ROW4\"},{\"n\":\"20\",\"sig\":\"PD1\",\"note_it\":\"ROW5\",\"note_en\":\"ROW5\"},{\"n\":\"21\",\"sig\":\"PD0\",\"note_it\":\"ROW6\",\"note_en\":\"ROW6\"},{\"n\":\"22\",\"sig\":\"PC7\",\"note_it\":\"ROW7\",\"note_en\":\"ROW7\"},{\"n\":\"23\",\"sig\":\"PC6\",\"note_it\":\"ROW8\",\"note_en\":\"ROW8\"},{\"n\":\"24\",\"sig\":\"PC5\",\"note_it\":\"ROW9\",\"note_en\":\"ROW9\"},{\"n\":\"25\",\"sig\":\"PC4\",\"note_it\":\"ROW10\",\"note_en\":\"ROW10\"},{\"n\":\"26\",\"sig\":\"PC3\",\"note_it\":\"ROW11\",\"note_en\":\"ROW11\"},{\"n\":\"27\",\"sig\":\"PC2\",\"note_it\":\"ROW12\",\"note_en\":\"ROW12\"},{\"n\":\"28\",\"sig\":\"PC1\",\"note_it\":\"ROW13\",\"note_en\":\"ROW13\"},{\"n\":\"29\",\"sig\":\"PC0\",\"note_it\":\"ROW14\",\"note_en\":\"ROW14\"},{\"n\":\"30\",\"sig\":\"GND\",\"note_it\":\"comune dei modificatori\",\"note_en\":\"modifier common\"}]},\"layout\":[{\"id\":\"esc\",\"t\":\"Esc\",\"x\":0.0,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"f1\",\"t\":\"F1\",\"x\":1.75,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"f2\",\"t\":\"F2\",\"x\":3.0,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"f3\",\"t\":\"F3\",\"x\":4.25,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"f4\",\"t\":\"F4\",\"x\":5.5,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"f5\",\"t\":\"F5\",\"x\":6.75,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"f6\",\"t\":\"F6\",\"x\":8.5,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"f7\",\"t\":\"F7\",\"x\":9.75,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"f8\",\"t\":\"F8\",\"x\":11.0,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"f9\",\"t\":\"F9\",\"x\":12.25,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"f10\",\"t\":\"F10\",\"x\":13.5,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"help\",\"t\":\"Help\",\"x\":15.25,\"y\":0.0,\"w\":1.25,\"h\":1.0},{\"id\":\"grave\",\"t\":\"`\",\"t2\":\"~\",\"x\":0.0,\"y\":1.5,\"w\":1.5,\"h\":1.0},{\"id\":\"n1\",\"t\":\"1\",\"t2\":\"!\",\"x\":1.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"n2\",\"t\":\"2\",\"t2\":\"\\\"\",\"x\":2.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"n3\",\"t\":\"3\",\"t2\":\"\u00a3\",\"x\":3.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"n4\",\"t\":\"4\",\"t2\":\"$\",\"x\":4.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"n5\",\"t\":\"5\",\"t2\":\"%\",\"x\":5.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"n6\",\"t\":\"6\",\"t2\":\"&\",\"x\":6.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"n7\",\"t\":\"7\",\"t2\":\"\/\",\"x\":7.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"n8\",\"t\":\"8\",\"t2\":\"(\",\"x\":8.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"n9\",\"t\":\"9\",\"t2\":\")\",\"x\":9.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"n0\",\"t\":\"0\",\"t2\":\"=\",\"x\":10.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"minus\",\"t\":\"'\",\"t2\":\"?\",\"x\":11.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"equal\",\"t\":\"\u00ec\",\"t2\":\"^\",\"x\":12.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"bslash\",\"t\":\"\\\\\",\"t2\":\"|\",\"x\":13.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"bs\",\"t\":\"\u2190\",\"x\":14.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"del\",\"t\":\"Del\",\"x\":15.5,\"y\":1.5,\"w\":1.0,\"h\":1.0},{\"id\":\"tab\",\"t\":\"Tab\",\"x\":0.0,\"y\":2.5,\"w\":2.0,\"h\":1.0},{\"id\":\"q\",\"t\":\"Q\",\"x\":2.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"w\",\"t\":\"W\",\"x\":3.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"e\",\"t\":\"E\",\"x\":4.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"r\",\"t\":\"R\",\"x\":5.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"t\",\"t\":\"T\",\"x\":6.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"y\",\"t\":\"Y\",\"x\":7.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"u\",\"t\":\"U\",\"x\":8.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"i\",\"t\":\"I\",\"x\":9.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"o\",\"t\":\"O\",\"x\":10.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"p\",\"t\":\"P\",\"x\":11.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"lbr\",\"t\":\"\u00e8\",\"t2\":\"\u00e9\",\"x\":12.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"rbr\",\"t\":\"+\",\"t2\":\"*\",\"x\":13.0,\"y\":2.5,\"w\":1.0,\"h\":1.0},{\"id\":\"ret\",\"t\":\"\u21b5\",\"x\":14.25,\"y\":2.5,\"w\":1.25,\"h\":2},{\"id\":\"ctrl\",\"t\":\"Ctrl\",\"x\":0.0,\"y\":3.5,\"w\":1.25,\"h\":1.0},{\"id\":\"caps\",\"t\":\"Caps Lock\",\"x\":1.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"a\",\"t\":\"A\",\"x\":2.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"s\",\"t\":\"S\",\"x\":3.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"d\",\"t\":\"D\",\"x\":4.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"f\",\"t\":\"F\",\"x\":5.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"g\",\"t\":\"G\",\"x\":6.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"h\",\"t\":\"H\",\"x\":7.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"j\",\"t\":\"J\",\"x\":8.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"k\",\"t\":\"K\",\"x\":9.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"l\",\"t\":\"L\",\"x\":10.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"semi\",\"t\":\"\u00f2\",\"t2\":\"@\",\"x\":11.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"quote\",\"t\":\"\u00e0\",\"t2\":\"#\",\"x\":12.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"hash\",\"t\":\"\u00f9\",\"t2\":\"\u00a7\",\"x\":13.25,\"y\":3.5,\"w\":1.0,\"h\":1.0},{\"id\":\"lshift\",\"t\":\"Shift\",\"x\":0.0,\"y\":4.5,\"w\":1.75,\"h\":1.0},{\"id\":\"lt\",\"t\":\"<\",\"t2\":\">\",\"x\":1.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"z\",\"t\":\"Z\",\"x\":2.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"x\",\"t\":\"X\",\"x\":3.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"c\",\"t\":\"C\",\"x\":4.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"v\",\"t\":\"V\",\"x\":5.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"b\",\"t\":\"B\",\"x\":6.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"n\",\"t\":\"N\",\"x\":7.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"m\",\"t\":\"M\",\"x\":8.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"comma\",\"t\":\",\",\"t2\":\";\",\"x\":9.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"period\",\"t\":\".\",\"t2\":\":\",\"x\":10.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"slash\",\"t\":\"-\",\"t2\":\"_\",\"x\":11.75,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"rshift\",\"t\":\"Shift\",\"x\":12.75,\"y\":4.5,\"w\":1.75,\"h\":1.0},{\"id\":\"up\",\"t\":\"\u2191\",\"x\":14.5,\"y\":4.5,\"w\":1.0,\"h\":1.0},{\"id\":\"lalt\",\"t\":\"Alt\",\"x\":0.5,\"y\":5.5,\"w\":1.25,\"h\":1.0},{\"id\":\"lamiga\",\"t\":\"A\",\"x\":1.75,\"y\":5.5,\"w\":1.25,\"h\":1.0},{\"id\":\"space\",\"t\":\"\",\"x\":3.0,\"y\":5.5,\"w\":8.25,\"h\":1},{\"id\":\"ramiga\",\"t\":\"A\",\"x\":11.25,\"y\":5.5,\"w\":1.25,\"h\":1.0},{\"id\":\"ralt\",\"t\":\"Alt\",\"x\":12.5,\"y\":5.5,\"w\":1.0,\"h\":1.0},{\"id\":\"left\",\"t\":\"\u2190\",\"x\":13.5,\"y\":5.5,\"w\":1.0,\"h\":1.0},{\"id\":\"down\",\"t\":\"\u2193\",\"x\":14.5,\"y\":5.5,\"w\":1.0,\"h\":1.0},{\"id\":\"right\",\"t\":\"\u2192\",\"x\":15.5,\"y\":5.5,\"w\":1.0,\"h\":1.0}],\"matrix\":{\"esc\":[\"PD6\",\"PA2\"],\"grave\":[\"PD6\",\"PA3\"],\"tab\":[\"PD6\",\"PA4\"],\"caps\":[\"PD6\",\"PA5\"],\"lt\":[\"PD6\",\"PA6\"],\"n1\":[\"PD5\",\"PA3\"],\"q\":[\"PD5\",\"PA4\"],\"a\":[\"PD5\",\"PA5\"],\"z\":[\"PD5\",\"PA6\"],\"f1\":[\"PD4\",\"PA2\"],\"n2\":[\"PD4\",\"PA3\"],\"w\":[\"PD4\",\"PA4\"],\"s\":[\"PD4\",\"PA5\"],\"x\":[\"PD4\",\"PA6\"],\"f2\":[\"PD3\",\"PA2\"],\"n3\":[\"PD3\",\"PA3\"],\"e\":[\"PD3\",\"PA4\"],\"d\":[\"PD3\",\"PA5\"],\"c\":[\"PD3\",\"PA6\"],\"f3\":[\"PD2\",\"PA2\"],\"n4\":[\"PD2\",\"PA3\"],\"r\":[\"PD2\",\"PA4\"],\"f\":[\"PD2\",\"PA5\"],\"v\":[\"PD2\",\"PA6\"],\"f4\":[\"PD1\",\"PA2\"],\"n5\":[\"PD1\",\"PA3\"],\"t\":[\"PD1\",\"PA4\"],\"g\":[\"PD1\",\"PA5\"],\"b\":[\"PD1\",\"PA6\"],\"f5\":[\"PD0\",\"PA2\"],\"n6\":[\"PD0\",\"PA3\"],\"y\":[\"PD0\",\"PA4\"],\"h\":[\"PD0\",\"PA5\"],\"n\":[\"PD0\",\"PA6\"],\"n7\":[\"PC7\",\"PA3\"],\"u\":[\"PC7\",\"PA4\"],\"j\":[\"PC7\",\"PA5\"],\"m\":[\"PC7\",\"PA6\"],\"f6\":[\"PC6\",\"PA2\"],\"n8\":[\"PC6\",\"PA3\"],\"i\":[\"PC6\",\"PA4\"],\"k\":[\"PC6\",\"PA5\"],\"comma\":[\"PC6\",\"PA6\"],\"n9\":[\"PC5\",\"PA3\"],\"o\":[\"PC5\",\"PA4\"],\"l\":[\"PC5\",\"PA5\"],\"period\":[\"PC5\",\"PA6\"],\"f7\":[\"PC4\",\"PA2\"],\"n0\":[\"PC4\",\"PA3\"],\"p\":[\"PC4\",\"PA4\"],\"semi\":[\"PC4\",\"PA5\"],\"slash\":[\"PC4\",\"PA6\"],\"f8\":[\"PC3\",\"PA2\"],\"minus\":[\"PC3\",\"PA3\"],\"lbr\":[\"PC3\",\"PA4\"],\"quote\":[\"PC3\",\"PA5\"],\"f9\":[\"PC2\",\"PA2\"],\"equal\":[\"PC2\",\"PA3\"],\"rbr\":[\"PC2\",\"PA4\"],\"hash\":[\"PC2\",\"PA5\"],\"space\":[\"PC2\",\"PA6\"],\"f10\":[\"PC1\",\"PA2\"],\"bslash\":[\"PC1\",\"PA3\"],\"ret\":[\"PC1\",\"PA4\"],\"del\":[\"PC1\",\"PA5\"],\"bs\":[\"PC1\",\"PA6\"],\"help\":[\"PC0\",\"PA2\"],\"up\":[\"PC0\",\"PA3\"],\"left\":[\"PC0\",\"PA4\"],\"right\":[\"PC0\",\"PA5\"],\"down\":[\"PC0\",\"PA6\"]},\"special\":{\"rshift\":{\"lines\":[\"PB0\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: chiude la linea dedicata PB0 (U13 pin 32, CN13 pin 6) verso GND (CN13 pin 30).\",\"en\":\"Not in the matrix: pulls the dedicated line PB0 (U13 pin 32, CN13 pin 6) to GND (CN13 pin 30).\"},\"ralt\":{\"lines\":[\"PB1\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: chiude la linea dedicata PB1 (U13 pin 31, CN13 pin 8) verso GND (CN13 pin 30).\",\"en\":\"Not in the matrix: pulls the dedicated line PB1 (U13 pin 31, CN13 pin 8) to GND (CN13 pin 30).\"},\"ramiga\":{\"lines\":[\"PB2\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: chiude la linea dedicata PB2 (U13 pin 30, CN13 pin 10) verso GND (CN13 pin 30). Reset Ctrl+Amiga+Amiga in hardware: CN13 pin 10, 11 e 14 (Amiga destro, Ctrl, Amiga sinistro) vanno anche alla NOR a 3 ingressi 74F27 U36 (pin 13\/1\/2, uscita pin 12); con i tre tasti premuti Q622 porta basso il trigger del NE555 U14 (pin 2), che genera l'impulso di reset; l'uscita (pin 3) tramite Q511 porta basso _KB_RESET. Lo stesso 555 fa anche il reset all'accensione.\",\"en\":\"Not in the matrix: pulls the dedicated line PB2 (U13 pin 30, CN13 pin 10) to GND (CN13 pin 30). Hardware Ctrl+Amiga+Amiga reset: CN13 pins 10, 11 and 14 (Right Amiga, Ctrl, Left Amiga) also feed the 3-input NOR 74F27 U36 (pins 13\/1\/2, output pin 12); with all three held, Q622 pulls the NE555 U14 trigger (pin 2) low and the timer produces the reset pulse; its output (pin 3) drives _KB_RESET low through Q511. The same 555 also does the power-on reset.\"},\"ctrl\":{\"lines\":[\"PB3\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: chiude la linea dedicata PB3 (U13 pin 29, CN13 pin 11) verso GND (CN13 pin 30). Reset Ctrl+Amiga+Amiga in hardware: CN13 pin 10, 11 e 14 (Amiga destro, Ctrl, Amiga sinistro) vanno anche alla NOR a 3 ingressi 74F27 U36 (pin 13\/1\/2, uscita pin 12); con i tre tasti premuti Q622 porta basso il trigger del NE555 U14 (pin 2), che genera l'impulso di reset; l'uscita (pin 3) tramite Q511 porta basso _KB_RESET. Lo stesso 555 fa anche il reset all'accensione.\",\"en\":\"Not in the matrix: pulls the dedicated line PB3 (U13 pin 29, CN13 pin 11) to GND (CN13 pin 30). Hardware Ctrl+Amiga+Amiga reset: CN13 pins 10, 11 and 14 (Right Amiga, Ctrl, Left Amiga) also feed the 3-input NOR 74F27 U36 (pins 13\/1\/2, output pin 12); with all three held, Q622 pulls the NE555 U14 trigger (pin 2) low and the timer produces the reset pulse; its output (pin 3) drives _KB_RESET low through Q511. The same 555 also does the power-on reset.\"},\"lshift\":{\"lines\":[\"PB4\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: chiude la linea dedicata PB4 (U13 pin 28, CN13 pin 12) verso GND (CN13 pin 30).\",\"en\":\"Not in the matrix: pulls the dedicated line PB4 (U13 pin 28, CN13 pin 12) to GND (CN13 pin 30).\"},\"lalt\":{\"lines\":[\"PB5\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: chiude la linea dedicata PB5 (U13 pin 27, CN13 pin 13) verso GND (CN13 pin 30).\",\"en\":\"Not in the matrix: pulls the dedicated line PB5 (U13 pin 27, CN13 pin 13) to GND (CN13 pin 30).\"},\"lamiga\":{\"lines\":[\"PB6\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: chiude la linea dedicata PB6 (U13 pin 26, CN13 pin 14) verso GND (CN13 pin 30). Reset Ctrl+Amiga+Amiga in hardware: CN13 pin 10, 11 e 14 (Amiga destro, Ctrl, Amiga sinistro) vanno anche alla NOR a 3 ingressi 74F27 U36 (pin 13\/1\/2, uscita pin 12); con i tre tasti premuti Q622 porta basso il trigger del NE555 U14 (pin 2), che genera l'impulso di reset; l'uscita (pin 3) tramite Q511 porta basso _KB_RESET. Lo stesso 555 fa anche il reset all'accensione.\",\"en\":\"Not in the matrix: pulls the dedicated line PB6 (U13 pin 26, CN13 pin 14) to GND (CN13 pin 30). Hardware Ctrl+Amiga+Amiga reset: CN13 pins 10, 11 and 14 (Right Amiga, Ctrl, Left Amiga) also feed the 3-input NOR 74F27 U36 (pins 13\/1\/2, output pin 12); with all three held, Q622 pulls the NE555 U14 trigger (pin 2) low and the timer produces the reset pulse; its output (pin 3) drives _KB_RESET low through Q511. The same 555 also does the power-on reset.\"},\"caps\":{\"lines\":[\"PD6\",\"PA5\"],\"it\":\"Caps Lock \u00e8 un normale tasto di matrice (PD6 x PA5). Il LED nel tasto sta tra CN13 pin 9 (+5V) e pin 4; PB7 (U13 pin 25) tramite R621 accende Q621 che, con R622 da 100 \u03a9, chiude il LED a massa. Il LED \u00e8 gestito dalla MCU (codice $62 premuto\/rilasciato a ogni cambio di stato).\",\"en\":\"Caps Lock is an ordinary matrix key (PD6 x PA5). The LED in the key sits between CN13 pin 9 (+5V) and pin 4; PB7 (U13 pin 25) turns on Q621 through R621, which sinks the LED to ground through R622 (100 \u03a9). The MCU handles the LED (code $62 down\/up on each change of state).\"}},\"notes_it\":[\"Stessa matrice logica di A500 e A1200, ma la membrana A600 ha i pin delle colonne in ordine diverso dalla A1200 (A600: PA2-PA6 su 1,2,3,5,7; LED su pin 4).\",\"Il connettore CN14 (4 pin, \\\"KB LEDS\\\") porta i LED alimentazione\/drive\/IDE alla piastrina LED, non fa parte della membrana.\",\"La linea _KB_RESET \u00e8 generata dal NE555 U14 + Q511: niente reset tenendo basso KCLK e niente \\\"reset warning\\\" su questo modello.\",\"Geometria approssimata da un PCB sostitutivo (Eberbach A600KB); barra spaziatrice estesa tra i due tasti Amiga. Invio a L: rettangolo della parte bassa.\",\"Legende ITA prese da MAME (matrix_it); i tasti Amiga sono indicati con \\\"A\\\".\"],\"notes_en\":[\"Same logical matrix as the A500 and A1200, but the A600 membrane has the column pins in a different order from the A1200 (A600: PA2-PA6 on 1,2,3,5,7; LED on pin 4).\",\"Connector CN14 (4-pin, \\\"KB LEDS\\\") carries the power\/drive\/IDE LEDs to the LED board; it is not part of the membrane.\",\"_KB_RESET is generated by NE555 U14 + Q511: no reset by holding KCLK low and no reset warning on this model.\",\"Key geometry approximated from a replacement PCB (Eberbach A600KB); space bar stretched between the two Amiga keys. Return is L-shaped: the rectangle is its lower part.\",\"ITA legends taken from MAME (matrix_it); Amiga keys are shown as \\\"A\\\".\"],\"board_it\":\"scheda A600 315987 rev. C (U13, CN13, U14, U36)\",\"board_en\":\"A600 board 315987 rev. C (U13, CN13, U14, U36)\",\"name_en\":\"Commodore Amiga 600 (Italian keyboard, no keypad)\"},\"atari400\":{\"id\":\"atari400\",\"name\":\"Atari 400\",\"sources\":[{\"t\":\"Atari 400\/800 Field Service Manual (Updated): \u00a74.3.2-4.3.3, \u00a75.4.5, fig. 4-3, 4-5a\/b, 4-8a\/b\",\"u\":\"http:\/\/atariverse.com\/files\/technical\/Atari%20400-800%20Field%20Service%20Manual%20(Updated).pdf\"},{\"t\":\"Altirra Hardware Reference Manual (Avery Lee): \u00a72.4 System Reset, \u00a75.8 Keyboard scan, CONSOL\",\"u\":\"https:\/\/www.virtualdub.org\/downloads\/Altirra%20Hardware%20Reference%20Manual.pdf\"},{\"t\":\"MAME src\/mame\/atari\/atari400.cpp (INPUT_PORTS atari_keyboard, atari_console)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/mame\/atari\/atari400.cpp\"},{\"t\":\"Wikipedia: POKEY (pin assignment K0-K5, KR1, KR2)\",\"u\":\"https:\/\/en.wikipedia.org\/wiki\/POKEY\"}],\"scan_it\":\"Il POKEY (A101) conta da 0 a 63 sulle uscite K0-K5 (pin 23-18). K3-K5 (pin 20, 19, 18) vanno agli ingressi A, B, C (pin 11, 10, 9) del 4051 Z102 \\\"Key Out\\\", che ha il comune X (pin 3) a massa: l'uscita selezionata KO0-KO7 viene portata a massa. K0-K2 (pin 23, 22, 21) vanno ad A, B, C del 4051 Z101 \\\"Key In\\\", che collega una delle righe KI0-KI7 al suo comune X (pin 3) e quindi a KR1 (pin 25, pull-up 47 k\u03a9). Un tasto premuto unisce una KO e una KI: quando il conteggio seleziona proprio quella coppia KR1 va basso e il valore K5-K0 diventa il codice tasto (K5-K3 = numero della KO, K2-K0 = numero della KI). Per questo ogni tasto \u00e8 indicato con le due piste fisiche che chiude sul connettore J105 (KOn e KIm), cio\u00e8 quelle che si seguono con il tester; CTRL, SHIFT e BREAK chiudono invece una KO su KR2 (pin 9 del connettore, pin 16 del POKEY). Entrambi i 4051 sono sulla motherboard: la tastiera \u00e8 una matrice passiva senza diodi.\",\"scan_en\":\"POKEY (A101) counts 0 to 63 on its K0-K5 outputs (pins 23-18). K3-K5 (pins 20, 19, 18) drive inputs A, B, C (pins 11, 10, 9) of 4051 Z102 \\\"Key Out\\\", whose common X (pin 3) is grounded, so the selected output KO0-KO7 is pulled to ground. K0-K2 (pins 23, 22, 21) drive A, B, C of 4051 Z101 \\\"Key In\\\", which connects one of the rows KI0-KI7 to its common X (pin 3) and so to KR1 (pin 25, 47 k\u03a9 pull-up). A pressed key joins one KO to one KI: when the count selects that pair, KR1 goes low and the K5-K0 value becomes the key code (K5-K3 = KO number, K2-K0 = KI number). So each key is shown as the two physical tracks it shorts on connector J105 (KOn and KIm), which are the ones you follow with a meter; CTRL, SHIFT and BREAK instead short a KO line to KR2 (connector pin 9, POKEY pin 16). Both 4051s are on the motherboard: the keyboard is a passive matrix with no diodes.\",\"lines\":[{\"id\":\"KO0\",\"group\":\"col\",\"name\":\"KEY OUT X0\",\"chip\":\"Z102\",\"chip_part\":\"CD4051 (Key Out)\",\"chip_pin\":\"13\",\"conn_pin\":\"6\",\"also_it\":\"attiva (a massa) quando K5-K3 = 000, codici $00-$07\",\"also_en\":\"pulled to ground when K5-K3 = 000, scan codes $00-$07\"},{\"id\":\"KO1\",\"group\":\"col\",\"name\":\"KEY OUT X1\",\"chip\":\"Z102\",\"chip_part\":\"CD4051 (Key Out)\",\"chip_pin\":\"14\",\"conn_pin\":\"1\",\"also_it\":\"attiva (a massa) quando K5-K3 = 001, codici $08-$0F\",\"also_en\":\"pulled to ground when K5-K3 = 001, scan codes $08-$0F\"},{\"id\":\"KO2\",\"group\":\"col\",\"name\":\"KEY OUT X2\",\"chip\":\"Z102\",\"chip_part\":\"CD4051 (Key Out)\",\"chip_pin\":\"15\",\"conn_pin\":\"4\",\"also_it\":\"attiva (a massa) quando K5-K3 = 010, codici $10-$17\",\"also_en\":\"pulled to ground when K5-K3 = 010, scan codes $10-$17\"},{\"id\":\"KO3\",\"group\":\"col\",\"name\":\"KEY OUT X3\",\"chip\":\"Z102\",\"chip_part\":\"CD4051 (Key Out)\",\"chip_pin\":\"12\",\"conn_pin\":\"7\",\"also_it\":\"attiva (a massa) quando K5-K3 = 011, codici $18-$1F\",\"also_en\":\"pulled to ground when K5-K3 = 011, scan codes $18-$1F\"},{\"id\":\"KO4\",\"group\":\"col\",\"name\":\"KEY OUT X4\",\"chip\":\"Z102\",\"chip_part\":\"CD4051 (Key Out)\",\"chip_pin\":\"1\",\"conn_pin\":\"2\",\"also_it\":\"attiva (a massa) quando K5-K3 = 100, codici $20-$27\",\"also_en\":\"pulled to ground when K5-K3 = 100, scan codes $20-$27\"},{\"id\":\"KO5\",\"group\":\"col\",\"name\":\"KEY OUT X5\",\"chip\":\"Z102\",\"chip_part\":\"CD4051 (Key Out)\",\"chip_pin\":\"5\",\"conn_pin\":\"8\",\"also_it\":\"attiva (a massa) quando K5-K3 = 101, codici $28-$2F\",\"also_en\":\"pulled to ground when K5-K3 = 101, scan codes $28-$2F\"},{\"id\":\"KO6\",\"group\":\"col\",\"name\":\"KEY OUT X6\",\"chip\":\"Z102\",\"chip_part\":\"CD4051 (Key Out)\",\"chip_pin\":\"2\",\"conn_pin\":\"3\",\"also_it\":\"attiva (a massa) quando K5-K3 = 110, codici $30-$37\",\"also_en\":\"pulled to ground when K5-K3 = 110, scan codes $30-$37\"},{\"id\":\"KO7\",\"group\":\"col\",\"name\":\"KEY OUT X7\",\"chip\":\"Z102\",\"chip_part\":\"CD4051 (Key Out)\",\"chip_pin\":\"4\",\"conn_pin\":\"5\",\"also_it\":\"attiva (a massa) quando K5-K3 = 111, codici $38-$3F\",\"also_en\":\"pulled to ground when K5-K3 = 111, scan codes $38-$3F\"},{\"id\":\"KI0\",\"group\":\"row\",\"name\":\"KEY IN X0\",\"chip\":\"Z101\",\"chip_part\":\"CD4051 (Key In)\",\"chip_pin\":\"13\",\"conn_pin\":\"16\",\"also_it\":\"letta su KR1 (POKEY pin 25) quando K2-K0 = 000\",\"also_en\":\"read on KR1 (POKEY pin 25) when K2-K0 = 000\"},{\"id\":\"KI1\",\"group\":\"row\",\"name\":\"KEY IN X1\",\"chip\":\"Z101\",\"chip_part\":\"CD4051 (Key In)\",\"chip_pin\":\"14\",\"conn_pin\":\"15\",\"also_it\":\"letta su KR1 (POKEY pin 25) quando K2-K0 = 001\",\"also_en\":\"read on KR1 (POKEY pin 25) when K2-K0 = 001\"},{\"id\":\"KI2\",\"group\":\"row\",\"name\":\"KEY IN X2\",\"chip\":\"Z101\",\"chip_part\":\"CD4051 (Key In)\",\"chip_pin\":\"15\",\"conn_pin\":\"12\",\"also_it\":\"letta su KR1 (POKEY pin 25) quando K2-K0 = 010\",\"also_en\":\"read on KR1 (POKEY pin 25) when K2-K0 = 010\"},{\"id\":\"KI3\",\"group\":\"row\",\"name\":\"KEY IN X3\",\"chip\":\"Z101\",\"chip_part\":\"CD4051 (Key In)\",\"chip_pin\":\"12\",\"conn_pin\":\"17\",\"also_it\":\"letta su KR1 (POKEY pin 25) quando K2-K0 = 011\",\"also_en\":\"read on KR1 (POKEY pin 25) when K2-K0 = 011\"},{\"id\":\"KI4\",\"group\":\"row\",\"name\":\"KEY IN X4\",\"chip\":\"Z101\",\"chip_part\":\"CD4051 (Key In)\",\"chip_pin\":\"1\",\"conn_pin\":\"10\",\"also_it\":\"letta su KR1 (POKEY pin 25) quando K2-K0 = 100\",\"also_en\":\"read on KR1 (POKEY pin 25) when K2-K0 = 100\"},{\"id\":\"KI5\",\"group\":\"row\",\"name\":\"KEY IN X5\",\"chip\":\"Z101\",\"chip_part\":\"CD4051 (Key In)\",\"chip_pin\":\"5\",\"conn_pin\":\"14\",\"also_it\":\"letta su KR1 (POKEY pin 25) quando K2-K0 = 101\",\"also_en\":\"read on KR1 (POKEY pin 25) when K2-K0 = 101\"},{\"id\":\"KI6\",\"group\":\"row\",\"name\":\"KEY IN X6\",\"chip\":\"Z101\",\"chip_part\":\"CD4051 (Key In)\",\"chip_pin\":\"2\",\"conn_pin\":\"11\",\"also_it\":\"letta su KR1 (POKEY pin 25) quando K2-K0 = 110\",\"also_en\":\"read on KR1 (POKEY pin 25) when K2-K0 = 110\"},{\"id\":\"KI7\",\"group\":\"row\",\"name\":\"KEY IN X7\",\"chip\":\"Z101\",\"chip_part\":\"CD4051 (Key In)\",\"chip_pin\":\"4\",\"conn_pin\":\"13\",\"also_it\":\"letta su KR1 (POKEY pin 25) quando K2-K0 = 111\",\"also_en\":\"read on KR1 (POKEY pin 25) when K2-K0 = 111\"},{\"id\":\"KR2\",\"group\":\"row\",\"name\":\"KR2\",\"chip\":\"A101\",\"chip_part\":\"POKEY C012294\",\"chip_pin\":\"16\",\"conn_pin\":\"9\",\"also_it\":\"solo CTRL, SHIFT, BREAK; pull-up 47 k\u03a9\",\"also_en\":\"CTRL, SHIFT and BREAK only; 47 k\u03a9 pull-up\"},{\"id\":\"S0\",\"group\":\"extra\",\"name\":\"START\",\"chip\":\"A301\",\"chip_part\":\"CTIA C012295 \/ GTIA (CPU board)\",\"chip_pin\":\"12\",\"conn_pin\":\"21\",\"also_it\":\"bit 0 di CONSOL; scheda CPU, via J110 pin 17\",\"also_en\":\"CONSOL bit 0; CPU board, via J110 pin 17\"},{\"id\":\"S1\",\"group\":\"extra\",\"name\":\"SELECT\",\"chip\":\"A301\",\"chip_part\":\"CTIA C012295 \/ GTIA (CPU board)\",\"chip_pin\":\"13\",\"conn_pin\":\"20\",\"also_it\":\"bit 1 di CONSOL; scheda CPU, via J110 pin 11\",\"also_en\":\"CONSOL bit 1; CPU board, via J110 pin 11\"},{\"id\":\"S2\",\"group\":\"extra\",\"name\":\"OPTION\",\"chip\":\"A301\",\"chip_part\":\"CTIA C012295 \/ GTIA (CPU board)\",\"chip_pin\":\"14\",\"conn_pin\":\"19\",\"also_it\":\"bit 2 di CONSOL; scheda CPU, via J110 pin R\",\"also_en\":\"CONSOL bit 2; CPU board, via J110 pin R\"},{\"id\":\"RNMI\",\"group\":\"extra\",\"name\":\"SYSTEM RESET\",\"chip\":\"A302\",\"chip_part\":\"ANTIC C012296 (CPU board)\",\"chip_pin\":\"6\",\"conn_pin\":\"18\",\"also_it\":\"ingresso \/RNMI di ANTIC -> NMI; scheda CPU, via J110 pin Z\",\"also_en\":\"ANTIC \/RNMI input -> NMI; CPU board, via J110 pin Z\"}],\"connector\":{\"ref\":\"J105\",\"it\":\"Connettore tastiera 22 pin sulla motherboard (coda della membrana)\",\"en\":\"22-pin keyboard connector on the motherboard (membrane tail)\",\"pins\":[{\"n\":\"1\",\"sig\":\"KO1\"},{\"n\":\"2\",\"sig\":\"KO4\"},{\"n\":\"3\",\"sig\":\"KO6\"},{\"n\":\"4\",\"sig\":\"KO2\"},{\"n\":\"5\",\"sig\":\"KO7\"},{\"n\":\"6\",\"sig\":\"KO0\"},{\"n\":\"7\",\"sig\":\"KO3\"},{\"n\":\"8\",\"sig\":\"KO5\"},{\"n\":\"9\",\"sig\":\"KR2\"},{\"n\":\"10\",\"sig\":\"KI4\"},{\"n\":\"11\",\"sig\":\"KI6\"},{\"n\":\"12\",\"sig\":\"KI2\"},{\"n\":\"13\",\"sig\":\"KI7\"},{\"n\":\"14\",\"sig\":\"KI5\"},{\"n\":\"15\",\"sig\":\"KI1\"},{\"n\":\"16\",\"sig\":\"KI0\"},{\"n\":\"17\",\"sig\":\"KI3\"},{\"n\":\"18\",\"sig\":\"RNMI\",\"note_it\":\"tasto SYSTEM RESET, verso scheda CPU\",\"note_en\":\"SYSTEM RESET key, to CPU board\"},{\"n\":\"19\",\"sig\":\"S2\",\"note_it\":\"tasto OPTION, verso scheda CPU\",\"note_en\":\"OPTION key, to CPU board\"},{\"n\":\"20\",\"sig\":\"S1\",\"note_it\":\"tasto SELECT, verso scheda CPU\",\"note_en\":\"SELECT key, to CPU board\"},{\"n\":\"21\",\"sig\":\"S0\",\"note_it\":\"tasto START, verso scheda CPU\",\"note_en\":\"START key, to CPU board\"},{\"n\":\"22\",\"sig\":\"GND\",\"note_it\":\"comune dei tasti console\",\"note_en\":\"common for the console keys\"}]},\"layout\":[{\"id\":\"esc\",\"t\":\"ESC\",\"x\":0,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"1\",\"t\":\"1\",\"t2\":\"!\",\"x\":1,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"2\",\"t\":\"2\",\"t2\":\"\\\"\",\"x\":2,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"3\",\"t\":\"3\",\"t2\":\"#\",\"x\":3,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"4\",\"t\":\"4\",\"t2\":\"$\",\"x\":4,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"5\",\"t\":\"5\",\"t2\":\"%\",\"x\":5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"6\",\"t\":\"6\",\"t2\":\"&\",\"x\":6,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"7\",\"t\":\"7\",\"t2\":\"'\",\"x\":7,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"8\",\"t\":\"8\",\"t2\":\"@\",\"x\":8,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"9\",\"t\":\"9\",\"t2\":\"(\",\"x\":9,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"0\",\"t\":\"0\",\"t2\":\")\",\"x\":10,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"lt\",\"t\":\"<\",\"t2\":\"CLEAR\",\"x\":11,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"gt\",\"t\":\">\",\"t2\":\"INSERT\",\"x\":12,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"bksp\",\"t\":\"BACK S\",\"t2\":\"DELETE\",\"x\":13,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"break\",\"t\":\"BREAK\",\"x\":14,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"tab\",\"t\":\"TAB\",\"t2\":\"SET CLR\",\"x\":0,\"y\":1,\"w\":1.5,\"h\":1},{\"id\":\"q\",\"t\":\"Q\",\"x\":1.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"w\",\"t\":\"W\",\"x\":2.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"e\",\"t\":\"E\",\"x\":3.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"r\",\"t\":\"R\",\"x\":4.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"t\",\"t\":\"T\",\"x\":5.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"y\",\"t\":\"Y\",\"x\":6.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"u\",\"t\":\"U\",\"x\":7.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"i\",\"t\":\"I\",\"x\":8.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"o\",\"t\":\"O\",\"x\":9.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"p\",\"t\":\"P\",\"x\":10.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"minus\",\"t\":\"-\",\"t2\":\"_\",\"x\":11.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"equal\",\"t\":\"=\",\"t2\":\"|\",\"x\":12.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"return\",\"t\":\"RETURN\",\"x\":13.5,\"y\":1,\"w\":1.5,\"h\":1},{\"id\":\"ctrl\",\"t\":\"CTRL\",\"x\":0,\"y\":2,\"w\":1.75,\"h\":1},{\"id\":\"a\",\"t\":\"A\",\"x\":1.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"s\",\"t\":\"S\",\"x\":2.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"d\",\"t\":\"D\",\"x\":3.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"f\",\"t\":\"F\",\"x\":4.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"g\",\"t\":\"G\",\"x\":5.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"h\",\"t\":\"H\",\"x\":6.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"j\",\"t\":\"J\",\"x\":7.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"k\",\"t\":\"K\",\"x\":8.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"l\",\"t\":\"L\",\"x\":9.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"semicolon\",\"t\":\";\",\"t2\":\":\",\"x\":10.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"plus\",\"t\":\"+\",\"t2\":\"\\\\\",\"x\":11.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"star\",\"t\":\"*\",\"t2\":\"^\",\"x\":12.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"caps\",\"t\":\"CAPS\",\"t2\":\"LOWR\",\"x\":13.75,\"y\":2,\"w\":1.25,\"h\":1},{\"id\":\"lshift\",\"t\":\"SHIFT\",\"x\":0,\"y\":3,\"w\":2.25,\"h\":1},{\"id\":\"z\",\"t\":\"Z\",\"x\":2.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"x\",\"t\":\"X\",\"x\":3.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"c\",\"t\":\"C\",\"x\":4.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"v\",\"t\":\"V\",\"x\":5.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"b\",\"t\":\"B\",\"x\":6.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"n\",\"t\":\"N\",\"x\":7.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"m\",\"t\":\"M\",\"x\":8.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"comma\",\"t\":\",\",\"t2\":\"[\",\"x\":9.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"period\",\"t\":\".\",\"t2\":\"]\",\"x\":10.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"slash\",\"t\":\"\/\",\"t2\":\"?\",\"x\":11.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"rshift\",\"t\":\"SHIFT\",\"x\":12.25,\"y\":3,\"w\":1.75,\"h\":1},{\"id\":\"atari\",\"t\":\"ATARI\",\"t2\":\"INV\",\"x\":14,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"space\",\"t\":\"SPACE\",\"x\":3,\"y\":4,\"w\":9,\"h\":1},{\"id\":\"reset\",\"t\":\"SYSTEM RESET\",\"x\":15.75,\"y\":0,\"w\":1.75,\"h\":1},{\"id\":\"option\",\"t\":\"OPTION\",\"x\":15.75,\"y\":1,\"w\":1.75,\"h\":1},{\"id\":\"select\",\"t\":\"SELECT\",\"x\":15.75,\"y\":2,\"w\":1.75,\"h\":1},{\"id\":\"start\",\"t\":\"START\",\"x\":15.75,\"y\":3,\"w\":1.75,\"h\":1}],\"matrix\":{\"l\":[\"KO0\",\"KI0\"],\"j\":[\"KO0\",\"KI1\"],\"semicolon\":[\"KO0\",\"KI2\"],\"k\":[\"KO0\",\"KI5\"],\"plus\":[\"KO0\",\"KI6\"],\"star\":[\"KO0\",\"KI7\"],\"o\":[\"KO1\",\"KI0\"],\"p\":[\"KO1\",\"KI2\"],\"u\":[\"KO1\",\"KI3\"],\"return\":[\"KO1\",\"KI4\"],\"i\":[\"KO1\",\"KI5\"],\"minus\":[\"KO1\",\"KI6\"],\"equal\":[\"KO1\",\"KI7\"],\"v\":[\"KO2\",\"KI0\"],\"c\":[\"KO2\",\"KI2\"],\"b\":[\"KO2\",\"KI5\"],\"x\":[\"KO2\",\"KI6\"],\"z\":[\"KO2\",\"KI7\"],\"4\":[\"KO3\",\"KI0\"],\"3\":[\"KO3\",\"KI2\"],\"6\":[\"KO3\",\"KI3\"],\"esc\":[\"KO3\",\"KI4\"],\"5\":[\"KO3\",\"KI5\"],\"2\":[\"KO3\",\"KI6\"],\"1\":[\"KO3\",\"KI7\"],\"comma\":[\"KO4\",\"KI0\"],\"space\":[\"KO4\",\"KI1\"],\"period\":[\"KO4\",\"KI2\"],\"n\":[\"KO4\",\"KI3\"],\"m\":[\"KO4\",\"KI5\"],\"slash\":[\"KO4\",\"KI6\"],\"atari\":[\"KO4\",\"KI7\"],\"r\":[\"KO5\",\"KI0\"],\"e\":[\"KO5\",\"KI2\"],\"y\":[\"KO5\",\"KI3\"],\"tab\":[\"KO5\",\"KI4\"],\"t\":[\"KO5\",\"KI5\"],\"w\":[\"KO5\",\"KI6\"],\"q\":[\"KO5\",\"KI7\"],\"9\":[\"KO6\",\"KI0\"],\"0\":[\"KO6\",\"KI2\"],\"7\":[\"KO6\",\"KI3\"],\"bksp\":[\"KO6\",\"KI4\"],\"8\":[\"KO6\",\"KI5\"],\"lt\":[\"KO6\",\"KI6\"],\"gt\":[\"KO6\",\"KI7\"],\"f\":[\"KO7\",\"KI0\"],\"h\":[\"KO7\",\"KI1\"],\"d\":[\"KO7\",\"KI2\"],\"caps\":[\"KO7\",\"KI4\"],\"g\":[\"KO7\",\"KI5\"],\"s\":[\"KO7\",\"KI6\"],\"a\":[\"KO7\",\"KI7\"],\"ctrl\":[\"KO0\",\"KR2\"],\"lshift\":[\"KO2\",\"KR2\"],\"rshift\":[\"KO2\",\"KR2\"],\"break\":[\"KO6\",\"KR2\"]},\"special\":{\"ctrl\":{\"lines\":[\"KO0\",\"KR2\"],\"it\":\"Modificatore: collega KO0 (la stessa uscita dei codici $00-$07) alla linea KR2 del POKEY (pin 16), non a KR1. Il POKEY lo campiona durante il codice $00 e lo mette nel bit 7 di KBCODE.\",\"en\":\"Modifier: connects KO0 (the same output as scan codes $00-$07) to POKEY's KR2 line (pin 16), not KR1. POKEY samples it during scan code $00 and puts it in KBCODE bit 7.\"},\"lshift\":{\"lines\":[\"KO2\",\"KR2\"],\"it\":\"Modificatore: collega KO2 (uscita dei codici $10-$17) a KR2. I due SHIFT sono in parallelo e il software non li distingue; stato in KBCODE bit 6 e SKSTAT bit 3.\",\"en\":\"Modifier: connects KO2 (output of scan codes $10-$17) to KR2. Both SHIFT keys are wired in parallel and software cannot tell them apart; state in KBCODE bit 6 and SKSTAT bit 3.\"},\"rshift\":{\"lines\":[\"KO2\",\"KR2\"],\"it\":\"In parallelo allo SHIFT sinistro (KO2\/KR2).\",\"en\":\"Wired in parallel with left SHIFT (KO2\/KR2).\"},\"break\":{\"lines\":[\"KO6\",\"KR2\"],\"it\":\"Collega KO6 (uscita dei codici $30-$37) a KR2. Non produce un codice tasto: il POKEY genera l'IRQ di BREAK (IRQST bit 7) solo sulla pressione.\",\"en\":\"Connects KO6 (output of scan codes $30-$37) to KR2. It produces no key code: POKEY raises the BREAK IRQ (IRQST bit 7) on key-down only.\"},\"start\":{\"lines\":[\"S0\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: chiude la linea S0 del CTIA\/GTIA (pin 12) verso massa (pin 22 di J105); letto nel bit 0 di CONSOL ($D01F).\",\"en\":\"Not in the matrix: it pulls CTIA\/GTIA line S0 (pin 12) to ground (J105 pin 22); read in CONSOL ($D01F) bit 0.\"},\"select\":{\"lines\":[\"S1\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: linea S1 del CTIA\/GTIA (pin 13) verso massa; bit 1 di CONSOL.\",\"en\":\"Not in the matrix: CTIA\/GTIA line S1 (pin 13) to ground; CONSOL bit 1.\"},\"option\":{\"lines\":[\"S2\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: linea S2 del CTIA\/GTIA (pin 14) verso massa; bit 2 di CONSOL.\",\"en\":\"Not in the matrix: CTIA\/GTIA line S2 (pin 14) to ground; CONSOL bit 2.\"},\"reset\":{\"lines\":[\"RNMI\",\"GND\"],\"it\":\"Non \u00e8 nella matrice e non \u00e8 un vero reset: porta a massa l'ingresso \/RNMI di ANTIC (pin 6); ANTIC genera un NMI all'inizio del vertical blank e il sistema operativo fa un warm start (NMIST bit 5).\",\"en\":\"Not in the matrix and not a hardware reset: it grounds ANTIC's \/RNMI input (pin 6); ANTIC issues an NMI at the start of vertical blank and the OS performs a warm start (NMIST bit 5).\"}},\"notes_it\":[\"Una KO morta spegne fino a 7-8 tasti con codici consecutivi (es. KO3 = 1-6 ed ESC); una KI morta spegne un tasto per ogni KO (es. KI0 = L, O, V, 4, la virgola, R, 9, F). Controllare il pin del connettore J105, la resistenza in serie e il pin del 4051 corrispondente.\",\"Se nessun tasto normale funziona ma SHIFT\/CTRL\/BREAK s\u00ec, sospettare Z101 o la linea KR1 (pin 3 di Z101 -> pin 25 del POKEY); se non funziona neanche BREAK, sospettare Z102 (pin 3 a massa, pin 6-7-8) o le uscite K3-K5 del POKEY.\",\"Z102 e Z101 sono due CD4051 identici: scambiarli \u00e8 una prova rapida, se il guasto cambia gruppo di tasti il colpevole \u00e8 uno dei due.\",\"La matrice non ha diodi: tre tasti premuti agli angoli di un rettangolo fanno comparire un tasto fantasma (es. L+J+V). Con CTRL+SHIFT premuti insieme i codici $C0-$C7 e $D0-$D7 non si leggono: \u00e8 normale, non \u00e8 un guasto.\",\"Il CONSOL bit 3 (linea S3, pin 15 del CTIA) comanda l'altoparlantino interno tramite Q101 (keyclick): se i tasti funzionano ma non c'\u00e8 il clic, il guasto \u00e8 l\u00ec, non nella tastiera.\",\"Sul 400 la membrana porta sullo stesso connettore J105 anche i quattro tasti console (pin 18-21) e la loro massa (pin 22). Le crepe della coda della membrana sono la causa pi\u00f9 comune di gruppi di tasti morti. Attenzione: sul 400 J106 \u00e8 l'altoparlante, non la tastiera.\",\"Componenti sulle linee (motherboard 400): R109-R117 da 100 \u03a9 in serie su KO0-KO7 e KR2 con C112-C120 da 1 nF verso massa; R101-R108 in serie su KI0-KI7 con C104-C111 da 1 nF; R119-R123 da 150 \u03a9 e C121-C125 sulle linee console\/altoparlante.\"],\"notes_en\":[\"A dead KO line kills up to 7-8 keys with consecutive codes (e.g. KO3 = 1-6 and ESC); a dead KI line kills one key on each KO (e.g. KI0 = L, O, V, 4, comma, R, 9, F). Check the J105 connector pin, the series resistor and the matching 4051 pin.\",\"If no ordinary key works but SHIFT\/CTRL\/BREAK do, suspect Z101 or the KR1 line (Z101 pin 3 -> POKEY pin 25); if BREAK is dead too, suspect Z102 (pin 3 grounded, pins 6-7-8) or POKEY's K3-K5 outputs.\",\"Z102 and Z101 are identical CD4051s: swapping them is a quick test; if the fault moves to another group of keys, one of the two is bad.\",\"The matrix has no diodes: three keys held at the corners of a rectangle produce a phantom key (e.g. L+J+V). With CTRL+SHIFT held together, codes $C0-$C7 and $D0-$D7 cannot be read: that is normal, not a fault.\",\"CONSOL bit 3 (line S3, CTIA pin 15) drives the internal speaker through Q101 (keyclick): if the keys work but there is no click, look there, not at the keyboard.\",\"On the 400 the membrane also carries the four console keys (pins 18-21) and their ground (pin 22) on the same J105 connector. Cracks in the membrane tail are the most common cause of dead groups of keys. Note: on the 400, J106 is the speaker, not the keyboard.\",\"Parts on the lines (400 motherboard): R109-R117 100 \u03a9 in series on KO0-KO7 and KR2 with C112-C120 1 nF to ground; R101-R108 in series on KI0-KI7 with C104-C111 1 nF; R119-R123 150 \u03a9 and C121-C125 on the console\/speaker lines.\"],\"board_it\":\"scheda madre del 400 (NTSC, Field Service Manual fig. 4-5a\/4-5b; scheda CPU fig. 4-3)\",\"board_en\":\"400 motherboard (NTSC, Field Service Manual fig. 4-5a\/4-5b; CPU board fig. 4-3)\"},\"atari800\":{\"id\":\"atari800\",\"name\":\"Atari 800\",\"sources\":[{\"t\":\"Atari 400\/800 Field Service Manual (Updated): \u00a74.3.2-4.3.3, \u00a75.4.5, fig. 4-3, 4-5a\/b, 4-8a\/b\",\"u\":\"http:\/\/atariverse.com\/files\/technical\/Atari%20400-800%20Field%20Service%20Manual%20(Updated).pdf\"},{\"t\":\"Altirra Hardware Reference Manual (Avery Lee): \u00a72.4 System Reset, \u00a75.8 Keyboard scan, CONSOL\",\"u\":\"https:\/\/www.virtualdub.org\/downloads\/Altirra%20Hardware%20Reference%20Manual.pdf\"},{\"t\":\"MAME src\/mame\/atari\/atari400.cpp (INPUT_PORTS atari_keyboard, atari_console)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/mame\/atari\/atari400.cpp\"},{\"t\":\"Wikipedia: POKEY (pin assignment K0-K5, KR1, KR2)\",\"u\":\"https:\/\/en.wikipedia.org\/wiki\/POKEY\"}],\"scan_it\":\"Il POKEY (A101) conta da 0 a 63 sulle uscite K0-K5 (pin 23-18). K3-K5 (pin 20, 19, 18) vanno agli ingressi A, B, C (pin 11, 10, 9) del 4051 Z103 \\\"Key Out\\\", che ha il comune X (pin 3) a massa: l'uscita selezionata KO0-KO7 viene portata a massa. K0-K2 (pin 23, 22, 21) vanno ad A, B, C del 4051 Z104 \\\"Key In\\\", che collega una delle righe KI0-KI7 al suo comune X (pin 3) e quindi a KR1 (pin 25, pull-up 47 k\u03a9). Un tasto premuto unisce una KO e una KI: quando il conteggio seleziona proprio quella coppia KR1 va basso e il valore K5-K0 diventa il codice tasto (K5-K3 = numero della KO, K2-K0 = numero della KI). Per questo ogni tasto \u00e8 indicato con le due piste fisiche che chiude sul connettore J106 (KOn e KIm), cio\u00e8 quelle che si seguono con il tester; CTRL, SHIFT e BREAK chiudono invece una KO su KR2 (pin 9 del connettore, pin 16 del POKEY). Entrambi i 4051 sono sulla motherboard: la tastiera \u00e8 una matrice passiva senza diodi.\",\"scan_en\":\"POKEY (A101) counts 0 to 63 on its K0-K5 outputs (pins 23-18). K3-K5 (pins 20, 19, 18) drive inputs A, B, C (pins 11, 10, 9) of 4051 Z103 \\\"Key Out\\\", whose common X (pin 3) is grounded, so the selected output KO0-KO7 is pulled to ground. K0-K2 (pins 23, 22, 21) drive A, B, C of 4051 Z104 \\\"Key In\\\", which connects one of the rows KI0-KI7 to its common X (pin 3) and so to KR1 (pin 25, 47 k\u03a9 pull-up). A pressed key joins one KO to one KI: when the count selects that pair, KR1 goes low and the K5-K0 value becomes the key code (K5-K3 = KO number, K2-K0 = KI number). So each key is shown as the two physical tracks it shorts on connector J106 (KOn and KIm), which are the ones you follow with a meter; CTRL, SHIFT and BREAK instead short a KO line to KR2 (connector pin 9, POKEY pin 16). Both 4051s are on the motherboard: the keyboard is a passive matrix with no diodes.\",\"lines\":[{\"id\":\"KO0\",\"group\":\"col\",\"name\":\"KEY OUT X0\",\"chip\":\"Z103\",\"chip_part\":\"CD4051 (Key Out)\",\"chip_pin\":\"13\",\"conn_pin\":\"6\",\"also_it\":\"attiva (a massa) quando K5-K3 = 000, codici $00-$07\",\"also_en\":\"pulled to ground when K5-K3 = 000, scan codes $00-$07\"},{\"id\":\"KO1\",\"group\":\"col\",\"name\":\"KEY OUT X1\",\"chip\":\"Z103\",\"chip_part\":\"CD4051 (Key Out)\",\"chip_pin\":\"14\",\"conn_pin\":\"1\",\"also_it\":\"attiva (a massa) quando K5-K3 = 001, codici $08-$0F\",\"also_en\":\"pulled to ground when K5-K3 = 001, scan codes $08-$0F\"},{\"id\":\"KO2\",\"group\":\"col\",\"name\":\"KEY OUT X2\",\"chip\":\"Z103\",\"chip_part\":\"CD4051 (Key Out)\",\"chip_pin\":\"15\",\"conn_pin\":\"4\",\"also_it\":\"attiva (a massa) quando K5-K3 = 010, codici $10-$17\",\"also_en\":\"pulled to ground when K5-K3 = 010, scan codes $10-$17\"},{\"id\":\"KO3\",\"group\":\"col\",\"name\":\"KEY OUT X3\",\"chip\":\"Z103\",\"chip_part\":\"CD4051 (Key Out)\",\"chip_pin\":\"12\",\"conn_pin\":\"7\",\"also_it\":\"attiva (a massa) quando K5-K3 = 011, codici $18-$1F\",\"also_en\":\"pulled to ground when K5-K3 = 011, scan codes $18-$1F\"},{\"id\":\"KO4\",\"group\":\"col\",\"name\":\"KEY OUT X4\",\"chip\":\"Z103\",\"chip_part\":\"CD4051 (Key Out)\",\"chip_pin\":\"1\",\"conn_pin\":\"2\",\"also_it\":\"attiva (a massa) quando K5-K3 = 100, codici $20-$27\",\"also_en\":\"pulled to ground when K5-K3 = 100, scan codes $20-$27\"},{\"id\":\"KO5\",\"group\":\"col\",\"name\":\"KEY OUT X5\",\"chip\":\"Z103\",\"chip_part\":\"CD4051 (Key Out)\",\"chip_pin\":\"5\",\"conn_pin\":\"8\",\"also_it\":\"attiva (a massa) quando K5-K3 = 101, codici $28-$2F\",\"also_en\":\"pulled to ground when K5-K3 = 101, scan codes $28-$2F\"},{\"id\":\"KO6\",\"group\":\"col\",\"name\":\"KEY OUT X6\",\"chip\":\"Z103\",\"chip_part\":\"CD4051 (Key Out)\",\"chip_pin\":\"2\",\"conn_pin\":\"3\",\"also_it\":\"attiva (a massa) quando K5-K3 = 110, codici $30-$37\",\"also_en\":\"pulled to ground when K5-K3 = 110, scan codes $30-$37\"},{\"id\":\"KO7\",\"group\":\"col\",\"name\":\"KEY OUT X7\",\"chip\":\"Z103\",\"chip_part\":\"CD4051 (Key Out)\",\"chip_pin\":\"4\",\"conn_pin\":\"5\",\"also_it\":\"attiva (a massa) quando K5-K3 = 111, codici $38-$3F\",\"also_en\":\"pulled to ground when K5-K3 = 111, scan codes $38-$3F\"},{\"id\":\"KI0\",\"group\":\"row\",\"name\":\"KEY IN X0\",\"chip\":\"Z104\",\"chip_part\":\"CD4051 (Key In)\",\"chip_pin\":\"13\",\"conn_pin\":\"16\",\"also_it\":\"letta su KR1 (POKEY pin 25) quando K2-K0 = 000\",\"also_en\":\"read on KR1 (POKEY pin 25) when K2-K0 = 000\"},{\"id\":\"KI1\",\"group\":\"row\",\"name\":\"KEY IN X1\",\"chip\":\"Z104\",\"chip_part\":\"CD4051 (Key In)\",\"chip_pin\":\"14\",\"conn_pin\":\"15\",\"also_it\":\"letta su KR1 (POKEY pin 25) quando K2-K0 = 001\",\"also_en\":\"read on KR1 (POKEY pin 25) when K2-K0 = 001\"},{\"id\":\"KI2\",\"group\":\"row\",\"name\":\"KEY IN X2\",\"chip\":\"Z104\",\"chip_part\":\"CD4051 (Key In)\",\"chip_pin\":\"15\",\"conn_pin\":\"12\",\"also_it\":\"letta su KR1 (POKEY pin 25) quando K2-K0 = 010\",\"also_en\":\"read on KR1 (POKEY pin 25) when K2-K0 = 010\"},{\"id\":\"KI3\",\"group\":\"row\",\"name\":\"KEY IN X3\",\"chip\":\"Z104\",\"chip_part\":\"CD4051 (Key In)\",\"chip_pin\":\"12\",\"conn_pin\":\"17\",\"also_it\":\"letta su KR1 (POKEY pin 25) quando K2-K0 = 011\",\"also_en\":\"read on KR1 (POKEY pin 25) when K2-K0 = 011\"},{\"id\":\"KI4\",\"group\":\"row\",\"name\":\"KEY IN X4\",\"chip\":\"Z104\",\"chip_part\":\"CD4051 (Key In)\",\"chip_pin\":\"1\",\"conn_pin\":\"10\",\"also_it\":\"letta su KR1 (POKEY pin 25) quando K2-K0 = 100\",\"also_en\":\"read on KR1 (POKEY pin 25) when K2-K0 = 100\"},{\"id\":\"KI5\",\"group\":\"row\",\"name\":\"KEY IN X5\",\"chip\":\"Z104\",\"chip_part\":\"CD4051 (Key In)\",\"chip_pin\":\"5\",\"conn_pin\":\"14\",\"also_it\":\"letta su KR1 (POKEY pin 25) quando K2-K0 = 101\",\"also_en\":\"read on KR1 (POKEY pin 25) when K2-K0 = 101\"},{\"id\":\"KI6\",\"group\":\"row\",\"name\":\"KEY IN X6\",\"chip\":\"Z104\",\"chip_part\":\"CD4051 (Key In)\",\"chip_pin\":\"2\",\"conn_pin\":\"11\",\"also_it\":\"letta su KR1 (POKEY pin 25) quando K2-K0 = 110\",\"also_en\":\"read on KR1 (POKEY pin 25) when K2-K0 = 110\"},{\"id\":\"KI7\",\"group\":\"row\",\"name\":\"KEY IN X7\",\"chip\":\"Z104\",\"chip_part\":\"CD4051 (Key In)\",\"chip_pin\":\"4\",\"conn_pin\":\"13\",\"also_it\":\"letta su KR1 (POKEY pin 25) quando K2-K0 = 111\",\"also_en\":\"read on KR1 (POKEY pin 25) when K2-K0 = 111\"},{\"id\":\"KR2\",\"group\":\"row\",\"name\":\"KR2\",\"chip\":\"A101\",\"chip_part\":\"POKEY C012294\",\"chip_pin\":\"16\",\"conn_pin\":\"9\",\"also_it\":\"solo CTRL, SHIFT, BREAK; pull-up 47 k\u03a9\",\"also_en\":\"CTRL, SHIFT and BREAK only; 47 k\u03a9 pull-up\"},{\"id\":\"S0\",\"group\":\"extra\",\"name\":\"START\",\"chip\":\"A301\",\"chip_part\":\"CTIA C012295 \/ GTIA (CPU board)\",\"chip_pin\":\"12\",\"conn_pin\":\"4\",\"also_it\":\"bit 0 di CONSOL; scheda CPU, via J101 pin 17\",\"also_en\":\"CONSOL bit 0; CPU board, via J101 pin 17\"},{\"id\":\"S1\",\"group\":\"extra\",\"name\":\"SELECT\",\"chip\":\"A301\",\"chip_part\":\"CTIA C012295 \/ GTIA (CPU board)\",\"chip_pin\":\"13\",\"conn_pin\":\"3\",\"also_it\":\"bit 1 di CONSOL; scheda CPU, via J101 pin 11\",\"also_en\":\"CONSOL bit 1; CPU board, via J101 pin 11\"},{\"id\":\"S2\",\"group\":\"extra\",\"name\":\"OPTION\",\"chip\":\"A301\",\"chip_part\":\"CTIA C012295 \/ GTIA (CPU board)\",\"chip_pin\":\"14\",\"conn_pin\":\"2\",\"also_it\":\"bit 2 di CONSOL; scheda CPU, via J101 pin R\",\"also_en\":\"CONSOL bit 2; CPU board, via J101 pin R\"},{\"id\":\"RNMI\",\"group\":\"extra\",\"name\":\"SYSTEM RESET\",\"chip\":\"A302\",\"chip_part\":\"ANTIC C012296 (CPU board)\",\"chip_pin\":\"6\",\"conn_pin\":\"1\",\"also_it\":\"ingresso \/RNMI di ANTIC -> NMI; scheda CPU, via J101 pin Z\",\"also_en\":\"ANTIC \/RNMI input -> NMI; CPU board, via J101 pin Z\"}],\"connectors\":[{\"ref\":\"J106\",\"it\":\"Connettore tastiera 22 pin sulla motherboard\",\"en\":\"22-pin keyboard connector on the motherboard\",\"pins\":[{\"n\":\"1\",\"sig\":\"KO1\"},{\"n\":\"2\",\"sig\":\"KO4\"},{\"n\":\"3\",\"sig\":\"KO6\"},{\"n\":\"4\",\"sig\":\"KO2\"},{\"n\":\"5\",\"sig\":\"KO7\"},{\"n\":\"6\",\"sig\":\"KO0\"},{\"n\":\"7\",\"sig\":\"KO3\"},{\"n\":\"8\",\"sig\":\"KO5\"},{\"n\":\"9\",\"sig\":\"KR2\"},{\"n\":\"10\",\"sig\":\"KI4\"},{\"n\":\"11\",\"sig\":\"KI6\"},{\"n\":\"12\",\"sig\":\"KI2\"},{\"n\":\"13\",\"sig\":\"KI7\"},{\"n\":\"14\",\"sig\":\"KI5\"},{\"n\":\"15\",\"sig\":\"KI1\"},{\"n\":\"16\",\"sig\":\"KI0\"},{\"n\":\"17\",\"sig\":\"KI3\"},{\"n\":\"18\",\"sig\":\"NC\",\"note_it\":\"non disegnato sullo schema\",\"note_en\":\"not drawn on the schematic\"},{\"n\":\"19\",\"sig\":\"NC\",\"note_it\":\"non disegnato sullo schema\",\"note_en\":\"not drawn on the schematic\"},{\"n\":\"20\",\"sig\":\"NC\",\"note_it\":\"non disegnato sullo schema\",\"note_en\":\"not drawn on the schematic\"},{\"n\":\"21\",\"sig\":\"NC\",\"note_it\":\"non disegnato sullo schema\",\"note_en\":\"not drawn on the schematic\"},{\"n\":\"22\",\"sig\":\"NC\",\"note_it\":\"NC sullo schema\",\"note_en\":\"marked NC on the schematic\"}]},{\"ref\":\"J114\",\"it\":\"Connettore tasti console 4 pin sulla motherboard (\\\"TO CONTROL SWITCHES\\\")\",\"en\":\"4-pin console key connector on the motherboard (\\\"TO CONTROL SWITCHES\\\")\",\"pins\":[{\"n\":\"1\",\"sig\":\"RNMI\",\"note_it\":\"SYSTEM RESET, R184-R187 100 \u03a9\",\"note_en\":\"SYSTEM RESET, R184-R187 100 \u03a9\"},{\"n\":\"2\",\"sig\":\"S2\",\"note_it\":\"OPTION\",\"note_en\":\"OPTION\"},{\"n\":\"3\",\"sig\":\"S1\",\"note_it\":\"SELECT\",\"note_en\":\"SELECT\"},{\"n\":\"4\",\"sig\":\"S0\",\"note_it\":\"START\",\"note_en\":\"START\"}]}],\"layout\":[{\"id\":\"esc\",\"t\":\"ESC\",\"x\":0,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"1\",\"t\":\"1\",\"t2\":\"!\",\"x\":1,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"2\",\"t\":\"2\",\"t2\":\"\\\"\",\"x\":2,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"3\",\"t\":\"3\",\"t2\":\"#\",\"x\":3,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"4\",\"t\":\"4\",\"t2\":\"$\",\"x\":4,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"5\",\"t\":\"5\",\"t2\":\"%\",\"x\":5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"6\",\"t\":\"6\",\"t2\":\"&\",\"x\":6,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"7\",\"t\":\"7\",\"t2\":\"'\",\"x\":7,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"8\",\"t\":\"8\",\"t2\":\"@\",\"x\":8,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"9\",\"t\":\"9\",\"t2\":\"(\",\"x\":9,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"0\",\"t\":\"0\",\"t2\":\")\",\"x\":10,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"lt\",\"t\":\"<\",\"t2\":\"CLEAR\",\"x\":11,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"gt\",\"t\":\">\",\"t2\":\"INSERT\",\"x\":12,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"bksp\",\"t\":\"BACK S\",\"t2\":\"DELETE\",\"x\":13,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"break\",\"t\":\"BREAK\",\"x\":14,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"tab\",\"t\":\"TAB\",\"t2\":\"SET CLR\",\"x\":0,\"y\":1,\"w\":1.5,\"h\":1},{\"id\":\"q\",\"t\":\"Q\",\"x\":1.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"w\",\"t\":\"W\",\"x\":2.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"e\",\"t\":\"E\",\"x\":3.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"r\",\"t\":\"R\",\"x\":4.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"t\",\"t\":\"T\",\"x\":5.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"y\",\"t\":\"Y\",\"x\":6.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"u\",\"t\":\"U\",\"x\":7.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"i\",\"t\":\"I\",\"x\":8.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"o\",\"t\":\"O\",\"x\":9.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"p\",\"t\":\"P\",\"x\":10.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"minus\",\"t\":\"-\",\"t2\":\"_\",\"x\":11.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"equal\",\"t\":\"=\",\"t2\":\"|\",\"x\":12.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"return\",\"t\":\"RETURN\",\"x\":13.5,\"y\":1,\"w\":1.5,\"h\":1},{\"id\":\"ctrl\",\"t\":\"CTRL\",\"x\":0,\"y\":2,\"w\":1.75,\"h\":1},{\"id\":\"a\",\"t\":\"A\",\"x\":1.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"s\",\"t\":\"S\",\"x\":2.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"d\",\"t\":\"D\",\"x\":3.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"f\",\"t\":\"F\",\"x\":4.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"g\",\"t\":\"G\",\"x\":5.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"h\",\"t\":\"H\",\"x\":6.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"j\",\"t\":\"J\",\"x\":7.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"k\",\"t\":\"K\",\"x\":8.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"l\",\"t\":\"L\",\"x\":9.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"semicolon\",\"t\":\";\",\"t2\":\":\",\"x\":10.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"plus\",\"t\":\"+\",\"t2\":\"\\\\\",\"x\":11.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"star\",\"t\":\"*\",\"t2\":\"^\",\"x\":12.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"caps\",\"t\":\"CAPS\",\"t2\":\"LOWR\",\"x\":13.75,\"y\":2,\"w\":1.25,\"h\":1},{\"id\":\"lshift\",\"t\":\"SHIFT\",\"x\":0,\"y\":3,\"w\":2.25,\"h\":1},{\"id\":\"z\",\"t\":\"Z\",\"x\":2.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"x\",\"t\":\"X\",\"x\":3.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"c\",\"t\":\"C\",\"x\":4.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"v\",\"t\":\"V\",\"x\":5.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"b\",\"t\":\"B\",\"x\":6.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"n\",\"t\":\"N\",\"x\":7.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"m\",\"t\":\"M\",\"x\":8.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"comma\",\"t\":\",\",\"t2\":\"[\",\"x\":9.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"period\",\"t\":\".\",\"t2\":\"]\",\"x\":10.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"slash\",\"t\":\"\/\",\"t2\":\"?\",\"x\":11.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"rshift\",\"t\":\"SHIFT\",\"x\":12.25,\"y\":3,\"w\":1.75,\"h\":1},{\"id\":\"atari\",\"t\":\"ATARI\",\"t2\":\"INV\",\"x\":14,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"space\",\"t\":\"SPACE\",\"x\":3,\"y\":4,\"w\":9,\"h\":1},{\"id\":\"reset\",\"t\":\"SYSTEM RESET\",\"x\":15.75,\"y\":0,\"w\":1.75,\"h\":1},{\"id\":\"option\",\"t\":\"OPTION\",\"x\":15.75,\"y\":1,\"w\":1.75,\"h\":1},{\"id\":\"select\",\"t\":\"SELECT\",\"x\":15.75,\"y\":2,\"w\":1.75,\"h\":1},{\"id\":\"start\",\"t\":\"START\",\"x\":15.75,\"y\":3,\"w\":1.75,\"h\":1}],\"matrix\":{\"l\":[\"KO0\",\"KI0\"],\"j\":[\"KO0\",\"KI1\"],\"semicolon\":[\"KO0\",\"KI2\"],\"k\":[\"KO0\",\"KI5\"],\"plus\":[\"KO0\",\"KI6\"],\"star\":[\"KO0\",\"KI7\"],\"o\":[\"KO1\",\"KI0\"],\"p\":[\"KO1\",\"KI2\"],\"u\":[\"KO1\",\"KI3\"],\"return\":[\"KO1\",\"KI4\"],\"i\":[\"KO1\",\"KI5\"],\"minus\":[\"KO1\",\"KI6\"],\"equal\":[\"KO1\",\"KI7\"],\"v\":[\"KO2\",\"KI0\"],\"c\":[\"KO2\",\"KI2\"],\"b\":[\"KO2\",\"KI5\"],\"x\":[\"KO2\",\"KI6\"],\"z\":[\"KO2\",\"KI7\"],\"4\":[\"KO3\",\"KI0\"],\"3\":[\"KO3\",\"KI2\"],\"6\":[\"KO3\",\"KI3\"],\"esc\":[\"KO3\",\"KI4\"],\"5\":[\"KO3\",\"KI5\"],\"2\":[\"KO3\",\"KI6\"],\"1\":[\"KO3\",\"KI7\"],\"comma\":[\"KO4\",\"KI0\"],\"space\":[\"KO4\",\"KI1\"],\"period\":[\"KO4\",\"KI2\"],\"n\":[\"KO4\",\"KI3\"],\"m\":[\"KO4\",\"KI5\"],\"slash\":[\"KO4\",\"KI6\"],\"atari\":[\"KO4\",\"KI7\"],\"r\":[\"KO5\",\"KI0\"],\"e\":[\"KO5\",\"KI2\"],\"y\":[\"KO5\",\"KI3\"],\"tab\":[\"KO5\",\"KI4\"],\"t\":[\"KO5\",\"KI5\"],\"w\":[\"KO5\",\"KI6\"],\"q\":[\"KO5\",\"KI7\"],\"9\":[\"KO6\",\"KI0\"],\"0\":[\"KO6\",\"KI2\"],\"7\":[\"KO6\",\"KI3\"],\"bksp\":[\"KO6\",\"KI4\"],\"8\":[\"KO6\",\"KI5\"],\"lt\":[\"KO6\",\"KI6\"],\"gt\":[\"KO6\",\"KI7\"],\"f\":[\"KO7\",\"KI0\"],\"h\":[\"KO7\",\"KI1\"],\"d\":[\"KO7\",\"KI2\"],\"caps\":[\"KO7\",\"KI4\"],\"g\":[\"KO7\",\"KI5\"],\"s\":[\"KO7\",\"KI6\"],\"a\":[\"KO7\",\"KI7\"],\"ctrl\":[\"KO0\",\"KR2\"],\"lshift\":[\"KO2\",\"KR2\"],\"rshift\":[\"KO2\",\"KR2\"],\"break\":[\"KO6\",\"KR2\"]},\"special\":{\"ctrl\":{\"lines\":[\"KO0\",\"KR2\"],\"it\":\"Modificatore: collega KO0 (la stessa uscita dei codici $00-$07) alla linea KR2 del POKEY (pin 16), non a KR1. Il POKEY lo campiona durante il codice $00 e lo mette nel bit 7 di KBCODE.\",\"en\":\"Modifier: connects KO0 (the same output as scan codes $00-$07) to POKEY's KR2 line (pin 16), not KR1. POKEY samples it during scan code $00 and puts it in KBCODE bit 7.\"},\"lshift\":{\"lines\":[\"KO2\",\"KR2\"],\"it\":\"Modificatore: collega KO2 (uscita dei codici $10-$17) a KR2. I due SHIFT sono in parallelo e il software non li distingue; stato in KBCODE bit 6 e SKSTAT bit 3.\",\"en\":\"Modifier: connects KO2 (output of scan codes $10-$17) to KR2. Both SHIFT keys are wired in parallel and software cannot tell them apart; state in KBCODE bit 6 and SKSTAT bit 3.\"},\"rshift\":{\"lines\":[\"KO2\",\"KR2\"],\"it\":\"In parallelo allo SHIFT sinistro (KO2\/KR2).\",\"en\":\"Wired in parallel with left SHIFT (KO2\/KR2).\"},\"break\":{\"lines\":[\"KO6\",\"KR2\"],\"it\":\"Collega KO6 (uscita dei codici $30-$37) a KR2. Non produce un codice tasto: il POKEY genera l'IRQ di BREAK (IRQST bit 7) solo sulla pressione.\",\"en\":\"Connects KO6 (output of scan codes $30-$37) to KR2. It produces no key code: POKEY raises the BREAK IRQ (IRQST bit 7) on key-down only.\"},\"start\":{\"lines\":[\"S0\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: chiude la linea S0 del CTIA\/GTIA (pin 12) verso massa; letto nel bit 0 di CONSOL ($D01F).\",\"en\":\"Not in the matrix: it pulls CTIA\/GTIA line S0 (pin 12) to ground; read in CONSOL ($D01F) bit 0.\"},\"select\":{\"lines\":[\"S1\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: linea S1 del CTIA\/GTIA (pin 13) verso massa; bit 1 di CONSOL.\",\"en\":\"Not in the matrix: CTIA\/GTIA line S1 (pin 13) to ground; CONSOL bit 1.\"},\"option\":{\"lines\":[\"S2\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: linea S2 del CTIA\/GTIA (pin 14) verso massa; bit 2 di CONSOL.\",\"en\":\"Not in the matrix: CTIA\/GTIA line S2 (pin 14) to ground; CONSOL bit 2.\"},\"reset\":{\"lines\":[\"RNMI\",\"GND\"],\"it\":\"Non \u00e8 nella matrice e non \u00e8 un vero reset: porta a massa l'ingresso \/RNMI di ANTIC (pin 6); ANTIC genera un NMI all'inizio del vertical blank e il sistema operativo fa un warm start (NMIST bit 5).\",\"en\":\"Not in the matrix and not a hardware reset: it grounds ANTIC's \/RNMI input (pin 6); ANTIC issues an NMI at the start of vertical blank and the OS performs a warm start (NMIST bit 5).\"}},\"notes_it\":[\"Una KO morta spegne fino a 7-8 tasti con codici consecutivi (es. KO3 = 1-6 ed ESC); una KI morta spegne un tasto per ogni KO (es. KI0 = L, O, V, 4, la virgola, R, 9, F). Controllare il pin del connettore J106, la resistenza in serie e il pin del 4051 corrispondente.\",\"Se nessun tasto normale funziona ma SHIFT\/CTRL\/BREAK s\u00ec, sospettare Z104 o la linea KR1 (pin 3 di Z104 -> pin 25 del POKEY); se non funziona neanche BREAK, sospettare Z103 (pin 3 a massa, pin 6-7-8) o le uscite K3-K5 del POKEY.\",\"Z103 e Z104 sono due CD4051 identici: scambiarli \u00e8 una prova rapida, se il guasto cambia gruppo di tasti il colpevole \u00e8 uno dei due.\",\"La matrice non ha diodi: tre tasti premuti agli angoli di un rettangolo fanno comparire un tasto fantasma (es. L+J+V). Con CTRL+SHIFT premuti insieme i codici $C0-$C7 e $D0-$D7 non si leggono: \u00e8 normale, non \u00e8 un guasto.\",\"Il CONSOL bit 3 (linea S3, pin 15 del CTIA) comanda l'altoparlantino interno tramite Q101 (keyclick): se i tasti funzionano ma non c'\u00e8 il clic, il guasto \u00e8 l\u00ec, non nella tastiera.\",\"Sull'800 la tastiera (J106) e i tasti console (J114) arrivano alla motherboard su due connettori diversi. Attenzione: sull'800 J105 \u00e8 l'altoparlante, J101 \u00e8 lo slot della scheda CPU (su cui stanno CTIA\/GTIA e ANTIC).\",\"Componenti sulle linee (motherboard 800): R110-R126 da 100 \u03a9 in serie su tutte le 17 linee di J106, C105-C113 da 1 nF su KO0-KO7 e KR2, C114-C121 da 1 nF su KI0-KI7; R184-R187 da 100 \u03a9 sulle quattro linee console di J114.\"],\"notes_en\":[\"A dead KO line kills up to 7-8 keys with consecutive codes (e.g. KO3 = 1-6 and ESC); a dead KI line kills one key on each KO (e.g. KI0 = L, O, V, 4, comma, R, 9, F). Check the J106 connector pin, the series resistor and the matching 4051 pin.\",\"If no ordinary key works but SHIFT\/CTRL\/BREAK do, suspect Z104 or the KR1 line (Z104 pin 3 -> POKEY pin 25); if BREAK is dead too, suspect Z103 (pin 3 grounded, pins 6-7-8) or POKEY's K3-K5 outputs.\",\"Z103 and Z104 are identical CD4051s: swapping them is a quick test; if the fault moves to another group of keys, one of the two is bad.\",\"The matrix has no diodes: three keys held at the corners of a rectangle produce a phantom key (e.g. L+J+V). With CTRL+SHIFT held together, codes $C0-$C7 and $D0-$D7 cannot be read: that is normal, not a fault.\",\"CONSOL bit 3 (line S3, CTIA pin 15) drives the internal speaker through Q101 (keyclick): if the keys work but there is no click, look there, not at the keyboard.\",\"On the 800 the keyboard (J106) and the console keys (J114) reach the motherboard on two separate connectors. Note: on the 800, J105 is the speaker and J101 is the CPU board slot (where CTIA\/GTIA and ANTIC live).\",\"Parts on the lines (800 motherboard): R110-R126 100 \u03a9 in series on all 17 J106 lines, C105-C113 1 nF on KO0-KO7 and KR2, C114-C121 1 nF on KI0-KI7; R184-R187 100 \u03a9 on the four J114 console lines.\"],\"board_it\":\"scheda madre dell'800 (NTSC, Field Service Manual fig. 4-8a\/4-8b; scheda CPU fig. 4-3)\",\"board_en\":\"800 motherboard (NTSC, Field Service Manual fig. 4-8a\/4-8b; CPU board fig. 4-3)\"},\"atari800xl\":{\"id\":\"atari800xl\",\"name\":\"Atari 800XL\",\"sources\":[{\"t\":\"MAME src\/mame\/atari\/atari400.cpp (INPUT_PORTS atari_keyboard \/ a800xl), atari400_m.cpp (a800_keyboard), src\/devices\/sound\/pokey.h (POKEY pinout)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/mame\/atari\/atari400.cpp\"},{\"t\":\"Altirra Hardware Reference Manual (Avery Lee), 5.8 Keyboard scan: key code tables 11\/12, Control\/Shift\/Break on $00\/$10\/$30, key conflicts\",\"u\":\"https:\/\/www.virtualdub.org\/downloads\/Altirra%20Hardware%20Reference%20Manual.pdf\"},{\"t\":\"Service Manual for the Atari 800XL Computer (Electronic Dimensions): parts list U22 POKEY, U24\/U25 CD4051B, RN1-4 470 \u03a9, R90, R95, R137; 24-pin keyboard header\",\"u\":\"https:\/\/archive.org\/details\/Atari800XLServiceManual\"},{\"t\":\"bit-preserve: KiCad redraw of the 800XL schematic (FSM + Sams Computerfacts), Atari\/800XL\/keyboard_scan.sch and 800XL.sch (J8 pinout, 4051 channel wiring)\",\"u\":\"https:\/\/github.com\/baldengineer\/bit-preserve\/tree\/main\/Atari\/800XL\"},{\"t\":\"Fox-1, 'ATARI XL Keyboard Matrix' (1999), keyboard matrix with connector pin numbers, in 'ATARI 8-Bit Pin-outs (and more)'\",\"u\":\"https:\/\/ftp.pigwa.net\/stuff\/collections\/SIO2SD_DVD\/Extension\/Pinouts%20-%20Atari\/ATARI%208-Bit%20Pin-outs%20(and%20more).htm\"}],\"scan_it\":\"Il POKEY U22 fa girare un contatore da $00 a $3F (un passo per riga TV, circa 4 ms per giro) e lo presenta sulle uscite \/K0-\/K5 (pin 23, 22, 21, 20, 19, 18), attive basse. \/K3-\/K5 vanno agli ingressi A, B, C (pin 11, 10, 9) del 4051 U25, che collega una delle otto linee SCAN (S0-S7) al suo comune (pin 3), messo a massa tramite R90 da 100 \u03a9. \/K0-\/K2 vanno agli ingressi A, B, C del 4051 U24, che collega una delle otto linee SENSE (R0-R7) al suo comune (pin 3), cio\u00e8 all'ingresso KR1 del POKEY (pin 25). Se il tasto all'incrocio delle due linee selezionate \u00e8 premuto, KR1 va basso e il POKEY scrive il conteggio in KBCODE ($D209): i bit 5-3 sono il numero della linea S, i bit 2-0 quello della linea R. Poich\u00e9 le uscite K sono invertite, il canale del 4051 \u00e8 il complemento del numero di linea: linea n = canale X(7-n). CTRL, SHIFT e BREAK collegano le linee S0, S2 e S6 direttamente a KR2 (POKEY pin 16, connettore pin 9), che il POKEY campiona quando il contatore vale $00, $10 e $30. START, SELECT e OPTION non passano dal POKEY: vanno al GTIA; RESET va al circuito di reset.\",\"scan_en\":\"POKEY U22 runs a counter from $00 to $3F (one step per TV line, about 4 ms per pass) and puts it on its active-low \/K0-\/K5 outputs (pins 23, 22, 21, 20, 19, 18). \/K3-\/K5 drive inputs A, B, C (pins 11, 10, 9) of 4051 U25, which connects one of the eight SCAN lines (S0-S7) to its common pin 3, tied to ground through R90 (100 \u03a9). \/K0-\/K2 drive inputs A, B, C of 4051 U24, which connects one of the eight SENSE lines (R0-R7) to its common pin 3, i.e. to POKEY input KR1 (pin 25). If the key where the two selected lines cross is down, KR1 goes low and POKEY stores the count in KBCODE ($D209): bits 5-3 are the S line number, bits 2-0 the R line number. Because the K outputs are inverted, the 4051 channel is the complement of the line number: line n = channel X(7-n). CTRL, SHIFT and BREAK connect lines S0, S2 and S6 straight to KR2 (POKEY pin 16, connector pin 9), which POKEY samples at counts $00, $10 and $30. START, SELECT and OPTION bypass POKEY and go to GTIA; RESET goes to the reset circuit.\",\"lines\":[{\"id\":\"S0\",\"group\":\"col\",\"name\":\"SCAN 0 ($00-$07)\",\"chip\":\"U25\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"4\",\"conn_pin\":\"5\",\"also_it\":\"K5-K3=0, canale X7, anche CTRL\",\"also_en\":\"K5-K3=0, channel X7, CTRL too\"},{\"id\":\"S1\",\"group\":\"col\",\"name\":\"SCAN 1 ($08-$0F)\",\"chip\":\"U25\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"2\",\"conn_pin\":\"3\",\"also_it\":\"K5-K3=1, canale X6\",\"also_en\":\"K5-K3=1, channel X6\"},{\"id\":\"S2\",\"group\":\"col\",\"name\":\"SCAN 2 ($10-$17)\",\"chip\":\"U25\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"5\",\"conn_pin\":\"8\",\"also_it\":\"K5-K3=2, canale X5, anche SHIFT\",\"also_en\":\"K5-K3=2, channel X5, SHIFT too\"},{\"id\":\"S3\",\"group\":\"col\",\"name\":\"SCAN 3 ($18-$1F)\",\"chip\":\"U25\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"1\",\"conn_pin\":\"2\",\"also_it\":\"K5-K3=3, canale X4\",\"also_en\":\"K5-K3=3, channel X4\"},{\"id\":\"S4\",\"group\":\"col\",\"name\":\"SCAN 4 ($20-$27)\",\"chip\":\"U25\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"12\",\"conn_pin\":\"7\",\"also_it\":\"K5-K3=4, canale X3\",\"also_en\":\"K5-K3=4, channel X3\"},{\"id\":\"S5\",\"group\":\"col\",\"name\":\"SCAN 5 ($28-$2F)\",\"chip\":\"U25\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"15\",\"conn_pin\":\"4\",\"also_it\":\"K5-K3=5, canale X2\",\"also_en\":\"K5-K3=5, channel X2\"},{\"id\":\"S6\",\"group\":\"col\",\"name\":\"SCAN 6 ($30-$37)\",\"chip\":\"U25\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"14\",\"conn_pin\":\"1\",\"also_it\":\"K5-K3=6, canale X1, anche BREAK\",\"also_en\":\"K5-K3=6, channel X1, BREAK too\"},{\"id\":\"S7\",\"group\":\"col\",\"name\":\"SCAN 7 ($38-$3F)\",\"chip\":\"U25\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"13\",\"conn_pin\":\"6\",\"also_it\":\"K5-K3=7, canale X0\",\"also_en\":\"K5-K3=7, channel X0\"},{\"id\":\"R0\",\"group\":\"row\",\"name\":\"SENSE 0 (codice +0)\",\"chip\":\"U24\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"4\",\"conn_pin\":\"13\",\"also_it\":\"K2-K0=0, canale X7 -> KR1\",\"also_en\":\"K2-K0=0, channel X7 -> KR1\"},{\"id\":\"R1\",\"group\":\"row\",\"name\":\"SENSE 1 (codice +1)\",\"chip\":\"U24\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"2\",\"conn_pin\":\"11\",\"also_it\":\"K2-K0=1, canale X6 -> KR1\",\"also_en\":\"K2-K0=1, channel X6 -> KR1\"},{\"id\":\"R2\",\"group\":\"row\",\"name\":\"SENSE 2 (codice +2)\",\"chip\":\"U24\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"5\",\"conn_pin\":\"14\",\"also_it\":\"K2-K0=2, canale X5 -> KR1\",\"also_en\":\"K2-K0=2, channel X5 -> KR1\"},{\"id\":\"R3\",\"group\":\"row\",\"name\":\"SENSE 3 (codice +3)\",\"chip\":\"U24\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"1\",\"conn_pin\":\"10\",\"also_it\":\"K2-K0=3, canale X4 -> KR1\",\"also_en\":\"K2-K0=3, channel X4 -> KR1\"},{\"id\":\"R4\",\"group\":\"row\",\"name\":\"SENSE 4 (codice +4)\",\"chip\":\"U24\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"12\",\"conn_pin\":\"17\",\"also_it\":\"K2-K0=4, canale X3 -> KR1\",\"also_en\":\"K2-K0=4, channel X3 -> KR1\"},{\"id\":\"R5\",\"group\":\"row\",\"name\":\"SENSE 5 (codice +5)\",\"chip\":\"U24\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"15\",\"conn_pin\":\"12\",\"also_it\":\"K2-K0=5, canale X2 -> KR1\",\"also_en\":\"K2-K0=5, channel X2 -> KR1\"},{\"id\":\"R6\",\"group\":\"row\",\"name\":\"SENSE 6 (codice +6)\",\"chip\":\"U24\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"14\",\"conn_pin\":\"15\",\"also_it\":\"K2-K0=6, canale X1 -> KR1\",\"also_en\":\"K2-K0=6, channel X1 -> KR1\"},{\"id\":\"R7\",\"group\":\"row\",\"name\":\"SENSE 7 (codice +7)\",\"chip\":\"U24\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"13\",\"conn_pin\":\"16\",\"also_it\":\"K2-K0=7, canale X0 -> KR1\",\"also_en\":\"K2-K0=7, channel X0 -> KR1\"},{\"id\":\"KR2\",\"group\":\"row\",\"name\":\"KR2\",\"chip\":\"U22\",\"chip_part\":\"POKEY CO12294\",\"chip_pin\":\"16\",\"conn_pin\":\"9\",\"also_it\":\"CTRL (S0), SHIFT (S2), BREAK (S6); letta ai conteggi $00\/$10\/$30\",\"also_en\":\"CTRL (S0), SHIFT (S2), BREAK (S6); sampled at counts $00\/$10\/$30\"},{\"id\":\"START\",\"group\":\"extra\",\"name\":\"START\",\"chip\":\"U17\",\"chip_part\":\"GTIA CO14805\",\"chip_pin\":\"12\",\"conn_pin\":\"20\",\"also_it\":\"CONSOL $D01F bit 0; tasto verso massa\",\"also_en\":\"CONSOL $D01F bit 0; key to ground\"},{\"id\":\"SELECT\",\"group\":\"extra\",\"name\":\"SELECT\",\"chip\":\"U17\",\"chip_part\":\"GTIA CO14805\",\"chip_pin\":\"13\",\"conn_pin\":\"21\",\"also_it\":\"CONSOL $D01F bit 1; tasto verso massa\",\"also_en\":\"CONSOL $D01F bit 1; key to ground\"},{\"id\":\"OPTION\",\"group\":\"extra\",\"name\":\"OPTION\",\"chip\":\"U17\",\"chip_part\":\"GTIA CO14805\",\"chip_pin\":\"14\",\"conn_pin\":\"22\",\"also_it\":\"CONSOL $D01F bit 2; tasto verso massa\",\"also_en\":\"CONSOL $D01F bit 2; key to ground\"},{\"id\":\"RESET\",\"group\":\"extra\",\"name\":\"RESET\",\"chip\":\"U19\",\"chip_part\":\"74LS14\",\"chip_pin\":\"11\",\"conn_pin\":\"23\",\"also_it\":\"L14 22 \u00b5H, R40 100 \u03a9, rete RC, U19 (trigger di Schmitt) -> \/RES 6502\",\"also_en\":\"L14 22 \u00b5H, R40 100 \u03a9, RC network, U19 (Schmitt trigger) -> 6502 \/RES\"}],\"connector\":{\"ref\":\"J8\",\"it\":\"Connettore tastiera 24 pin (cavo piatto, pin 1 in alto)\",\"en\":\"24-pin keyboard connector (ribbon cable, pin 1 at the top)\",\"pins\":[{\"n\":\"1\",\"sig\":\"S6\",\"note_it\":\"linea SCAN, U25 canale X1, via RN1-RN4 470 \u03a9\",\"note_en\":\"SCAN line, U25 channel X1, via RN1-RN4 470 \u03a9\"},{\"n\":\"2\",\"sig\":\"S3\",\"note_it\":\"linea SCAN, U25 canale X4, via RN1-RN4 470 \u03a9\",\"note_en\":\"SCAN line, U25 channel X4, via RN1-RN4 470 \u03a9\"},{\"n\":\"3\",\"sig\":\"S1\",\"note_it\":\"linea SCAN, U25 canale X6, via RN1-RN4 470 \u03a9\",\"note_en\":\"SCAN line, U25 channel X6, via RN1-RN4 470 \u03a9\"},{\"n\":\"4\",\"sig\":\"S5\",\"note_it\":\"linea SCAN, U25 canale X2, via RN1-RN4 470 \u03a9\",\"note_en\":\"SCAN line, U25 channel X2, via RN1-RN4 470 \u03a9\"},{\"n\":\"5\",\"sig\":\"S0\",\"note_it\":\"linea SCAN, U25 canale X7, via RN1-RN4 470 \u03a9\",\"note_en\":\"SCAN line, U25 channel X7, via RN1-RN4 470 \u03a9\"},{\"n\":\"6\",\"sig\":\"S7\",\"note_it\":\"linea SCAN, U25 canale X0, via RN1-RN4 470 \u03a9\",\"note_en\":\"SCAN line, U25 channel X0, via RN1-RN4 470 \u03a9\"},{\"n\":\"7\",\"sig\":\"S4\",\"note_it\":\"linea SCAN, U25 canale X3, via RN1-RN4 470 \u03a9\",\"note_en\":\"SCAN line, U25 channel X3, via RN1-RN4 470 \u03a9\"},{\"n\":\"8\",\"sig\":\"S2\",\"note_it\":\"linea SCAN, U25 canale X5, via RN1-RN4 470 \u03a9\",\"note_en\":\"SCAN line, U25 channel X5, via RN1-RN4 470 \u03a9\"},{\"n\":\"9\",\"sig\":\"KR2\",\"note_it\":\"KR2 via R137 verso POKEY pin 16; CTRL\/SHIFT\/BREAK\",\"note_en\":\"KR2 via R137 to POKEY pin 16; CTRL\/SHIFT\/BREAK\"},{\"n\":\"10\",\"sig\":\"R3\",\"note_it\":\"linea SENSE, U24 canale X4, via RN1-RN4 470 \u03a9\",\"note_en\":\"SENSE line, U24 channel X4, via RN1-RN4 470 \u03a9\"},{\"n\":\"11\",\"sig\":\"R1\",\"note_it\":\"linea SENSE, U24 canale X6, via RN1-RN4 470 \u03a9\",\"note_en\":\"SENSE line, U24 channel X6, via RN1-RN4 470 \u03a9\"},{\"n\":\"12\",\"sig\":\"R5\",\"note_it\":\"linea SENSE, U24 canale X2, via RN1-RN4 470 \u03a9\",\"note_en\":\"SENSE line, U24 channel X2, via RN1-RN4 470 \u03a9\"},{\"n\":\"13\",\"sig\":\"R0\",\"note_it\":\"linea SENSE, U24 canale X7, via RN1-RN4 470 \u03a9\",\"note_en\":\"SENSE line, U24 channel X7, via RN1-RN4 470 \u03a9\"},{\"n\":\"14\",\"sig\":\"R2\",\"note_it\":\"linea SENSE, U24 canale X5, via RN1-RN4 470 \u03a9\",\"note_en\":\"SENSE line, U24 channel X5, via RN1-RN4 470 \u03a9\"},{\"n\":\"15\",\"sig\":\"R6\",\"note_it\":\"linea SENSE, U24 canale X1, via RN1-RN4 470 \u03a9\",\"note_en\":\"SENSE line, U24 channel X1, via RN1-RN4 470 \u03a9\"},{\"n\":\"16\",\"sig\":\"R7\",\"note_it\":\"linea SENSE, U24 canale X0, via RN1-RN4 470 \u03a9\",\"note_en\":\"SENSE line, U24 channel X0, via RN1-RN4 470 \u03a9\"},{\"n\":\"17\",\"sig\":\"R4\",\"note_it\":\"linea SENSE, U24 canale X3, via RN1-RN4 470 \u03a9\",\"note_en\":\"SENSE line, U24 channel X3, via RN1-RN4 470 \u03a9\"},{\"n\":\"18\",\"sig\":\"GND\",\"note_it\":\"massa comune di START\/SELECT\/OPTION\/RESET e LED\",\"note_en\":\"common ground for START\/SELECT\/OPTION\/RESET and LED\"},{\"n\":\"19\",\"sig\":\"+5V\",\"note_it\":\"non usato dalla matrice\",\"note_en\":\"not used by the matrix\"},{\"n\":\"20\",\"sig\":\"START\"},{\"n\":\"21\",\"sig\":\"SELECT\"},{\"n\":\"22\",\"sig\":\"OPTION\"},{\"n\":\"23\",\"sig\":\"RESET\"},{\"n\":\"24\",\"sig\":\"LED\",\"note_it\":\"LED di accensione, +5 V tramite R95 220 \u03a9\",\"note_en\":\"power LED, +5 V via R95 220 \u03a9\"}]},\"layout\":[{\"id\":\"esc\",\"t\":\"ESC\",\"x\":0,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"1\",\"t\":\"1\",\"t2\":\"!\",\"x\":1,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"2\",\"t\":\"2\",\"t2\":\"\\\"\",\"x\":2,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"3\",\"t\":\"3\",\"t2\":\"#\",\"x\":3,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"4\",\"t\":\"4\",\"t2\":\"$\",\"x\":4,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"5\",\"t\":\"5\",\"t2\":\"%\",\"x\":5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"6\",\"t\":\"6\",\"t2\":\"&\",\"x\":6,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"7\",\"t\":\"7\",\"t2\":\"'\",\"x\":7,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"8\",\"t\":\"8\",\"t2\":\"@\",\"x\":8,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"9\",\"t\":\"9\",\"t2\":\"(\",\"x\":9,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"0\",\"t\":\"0\",\"t2\":\")\",\"x\":10,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"lt\",\"t\":\"<\",\"t2\":\"CLEAR\",\"x\":11,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"gt\",\"t\":\">\",\"t2\":\"INSERT\",\"x\":12,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"bksp\",\"t\":\"BACK S\",\"t2\":\"DELETE\",\"x\":13,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"break\",\"t\":\"BREAK\",\"x\":14,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"tab\",\"t\":\"TAB\",\"x\":0,\"y\":1,\"w\":1.5,\"h\":1},{\"id\":\"q\",\"t\":\"Q\",\"x\":1.5,\"y\":1,\"w\":1.0,\"h\":1},{\"id\":\"w\",\"t\":\"W\",\"x\":2.5,\"y\":1,\"w\":1.0,\"h\":1},{\"id\":\"e\",\"t\":\"E\",\"x\":3.5,\"y\":1,\"w\":1.0,\"h\":1},{\"id\":\"r\",\"t\":\"R\",\"x\":4.5,\"y\":1,\"w\":1.0,\"h\":1},{\"id\":\"t\",\"t\":\"T\",\"x\":5.5,\"y\":1,\"w\":1.0,\"h\":1},{\"id\":\"y\",\"t\":\"Y\",\"x\":6.5,\"y\":1,\"w\":1.0,\"h\":1},{\"id\":\"u\",\"t\":\"U\",\"x\":7.5,\"y\":1,\"w\":1.0,\"h\":1},{\"id\":\"i\",\"t\":\"I\",\"x\":8.5,\"y\":1,\"w\":1.0,\"h\":1},{\"id\":\"o\",\"t\":\"O\",\"x\":9.5,\"y\":1,\"w\":1.0,\"h\":1},{\"id\":\"p\",\"t\":\"P\",\"x\":10.5,\"y\":1,\"w\":1.0,\"h\":1},{\"id\":\"minus\",\"t\":\"-\",\"t2\":\"_\",\"x\":11.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"equal\",\"t\":\"=\",\"t2\":\"|\",\"x\":12.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"return\",\"t\":\"RETURN\",\"x\":13.5,\"y\":1,\"w\":1.5,\"h\":1},{\"id\":\"ctrl\",\"t\":\"CONTROL\",\"x\":0,\"y\":2,\"w\":1.75,\"h\":1},{\"id\":\"a\",\"t\":\"A\",\"x\":1.75,\"y\":2,\"w\":1.0,\"h\":1},{\"id\":\"s\",\"t\":\"S\",\"x\":2.75,\"y\":2,\"w\":1.0,\"h\":1},{\"id\":\"d\",\"t\":\"D\",\"x\":3.75,\"y\":2,\"w\":1.0,\"h\":1},{\"id\":\"f\",\"t\":\"F\",\"x\":4.75,\"y\":2,\"w\":1.0,\"h\":1},{\"id\":\"g\",\"t\":\"G\",\"x\":5.75,\"y\":2,\"w\":1.0,\"h\":1},{\"id\":\"h\",\"t\":\"H\",\"x\":6.75,\"y\":2,\"w\":1.0,\"h\":1},{\"id\":\"j\",\"t\":\"J\",\"x\":7.75,\"y\":2,\"w\":1.0,\"h\":1},{\"id\":\"k\",\"t\":\"K\",\"x\":8.75,\"y\":2,\"w\":1.0,\"h\":1},{\"id\":\"l\",\"t\":\"L\",\"x\":9.75,\"y\":2,\"w\":1.0,\"h\":1},{\"id\":\"semicolon\",\"t\":\";\",\"t2\":\":\",\"x\":10.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"plus\",\"t\":\"+\",\"t2\":\"\\\\\",\"x\":11.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"star\",\"t\":\"*\",\"t2\":\"^\",\"x\":12.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"caps\",\"t\":\"CAPS\",\"x\":13.75,\"y\":2,\"w\":1.25,\"h\":1},{\"id\":\"lshift\",\"t\":\"SHIFT\",\"x\":0,\"y\":3,\"w\":2.25,\"h\":1},{\"id\":\"z\",\"t\":\"Z\",\"x\":2.25,\"y\":3,\"w\":1.0,\"h\":1},{\"id\":\"x\",\"t\":\"X\",\"x\":3.25,\"y\":3,\"w\":1.0,\"h\":1},{\"id\":\"c\",\"t\":\"C\",\"x\":4.25,\"y\":3,\"w\":1.0,\"h\":1},{\"id\":\"v\",\"t\":\"V\",\"x\":5.25,\"y\":3,\"w\":1.0,\"h\":1},{\"id\":\"b\",\"t\":\"B\",\"x\":6.25,\"y\":3,\"w\":1.0,\"h\":1},{\"id\":\"n\",\"t\":\"N\",\"x\":7.25,\"y\":3,\"w\":1.0,\"h\":1},{\"id\":\"m\",\"t\":\"M\",\"x\":8.25,\"y\":3,\"w\":1.0,\"h\":1},{\"id\":\"comma\",\"t\":\",\",\"t2\":\"[\",\"x\":9.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"period\",\"t\":\".\",\"t2\":\"]\",\"x\":10.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"slash\",\"t\":\"\/\",\"t2\":\"?\",\"x\":11.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"rshift\",\"t\":\"SHIFT\",\"x\":12.25,\"y\":3,\"w\":1.75,\"h\":1},{\"id\":\"inv\",\"t\":\"ATARI\",\"x\":14,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"space\",\"t\":\"SPACE\",\"x\":3,\"y\":4,\"w\":9,\"h\":1},{\"id\":\"reset\",\"t\":\"RESET\",\"x\":15.5,\"y\":0,\"w\":1.5,\"h\":1},{\"id\":\"option\",\"t\":\"OPTION\",\"x\":15.5,\"y\":1,\"w\":1.5,\"h\":1},{\"id\":\"select\",\"t\":\"SELECT\",\"x\":15.5,\"y\":2,\"w\":1.5,\"h\":1},{\"id\":\"start\",\"t\":\"START\",\"x\":15.5,\"y\":3,\"w\":1.5,\"h\":1},{\"id\":\"help\",\"t\":\"HELP\",\"x\":15.5,\"y\":4,\"w\":1.5,\"h\":1}],\"matrix\":{\"l\":[\"S0\",\"R0\"],\"j\":[\"S0\",\"R1\"],\"semicolon\":[\"S0\",\"R2\"],\"k\":[\"S0\",\"R5\"],\"plus\":[\"S0\",\"R6\"],\"star\":[\"S0\",\"R7\"],\"o\":[\"S1\",\"R0\"],\"p\":[\"S1\",\"R2\"],\"u\":[\"S1\",\"R3\"],\"return\":[\"S1\",\"R4\"],\"i\":[\"S1\",\"R5\"],\"minus\":[\"S1\",\"R6\"],\"equal\":[\"S1\",\"R7\"],\"v\":[\"S2\",\"R0\"],\"help\":[\"S2\",\"R1\"],\"c\":[\"S2\",\"R2\"],\"b\":[\"S2\",\"R5\"],\"x\":[\"S2\",\"R6\"],\"z\":[\"S2\",\"R7\"],\"4\":[\"S3\",\"R0\"],\"3\":[\"S3\",\"R2\"],\"6\":[\"S3\",\"R3\"],\"esc\":[\"S3\",\"R4\"],\"5\":[\"S3\",\"R5\"],\"2\":[\"S3\",\"R6\"],\"1\":[\"S3\",\"R7\"],\"comma\":[\"S4\",\"R0\"],\"space\":[\"S4\",\"R1\"],\"period\":[\"S4\",\"R2\"],\"n\":[\"S4\",\"R3\"],\"m\":[\"S4\",\"R5\"],\"slash\":[\"S4\",\"R6\"],\"inv\":[\"S4\",\"R7\"],\"r\":[\"S5\",\"R0\"],\"e\":[\"S5\",\"R2\"],\"y\":[\"S5\",\"R3\"],\"tab\":[\"S5\",\"R4\"],\"t\":[\"S5\",\"R5\"],\"w\":[\"S5\",\"R6\"],\"q\":[\"S5\",\"R7\"],\"9\":[\"S6\",\"R0\"],\"0\":[\"S6\",\"R2\"],\"7\":[\"S6\",\"R3\"],\"bksp\":[\"S6\",\"R4\"],\"8\":[\"S6\",\"R5\"],\"lt\":[\"S6\",\"R6\"],\"gt\":[\"S6\",\"R7\"],\"f\":[\"S7\",\"R0\"],\"h\":[\"S7\",\"R1\"],\"d\":[\"S7\",\"R2\"],\"caps\":[\"S7\",\"R4\"],\"g\":[\"S7\",\"R5\"],\"s\":[\"S7\",\"R6\"],\"a\":[\"S7\",\"R7\"],\"ctrl\":[\"S0\",\"KR2\"],\"lshift\":[\"S2\",\"KR2\"],\"rshift\":[\"S2\",\"KR2\"],\"break\":[\"S6\",\"KR2\"]},\"special\":{\"start\":{\"lines\":[\"START\",\"GND\"],\"it\":\"Non \u00e8 nella matrice del POKEY: chiude la linea START verso massa (pin 18 del connettore). Il segnale va, attraverso una resistenza in serie, all'ingresso console del GTIA U17 (pin 12) e si legge nel bit 0 di CONSOL ($D01F).\",\"en\":\"Not in the POKEY matrix: it shorts the START line to ground (connector pin 18). The signal goes through a series resistor to a console input of GTIA U17 (pin 12) and reads as bit 0 of CONSOL ($D01F).\"},\"select\":{\"lines\":[\"SELECT\",\"GND\"],\"it\":\"Non \u00e8 nella matrice del POKEY: chiude la linea SELECT verso massa (pin 18 del connettore). Il segnale va, attraverso una resistenza in serie, all'ingresso console del GTIA U17 (pin 13) e si legge nel bit 1 di CONSOL ($D01F).\",\"en\":\"Not in the POKEY matrix: it shorts the SELECT line to ground (connector pin 18). The signal goes through a series resistor to a console input of GTIA U17 (pin 13) and reads as bit 1 of CONSOL ($D01F).\"},\"option\":{\"lines\":[\"OPTION\",\"GND\"],\"it\":\"Non \u00e8 nella matrice del POKEY: chiude la linea OPTION verso massa (pin 18 del connettore). Il segnale va, attraverso una resistenza in serie, all'ingresso console del GTIA U17 (pin 14) e si legge nel bit 2 di CONSOL ($D01F).\",\"en\":\"Not in the POKEY matrix: it shorts the OPTION line to ground (connector pin 18). The signal goes through a series resistor to a console input of GTIA U17 (pin 14) and reads as bit 2 of CONSOL ($D01F).\"},\"reset\":{\"lines\":[\"RESET\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: chiude la linea RESET (pin 23) verso massa (pin 18). Il segnale passa per L14 e R40, la rete RC di power-on reset e due porte del 74LS14 U19, e arriva al pin \/RES del 6502. Sugli XL il RESET \u00e8 un vero reset hardware (sul 400\/800 era un NMI).\",\"en\":\"Not in the matrix: it shorts the RESET line (pin 23) to ground (pin 18). The signal goes through L14 and R40, the power-on reset RC network and two gates of 74LS14 U19 to the 6502 \/RES pin. On the XL, RESET is a real hardware reset (on the 400\/800 it was an NMI).\"},\"rshift\":{\"lines\":[\"S2\",\"KR2\"],\"it\":\"I due SHIFT sono collegati in parallelo sulle stesse linee (S2 e KR2): il software non li distingue. Se uno solo non va, il guasto \u00e8 sulla membrana di quel tasto.\",\"en\":\"Both SHIFT keys are wired in parallel on the same lines (S2 and KR2), so software cannot tell them apart. If only one fails, the fault is in that key's membrane contact.\"}},\"notes_it\":[\"I 4051 sono solo commutatori: se non va un'intera fila di tasti con lo stesso codice alto (stessa linea S, per esempio 1-6 + ESC), controllare la pista su J8, la resistenza in serie e il canale corrispondente di U25; se non va una 'colonna' di tasti con lo stesso codice basso (stessa linea R), U24. Se non va nessun tasto, verificare alimentazione di U24\/U25 (pin 16 a +5 V, pin 6\/7\/8 a massa), la linea KR1 (POKEY pin 25 - U24 pin 3) e il POKEY.\",\"Il canale X del 4051 \u00e8 il complemento del numero di linea (X = 7 - n) perch\u00e9 le uscite \/K del POKEY sono attive basse: ad esempio la linea S0 (codici $00-$07) \u00e8 il canale X7 di U25, pin 4. Con l'oscilloscopio si vedono su A\/B\/C onde quadre a 15,7 kHz divisa per 2, 4, 8 (U24) e 16, 32, 64 (U25).\",\"La matrice non ha diodi: tre tasti premuti agli angoli di un rettangolo creano un tasto fantasma (per esempio L+J+V d\u00e0 HELP). Anche CTRL, SHIFT e BREAK partecipano, per cui CTRL+SHIFT con i tasti dei codici $00-$07 e $10-$17 non viene riconosciuto: \u00e8 normale, non \u00e8 un guasto.\",\"Codici senza tasto: $03, $04, $13, $14 (F1-F4, presenti solo sul 1200XL) e $09, $19, $24, $29, $31, $3B. Le frecce cursore sono CTRL + - = + * e non hanno linee proprie; HELP \u00e8 un normale tasto della matrice (codice $11).\",\"Con il debounce attivo (normale) il POKEY rifiuta due tasti normali premuti insieme: un tasto in corto permanente sulla membrana blocca quindi anche tutti gli altri. Se la tastiera \u00e8 'morta' ma il self test (OPTION all'accensione) mostra un tasto sempre premuto, cercare il corto su quelle due linee.\",\"Sul J8 dell'800XL i pin 1-8 sono le linee SCAN, il pin 9 \u00e8 KR2, i pin 10-17 sono le linee SENSE, poi massa, +5 V, i quattro tasti console e il LED. Il connettore della serie XE (130XE\/65XE\/800XE) ha un'assegnazione diversa: una tastiera XE non si monta su un 800XL (o viceversa) senza adattatore.\",\"Il tasto in basso a destra con il logo Atari \u00e8 il tasto video inverso (codice $27). La tastiera si pu\u00f2 provare tasto per tasto con il self test integrato (comando BYE dal BASIC, poi Keyboard test).\"],\"notes_en\":[\"The 4051s are only switches: if a whole group of keys with the same high code fails (same S line, e.g. 1-6 + ESC), check the J8 track, the series resistor and the matching U25 channel; if a 'column' of keys with the same low code fails (same R line), check U24. If no key works at all, check U24\/U25 supply (pin 16 at +5 V, pins 6\/7\/8 to ground), the KR1 line (POKEY pin 25 - U24 pin 3) and POKEY itself.\",\"The 4051 channel X is the complement of the line number (X = 7 - n) because POKEY's \/K outputs are active low: e.g. line S0 (codes $00-$07) is channel X7 of U25, pin 4. On a scope, A\/B\/C carry square waves at 15.7 kHz divided by 2, 4, 8 (U24) and 16, 32, 64 (U25).\",\"The matrix has no diodes: three keys held at the corners of a rectangle create a phantom key (e.g. L+J+V gives HELP). CTRL, SHIFT and BREAK take part too, so CTRL+SHIFT with the keys of codes $00-$07 and $10-$17 is not recognised: that is normal, not a fault.\",\"Codes with no key: $03, $04, $13, $14 (F1-F4, fitted only on the 1200XL) and $09, $19, $24, $29, $31, $3B. The cursor arrows are CTRL + - = + * and have no lines of their own; HELP is an ordinary matrix key (code $11).\",\"With debounce enabled (the normal setting) POKEY rejects two ordinary keys held together, so one key permanently shorted on the membrane also locks out all the others. If the keyboard is 'dead' but the self test (OPTION at power-on) shows one key always pressed, look for the short on those two lines.\",\"On the 800XL J8, pins 1-8 are the SCAN lines, pin 9 is KR2, pins 10-17 are the SENSE lines, then ground, +5 V, the four console keys and the LED. The XE-series connector (130XE\/65XE\/800XE) is assigned differently: an XE keyboard does not fit an 800XL (or vice versa) without an adaptor.\",\"The bottom-right key with the Atari logo is the inverse-video key (code $27). The keyboard can be checked key by key with the built-in self test (type BYE in BASIC, then Keyboard test).\"],\"board_it\":\"scheda CO61851 (versione USA\/NTSC disegnata nel Field Service Manual dell'800XL)\",\"board_en\":\"CO61851 board (US\/NTSC version drawn in the 800XL Field Service Manual)\"},\"atarixe\":{\"id\":\"atarixe\",\"name\":\"Atari 130XE\",\"sources\":[{\"t\":\"MAME src\/mame\/atari\/atari400.cpp (INPUT_PORTS atari_keyboard \/ a800xl), atari400_m.cpp (a800_keyboard), src\/devices\/sound\/pokey.h (POKEY pinout)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/mame\/atari\/atari400.cpp\"},{\"t\":\"Altirra Hardware Reference Manual (Avery Lee), 5.8 Keyboard scan: key code tables 11\/12, Control\/Shift\/Break on $00\/$10\/$30, key conflicts\",\"u\":\"https:\/\/www.virtualdub.org\/downloads\/Altirra%20Hardware%20Reference%20Manual.pdf\"},{\"t\":\"130XE Personal Computer Field Service Manual (compiled edition, schematics redrawn by jer\/eightbitter): Fig. 2-1 CO70065\/CO70067 schematic (J8, U22, U24, U25, U17, U19), Fig. 2-7 65XE CO70025, Fig. 2-11 65XE\/800XE CA200519, Fig. 2-15 XE Keyboard Matrix with J8 pin numbers\",\"u\":\"https:\/\/www.valoroso.it\/file-share\/documenti-manuali\/Atari-130XE-service-manual.pdf\"},{\"t\":\"Atarimania FAQ 1.14, connector pinouts (XEGS keyboard port, for comparison)\",\"u\":\"https:\/\/www.atarimania.com\/faq-atari-400-800-xl-xe-what-are-the-pinouts-for-the-various-connectors-on-the-atari_16.html\"}],\"scan_it\":\"Il POKEY U22 fa girare un contatore da $00 a $3F (un passo per riga TV, circa 4 ms per giro) e lo presenta sulle uscite \/K0-\/K5 (pin 23, 22, 21, 20, 19, 18), attive basse. \/K3-\/K5 vanno agli ingressi A, B, C (pin 11, 10, 9) del 4051 U25, che collega una delle otto linee SCAN (S0-S7) al suo comune (pin 3), messo a massa tramite R90 da 100 \u03a9. \/K0-\/K2 vanno agli ingressi A, B, C del 4051 U24, che collega una delle otto linee SENSE (R0-R7) al suo comune (pin 3), cio\u00e8 all'ingresso KR1 del POKEY (pin 25), con pull-up R89 da 47 k\u03a9. Se il tasto all'incrocio delle due linee selezionate \u00e8 premuto, KR1 va basso e il POKEY scrive il conteggio in KBCODE ($D209): i bit 5-3 sono il numero della linea S, i bit 2-0 quello della linea R. Poich\u00e9 le uscite K sono invertite, il canale del 4051 \u00e8 il complemento del numero di linea: linea n = canale X(7-n). CTRL, SHIFT e BREAK collegano le linee S0, S2 e S6 direttamente a KR2 (POKEY pin 16, connettore pin 20), che il POKEY campiona quando il contatore vale $00, $10 e $30. START, SELECT e OPTION non passano dal POKEY: vanno al GTIA; RESET va al circuito di reset.\",\"scan_en\":\"POKEY U22 runs a counter from $00 to $3F (one step per TV line, about 4 ms per pass) and puts it on its active-low \/K0-\/K5 outputs (pins 23, 22, 21, 20, 19, 18). \/K3-\/K5 drive inputs A, B, C (pins 11, 10, 9) of 4051 U25, which connects one of the eight SCAN lines (S0-S7) to its common pin 3, tied to ground through R90 (100 \u03a9). \/K0-\/K2 drive inputs A, B, C of 4051 U24, which connects one of the eight SENSE lines (R0-R7) to its common pin 3, i.e. to POKEY input KR1 (pin 25), pulled up by R89 (47 k\u03a9). If the key where the two selected lines cross is down, KR1 goes low and POKEY stores the count in KBCODE ($D209): bits 5-3 are the S line number, bits 2-0 the R line number. Because the K outputs are inverted, the 4051 channel is the complement of the line number: line n = channel X(7-n). CTRL, SHIFT and BREAK connect lines S0, S2 and S6 straight to KR2 (POKEY pin 16, connector pin 20), which POKEY samples at counts $00, $10 and $30. START, SELECT and OPTION bypass POKEY and go to GTIA; RESET goes to the reset circuit.\",\"lines\":[{\"id\":\"S0\",\"group\":\"col\",\"name\":\"SCAN 0 ($00-$07)\",\"chip\":\"U25\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"4\",\"conn_pin\":\"7\",\"also_it\":\"K5-K3=0, canale X7, anche CTRL\",\"also_en\":\"K5-K3=0, channel X7, CTRL too\"},{\"id\":\"S1\",\"group\":\"col\",\"name\":\"SCAN 1 ($08-$0F)\",\"chip\":\"U25\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"2\",\"conn_pin\":\"12\",\"also_it\":\"K5-K3=1, canale X6\",\"also_en\":\"K5-K3=1, channel X6\"},{\"id\":\"S2\",\"group\":\"col\",\"name\":\"SCAN 2 ($10-$17)\",\"chip\":\"U25\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"5\",\"conn_pin\":\"6\",\"also_it\":\"K5-K3=2, canale X5, anche SHIFT\",\"also_en\":\"K5-K3=2, channel X5, SHIFT too\"},{\"id\":\"S3\",\"group\":\"col\",\"name\":\"SCAN 3 ($18-$1F)\",\"chip\":\"U25\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"1\",\"conn_pin\":\"14\",\"also_it\":\"K5-K3=3, canale X4\",\"also_en\":\"K5-K3=3, channel X4\"},{\"id\":\"S4\",\"group\":\"col\",\"name\":\"SCAN 4 ($20-$27)\",\"chip\":\"U25\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"12\",\"conn_pin\":\"5\",\"also_it\":\"K5-K3=4, canale X3\",\"also_en\":\"K5-K3=4, channel X3\"},{\"id\":\"S5\",\"group\":\"col\",\"name\":\"SCAN 5 ($28-$2F)\",\"chip\":\"U25\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"15\",\"conn_pin\":\"15\",\"also_it\":\"K5-K3=5, canale X2\",\"also_en\":\"K5-K3=5, channel X2\"},{\"id\":\"S6\",\"group\":\"col\",\"name\":\"SCAN 6 ($30-$37)\",\"chip\":\"U25\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"14\",\"conn_pin\":\"13\",\"also_it\":\"K5-K3=6, canale X1, anche BREAK\",\"also_en\":\"K5-K3=6, channel X1, BREAK too\"},{\"id\":\"S7\",\"group\":\"col\",\"name\":\"SCAN 7 ($38-$3F)\",\"chip\":\"U25\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"13\",\"conn_pin\":\"18\",\"also_it\":\"K5-K3=7, canale X0\",\"also_en\":\"K5-K3=7, channel X0\"},{\"id\":\"R0\",\"group\":\"row\",\"name\":\"SENSE 0 (codice +0)\",\"chip\":\"U24\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"4\",\"conn_pin\":\"9\",\"also_it\":\"K2-K0=0, canale X7 -> KR1\",\"also_en\":\"K2-K0=0, channel X7 -> KR1\"},{\"id\":\"R1\",\"group\":\"row\",\"name\":\"SENSE 1 (codice +1)\",\"chip\":\"U24\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"2\",\"conn_pin\":\"4\",\"also_it\":\"K2-K0=1, canale X6 -> KR1\",\"also_en\":\"K2-K0=1, channel X6 -> KR1\"},{\"id\":\"R2\",\"group\":\"row\",\"name\":\"SENSE 2 (codice +2)\",\"chip\":\"U24\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"5\",\"conn_pin\":\"10\",\"also_it\":\"K2-K0=2, canale X5 -> KR1\",\"also_en\":\"K2-K0=2, channel X5 -> KR1\"},{\"id\":\"R3\",\"group\":\"row\",\"name\":\"SENSE 3 (codice +3)\",\"chip\":\"U24\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"1\",\"conn_pin\":\"19\",\"also_it\":\"K2-K0=3, canale X4 -> KR1\",\"also_en\":\"K2-K0=3, channel X4 -> KR1\"},{\"id\":\"R4\",\"group\":\"row\",\"name\":\"SENSE 4 (codice +4)\",\"chip\":\"U24\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"12\",\"conn_pin\":\"16\",\"also_it\":\"K2-K0=4, canale X3 -> KR1\",\"also_en\":\"K2-K0=4, channel X3 -> KR1\"},{\"id\":\"R5\",\"group\":\"row\",\"name\":\"SENSE 5 (codice +5)\",\"chip\":\"U24\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"15\",\"conn_pin\":\"8\",\"also_it\":\"K2-K0=5, canale X2 -> KR1\",\"also_en\":\"K2-K0=5, channel X2 -> KR1\"},{\"id\":\"R6\",\"group\":\"row\",\"name\":\"SENSE 6 (codice +6)\",\"chip\":\"U24\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"14\",\"conn_pin\":\"11\",\"also_it\":\"K2-K0=6, canale X1 -> KR1\",\"also_en\":\"K2-K0=6, channel X1 -> KR1\"},{\"id\":\"R7\",\"group\":\"row\",\"name\":\"SENSE 7 (codice +7)\",\"chip\":\"U24\",\"chip_part\":\"CD4051B\",\"chip_pin\":\"13\",\"conn_pin\":\"17\",\"also_it\":\"K2-K0=7, canale X0 -> KR1\",\"also_en\":\"K2-K0=7, channel X0 -> KR1\"},{\"id\":\"KR2\",\"group\":\"row\",\"name\":\"KR2\",\"chip\":\"U22\",\"chip_part\":\"POKEY CO12294\",\"chip_pin\":\"16\",\"conn_pin\":\"20\",\"also_it\":\"CTRL (S0), SHIFT (S2), BREAK (S6); letta ai conteggi $00\/$10\/$30\",\"also_en\":\"CTRL (S0), SHIFT (S2), BREAK (S6); sampled at counts $00\/$10\/$30\"},{\"id\":\"START\",\"group\":\"extra\",\"name\":\"START\",\"chip\":\"U17\",\"chip_part\":\"GTIA CO14805\",\"chip_pin\":\"12\",\"conn_pin\":\"21\",\"also_it\":\"CONSOL $D01F bit 0; tasto verso massa\",\"also_en\":\"CONSOL $D01F bit 0; key to ground\"},{\"id\":\"SELECT\",\"group\":\"extra\",\"name\":\"SELECT\",\"chip\":\"U17\",\"chip_part\":\"GTIA CO14805\",\"chip_pin\":\"13\",\"conn_pin\":\"22\",\"also_it\":\"CONSOL $D01F bit 1; tasto verso massa\",\"also_en\":\"CONSOL $D01F bit 1; key to ground\"},{\"id\":\"OPTION\",\"group\":\"extra\",\"name\":\"OPTION\",\"chip\":\"U17\",\"chip_part\":\"GTIA CO14805\",\"chip_pin\":\"14\",\"conn_pin\":\"23\",\"also_it\":\"CONSOL $D01F bit 2; tasto verso massa\",\"also_en\":\"CONSOL $D01F bit 2; key to ground\"},{\"id\":\"RESET\",\"group\":\"extra\",\"name\":\"RESET\",\"chip\":\"U19\",\"chip_part\":\"NE555\",\"chip_pin\":\"\",\"conn_pin\":\"24\",\"also_it\":\"L14 22 \u00b5H, R40 100 \u03a9, C200 verso il 555 U19 del reset\",\"also_en\":\"L14 22 \u00b5H, R40 100 \u03a9, C200 to the U19 555 reset timer\"}],\"connector\":{\"ref\":\"J8\",\"it\":\"Connettore tastiera 24 pin (cavo a foglio flessibile)\",\"en\":\"24-pin keyboard connector (flexible foil cable)\",\"pins\":[{\"n\":\"1\",\"sig\":\"+5V\",\"note_it\":\"+5 V con C93\/C94 verso massa; non usato dalla matrice\",\"note_en\":\"+5 V with C93\/C94 to ground; not used by the matrix\"},{\"n\":\"2\",\"sig\":\"LED\",\"note_it\":\"LED di accensione D1 (anodo), +5 V tramite R95\",\"note_en\":\"power LED D1 (anode), +5 V via R95\"},{\"n\":\"3\",\"sig\":\"GND\",\"note_it\":\"massa comune di START\/SELECT\/OPTION\/RESET e catodo LED\",\"note_en\":\"common ground for START\/SELECT\/OPTION\/RESET and LED cathode\"},{\"n\":\"4\",\"sig\":\"R1\",\"note_it\":\"linea SENSE, U24 canale X6, via R152 270 \u03a9\",\"note_en\":\"SENSE line, U24 channel X6, via R152 270 \u03a9\"},{\"n\":\"5\",\"sig\":\"S4\",\"note_it\":\"linea SCAN, U25 canale X3, via R142 270 \u03a9\",\"note_en\":\"SCAN line, U25 channel X3, via R142 270 \u03a9\"},{\"n\":\"6\",\"sig\":\"S2\",\"note_it\":\"linea SCAN, U25 canale X5, via R140 270 \u03a9\",\"note_en\":\"SCAN line, U25 channel X5, via R140 270 \u03a9\"},{\"n\":\"7\",\"sig\":\"S0\",\"note_it\":\"linea SCAN, U25 canale X7, via R138 270 \u03a9\",\"note_en\":\"SCAN line, U25 channel X7, via R138 270 \u03a9\"},{\"n\":\"8\",\"sig\":\"R5\",\"note_it\":\"linea SENSE, U24 canale X2, via R148 270 \u03a9\",\"note_en\":\"SENSE line, U24 channel X2, via R148 270 \u03a9\"},{\"n\":\"9\",\"sig\":\"R0\",\"note_it\":\"linea SENSE, U24 canale X7, via R153 270 \u03a9\",\"note_en\":\"SENSE line, U24 channel X7, via R153 270 \u03a9\"},{\"n\":\"10\",\"sig\":\"R2\",\"note_it\":\"linea SENSE, U24 canale X5, via R151 270 \u03a9\",\"note_en\":\"SENSE line, U24 channel X5, via R151 270 \u03a9\"},{\"n\":\"11\",\"sig\":\"R6\",\"note_it\":\"linea SENSE, U24 canale X1, via R147 270 \u03a9\",\"note_en\":\"SENSE line, U24 channel X1, via R147 270 \u03a9\"},{\"n\":\"12\",\"sig\":\"S1\",\"note_it\":\"linea SCAN, U25 canale X6, via R139 270 \u03a9\",\"note_en\":\"SCAN line, U25 channel X6, via R139 270 \u03a9\"},{\"n\":\"13\",\"sig\":\"S6\",\"note_it\":\"linea SCAN, U25 canale X1, via R144 270 \u03a9\",\"note_en\":\"SCAN line, U25 channel X1, via R144 270 \u03a9\"},{\"n\":\"14\",\"sig\":\"S3\",\"note_it\":\"linea SCAN, U25 canale X4, via R141 270 \u03a9\",\"note_en\":\"SCAN line, U25 channel X4, via R141 270 \u03a9\"},{\"n\":\"15\",\"sig\":\"S5\",\"note_it\":\"linea SCAN, U25 canale X2, via R143 270 \u03a9\",\"note_en\":\"SCAN line, U25 channel X2, via R143 270 \u03a9\"},{\"n\":\"16\",\"sig\":\"R4\",\"note_it\":\"linea SENSE, U24 canale X3, via R149 270 \u03a9\",\"note_en\":\"SENSE line, U24 channel X3, via R149 270 \u03a9\"},{\"n\":\"17\",\"sig\":\"R7\",\"note_it\":\"linea SENSE, U24 canale X0, via R146 270 \u03a9\",\"note_en\":\"SENSE line, U24 channel X0, via R146 270 \u03a9\"},{\"n\":\"18\",\"sig\":\"S7\",\"note_it\":\"linea SCAN, U25 canale X0, via R145 270 \u03a9\",\"note_en\":\"SCAN line, U25 channel X0, via R145 270 \u03a9\"},{\"n\":\"19\",\"sig\":\"R3\",\"note_it\":\"linea SENSE, U24 canale X4, via R150 270 \u03a9\",\"note_en\":\"SENSE line, U24 channel X4, via R150 270 \u03a9\"},{\"n\":\"20\",\"sig\":\"KR2\",\"note_it\":\"KR2 via R137 270 \u03a9 verso POKEY pin 16; CTRL\/SHIFT\/BREAK\",\"note_en\":\"KR2 via R137 270 \u03a9 to POKEY pin 16; CTRL\/SHIFT\/BREAK\"},{\"n\":\"21\",\"sig\":\"START\",\"note_it\":\"via R136 220 \u03a9 al GTIA\",\"note_en\":\"via R136 220 \u03a9 to GTIA\"},{\"n\":\"22\",\"sig\":\"SELECT\",\"note_it\":\"via R135 220 \u03a9 al GTIA\",\"note_en\":\"via R135 220 \u03a9 to GTIA\"},{\"n\":\"23\",\"sig\":\"OPTION\",\"note_it\":\"via R134 220 \u03a9 al GTIA\",\"note_en\":\"via R134 220 \u03a9 to GTIA\"},{\"n\":\"24\",\"sig\":\"RESET\",\"note_it\":\"via L14 22 \u00b5H al circuito di reset\",\"note_en\":\"via L14 22 \u00b5H to the reset circuit\"}]},\"layout\":[{\"id\":\"esc\",\"t\":\"ESC\",\"x\":0,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"1\",\"t\":\"1\",\"t2\":\"!\",\"x\":1,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"2\",\"t\":\"2\",\"t2\":\"\\\"\",\"x\":2,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"3\",\"t\":\"3\",\"t2\":\"#\",\"x\":3,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"4\",\"t\":\"4\",\"t2\":\"$\",\"x\":4,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"5\",\"t\":\"5\",\"t2\":\"%\",\"x\":5,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"6\",\"t\":\"6\",\"t2\":\"&\",\"x\":6,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"7\",\"t\":\"7\",\"t2\":\"'\",\"x\":7,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"8\",\"t\":\"8\",\"t2\":\"@\",\"x\":8,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"9\",\"t\":\"9\",\"t2\":\"(\",\"x\":9,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"0\",\"t\":\"0\",\"t2\":\")\",\"x\":10,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"lt\",\"t\":\"<\",\"t2\":\"CLEAR\",\"x\":11,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"gt\",\"t\":\">\",\"t2\":\"INSERT\",\"x\":12,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"bksp\",\"t\":\"BACK S\",\"t2\":\"DELETE\",\"x\":13,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"break\",\"t\":\"BREAK\",\"x\":14,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"tab\",\"t\":\"TAB\",\"x\":0,\"y\":2.25,\"w\":1.5,\"h\":1},{\"id\":\"q\",\"t\":\"Q\",\"x\":1.5,\"y\":2.25,\"w\":1.0,\"h\":1},{\"id\":\"w\",\"t\":\"W\",\"x\":2.5,\"y\":2.25,\"w\":1.0,\"h\":1},{\"id\":\"e\",\"t\":\"E\",\"x\":3.5,\"y\":2.25,\"w\":1.0,\"h\":1},{\"id\":\"r\",\"t\":\"R\",\"x\":4.5,\"y\":2.25,\"w\":1.0,\"h\":1},{\"id\":\"t\",\"t\":\"T\",\"x\":5.5,\"y\":2.25,\"w\":1.0,\"h\":1},{\"id\":\"y\",\"t\":\"Y\",\"x\":6.5,\"y\":2.25,\"w\":1.0,\"h\":1},{\"id\":\"u\",\"t\":\"U\",\"x\":7.5,\"y\":2.25,\"w\":1.0,\"h\":1},{\"id\":\"i\",\"t\":\"I\",\"x\":8.5,\"y\":2.25,\"w\":1.0,\"h\":1},{\"id\":\"o\",\"t\":\"O\",\"x\":9.5,\"y\":2.25,\"w\":1.0,\"h\":1},{\"id\":\"p\",\"t\":\"P\",\"x\":10.5,\"y\":2.25,\"w\":1.0,\"h\":1},{\"id\":\"minus\",\"t\":\"-\",\"t2\":\"_\",\"x\":11.5,\"y\":2.25,\"w\":1,\"h\":1},{\"id\":\"equal\",\"t\":\"=\",\"t2\":\"|\",\"x\":12.5,\"y\":2.25,\"w\":1,\"h\":1},{\"id\":\"return\",\"t\":\"RETURN\",\"x\":13.5,\"y\":2.25,\"w\":1.5,\"h\":1},{\"id\":\"ctrl\",\"t\":\"CONTROL\",\"x\":0,\"y\":3.25,\"w\":1.75,\"h\":1},{\"id\":\"a\",\"t\":\"A\",\"x\":1.75,\"y\":3.25,\"w\":1.0,\"h\":1},{\"id\":\"s\",\"t\":\"S\",\"x\":2.75,\"y\":3.25,\"w\":1.0,\"h\":1},{\"id\":\"d\",\"t\":\"D\",\"x\":3.75,\"y\":3.25,\"w\":1.0,\"h\":1},{\"id\":\"f\",\"t\":\"F\",\"x\":4.75,\"y\":3.25,\"w\":1.0,\"h\":1},{\"id\":\"g\",\"t\":\"G\",\"x\":5.75,\"y\":3.25,\"w\":1.0,\"h\":1},{\"id\":\"h\",\"t\":\"H\",\"x\":6.75,\"y\":3.25,\"w\":1.0,\"h\":1},{\"id\":\"j\",\"t\":\"J\",\"x\":7.75,\"y\":3.25,\"w\":1.0,\"h\":1},{\"id\":\"k\",\"t\":\"K\",\"x\":8.75,\"y\":3.25,\"w\":1.0,\"h\":1},{\"id\":\"l\",\"t\":\"L\",\"x\":9.75,\"y\":3.25,\"w\":1.0,\"h\":1},{\"id\":\"semicolon\",\"t\":\";\",\"t2\":\":\",\"x\":10.75,\"y\":3.25,\"w\":1,\"h\":1},{\"id\":\"plus\",\"t\":\"+\",\"t2\":\"\\\\\",\"x\":11.75,\"y\":3.25,\"w\":1,\"h\":1},{\"id\":\"star\",\"t\":\"*\",\"t2\":\"^\",\"x\":12.75,\"y\":3.25,\"w\":1,\"h\":1},{\"id\":\"caps\",\"t\":\"CAPS\",\"x\":13.75,\"y\":3.25,\"w\":1.25,\"h\":1},{\"id\":\"lshift\",\"t\":\"SHIFT\",\"x\":0,\"y\":4.25,\"w\":2.25,\"h\":1},{\"id\":\"z\",\"t\":\"Z\",\"x\":2.25,\"y\":4.25,\"w\":1.0,\"h\":1},{\"id\":\"x\",\"t\":\"X\",\"x\":3.25,\"y\":4.25,\"w\":1.0,\"h\":1},{\"id\":\"c\",\"t\":\"C\",\"x\":4.25,\"y\":4.25,\"w\":1.0,\"h\":1},{\"id\":\"v\",\"t\":\"V\",\"x\":5.25,\"y\":4.25,\"w\":1.0,\"h\":1},{\"id\":\"b\",\"t\":\"B\",\"x\":6.25,\"y\":4.25,\"w\":1.0,\"h\":1},{\"id\":\"n\",\"t\":\"N\",\"x\":7.25,\"y\":4.25,\"w\":1.0,\"h\":1},{\"id\":\"m\",\"t\":\"M\",\"x\":8.25,\"y\":4.25,\"w\":1.0,\"h\":1},{\"id\":\"comma\",\"t\":\",\",\"t2\":\"[\",\"x\":9.25,\"y\":4.25,\"w\":1,\"h\":1},{\"id\":\"period\",\"t\":\".\",\"t2\":\"]\",\"x\":10.25,\"y\":4.25,\"w\":1,\"h\":1},{\"id\":\"slash\",\"t\":\"\/\",\"t2\":\"?\",\"x\":11.25,\"y\":4.25,\"w\":1,\"h\":1},{\"id\":\"rshift\",\"t\":\"SHIFT\",\"x\":12.25,\"y\":4.25,\"w\":1.75,\"h\":1},{\"id\":\"inv\",\"t\":\"\u25e9\",\"x\":14,\"y\":4.25,\"w\":1,\"h\":1},{\"id\":\"space\",\"t\":\"SPACE\",\"x\":3,\"y\":5.25,\"w\":9,\"h\":1},{\"id\":\"help\",\"t\":\"HELP\",\"x\":7.5,\"y\":0,\"w\":1.5,\"h\":1},{\"id\":\"start\",\"t\":\"START\",\"x\":9,\"y\":0,\"w\":1.5,\"h\":1},{\"id\":\"select\",\"t\":\"SELECT\",\"x\":10.5,\"y\":0,\"w\":1.5,\"h\":1},{\"id\":\"option\",\"t\":\"OPTION\",\"x\":12,\"y\":0,\"w\":1.5,\"h\":1},{\"id\":\"reset\",\"t\":\"RESET\",\"x\":13.5,\"y\":0,\"w\":1.5,\"h\":1}],\"matrix\":{\"l\":[\"S0\",\"R0\"],\"j\":[\"S0\",\"R1\"],\"semicolon\":[\"S0\",\"R2\"],\"k\":[\"S0\",\"R5\"],\"plus\":[\"S0\",\"R6\"],\"star\":[\"S0\",\"R7\"],\"o\":[\"S1\",\"R0\"],\"p\":[\"S1\",\"R2\"],\"u\":[\"S1\",\"R3\"],\"return\":[\"S1\",\"R4\"],\"i\":[\"S1\",\"R5\"],\"minus\":[\"S1\",\"R6\"],\"equal\":[\"S1\",\"R7\"],\"v\":[\"S2\",\"R0\"],\"help\":[\"S2\",\"R1\"],\"c\":[\"S2\",\"R2\"],\"b\":[\"S2\",\"R5\"],\"x\":[\"S2\",\"R6\"],\"z\":[\"S2\",\"R7\"],\"4\":[\"S3\",\"R0\"],\"3\":[\"S3\",\"R2\"],\"6\":[\"S3\",\"R3\"],\"esc\":[\"S3\",\"R4\"],\"5\":[\"S3\",\"R5\"],\"2\":[\"S3\",\"R6\"],\"1\":[\"S3\",\"R7\"],\"comma\":[\"S4\",\"R0\"],\"space\":[\"S4\",\"R1\"],\"period\":[\"S4\",\"R2\"],\"n\":[\"S4\",\"R3\"],\"m\":[\"S4\",\"R5\"],\"slash\":[\"S4\",\"R6\"],\"inv\":[\"S4\",\"R7\"],\"r\":[\"S5\",\"R0\"],\"e\":[\"S5\",\"R2\"],\"y\":[\"S5\",\"R3\"],\"tab\":[\"S5\",\"R4\"],\"t\":[\"S5\",\"R5\"],\"w\":[\"S5\",\"R6\"],\"q\":[\"S5\",\"R7\"],\"9\":[\"S6\",\"R0\"],\"0\":[\"S6\",\"R2\"],\"7\":[\"S6\",\"R3\"],\"bksp\":[\"S6\",\"R4\"],\"8\":[\"S6\",\"R5\"],\"lt\":[\"S6\",\"R6\"],\"gt\":[\"S6\",\"R7\"],\"f\":[\"S7\",\"R0\"],\"h\":[\"S7\",\"R1\"],\"d\":[\"S7\",\"R2\"],\"caps\":[\"S7\",\"R4\"],\"g\":[\"S7\",\"R5\"],\"s\":[\"S7\",\"R6\"],\"a\":[\"S7\",\"R7\"],\"ctrl\":[\"S0\",\"KR2\"],\"lshift\":[\"S2\",\"KR2\"],\"rshift\":[\"S2\",\"KR2\"],\"break\":[\"S6\",\"KR2\"]},\"special\":{\"start\":{\"lines\":[\"START\",\"GND\"],\"it\":\"Non \u00e8 nella matrice del POKEY: chiude la linea START verso massa (pin 3 del connettore). Il segnale va, attraverso una resistenza in serie, all'ingresso console del GTIA U17 (pin 12) e si legge nel bit 0 di CONSOL ($D01F).\",\"en\":\"Not in the POKEY matrix: it shorts the START line to ground (connector pin 3). The signal goes through a series resistor to a console input of GTIA U17 (pin 12) and reads as bit 0 of CONSOL ($D01F).\"},\"select\":{\"lines\":[\"SELECT\",\"GND\"],\"it\":\"Non \u00e8 nella matrice del POKEY: chiude la linea SELECT verso massa (pin 3 del connettore). Il segnale va, attraverso una resistenza in serie, all'ingresso console del GTIA U17 (pin 13) e si legge nel bit 1 di CONSOL ($D01F).\",\"en\":\"Not in the POKEY matrix: it shorts the SELECT line to ground (connector pin 3). The signal goes through a series resistor to a console input of GTIA U17 (pin 13) and reads as bit 1 of CONSOL ($D01F).\"},\"option\":{\"lines\":[\"OPTION\",\"GND\"],\"it\":\"Non \u00e8 nella matrice del POKEY: chiude la linea OPTION verso massa (pin 3 del connettore). Il segnale va, attraverso una resistenza in serie, all'ingresso console del GTIA U17 (pin 14) e si legge nel bit 2 di CONSOL ($D01F).\",\"en\":\"Not in the POKEY matrix: it shorts the OPTION line to ground (connector pin 3). The signal goes through a series resistor to a console input of GTIA U17 (pin 14) and reads as bit 2 of CONSOL ($D01F).\"},\"reset\":{\"lines\":[\"RESET\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: chiude la linea RESET (pin 24) verso massa (pin 3). Il segnale passa per L14 22 \u00b5H e R40 100 \u03a9 e, tramite C200, arriva al timer NE555 U19 che genera l'impulso di reset del 6502. \u00c8 un vero reset hardware, non un NMI.\",\"en\":\"Not in the matrix: it shorts the RESET line (pin 24) to ground (pin 3). The signal goes through L14 (22 \u00b5H) and R40 (100 \u03a9) and, via C200, reaches the NE555 timer U19 that produces the 6502 reset pulse. It is a real hardware reset, not an NMI.\"},\"rshift\":{\"lines\":[\"S2\",\"KR2\"],\"it\":\"I due SHIFT sono collegati in parallelo sulle stesse linee (S2 e KR2): il software non li distingue. Se uno solo non va, il guasto \u00e8 sulla membrana di quel tasto.\",\"en\":\"Both SHIFT keys are wired in parallel on the same lines (S2 and KR2), so software cannot tell them apart. If only one fails, the fault is in that key's membrane contact.\"}},\"notes_it\":[\"I 4051 sono solo commutatori: se non va un'intera fila di tasti con lo stesso codice alto (stessa linea S, per esempio 1-6 + ESC), controllare la pista su J8, la resistenza in serie e il canale corrispondente di U25; se non va una 'colonna' di tasti con lo stesso codice basso (stessa linea R), U24. Se non va nessun tasto, verificare alimentazione di U24\/U25 (pin 16 a +5 V, pin 6\/7\/8 a massa), la linea KR1 (POKEY pin 25 - U24 pin 3) e il POKEY.\",\"Il canale X del 4051 \u00e8 il complemento del numero di linea (X = 7 - n) perch\u00e9 le uscite \/K del POKEY sono attive basse: ad esempio la linea S0 (codici $00-$07) \u00e8 il canale X7 di U25, pin 4. Con l'oscilloscopio si vedono su A\/B\/C onde quadre a 15,7 kHz divisa per 2, 4, 8 (U24) e 16, 32, 64 (U25).\",\"La matrice non ha diodi: tre tasti premuti agli angoli di un rettangolo creano un tasto fantasma (per esempio L+J+V d\u00e0 HELP). Anche CTRL, SHIFT e BREAK partecipano, per cui CTRL+SHIFT con i tasti dei codici $00-$07 e $10-$17 non viene riconosciuto: \u00e8 normale, non \u00e8 un guasto.\",\"Codici senza tasto: $03, $04, $13, $14 (F1-F4, presenti solo sul 1200XL) e $09, $19, $24, $29, $31, $3B. Le frecce cursore sono CTRL + - = + * e non hanno linee proprie; HELP \u00e8 un normale tasto della matrice (codice $11).\",\"Con il debounce attivo (normale) il POKEY rifiuta due tasti normali premuti insieme: un tasto in corto permanente sulla membrana blocca quindi anche tutti gli altri. Se la tastiera \u00e8 'morta' ma il self test (OPTION all'accensione) mostra un tasto sempre premuto, cercare il corto su quelle due linee.\",\"65XE e 800XE: negli schemi delle schede CO70025 (65XE) e CA200519 (65XE\/800XE) il J8, i due 4051 U24\/U25, le resistenze da 270 \u03a9 e i collegamenti ai pin sono identici al 130XE (cambia solo R95, 1 k\u03a9 sulla CO70025); la tastiera XE \u00e8 la stessa. Questi dati valgono quindi anche per 65XE e 800XE. Non valgono per l'XE Game System (XEGS), che ha la tastiera staccabile su connettore DA-15.\",\"Il connettore XE ha un'assegnazione pin diversa dall'800XL (sull'XE i pin 1-3 sono +5 V, LED e massa, le linee della matrice sono sui pin 4-20): non scambiare le tastiere tra XL e XE senza adattatore. Il LED di accensione \u00e8 sulla tastiera e il suo cavetto va ricollegato con la polarit\u00e0 giusta.\",\"Sul 130XE il tasto video inverso (codice $27) \u00e8 quello con il quadrato mezzo pieno accanto allo SHIFT destro; HELP, START, SELECT, OPTION e RESET sono i cinque tasti in alto a destra.\"],\"notes_en\":[\"The 4051s are only switches: if a whole group of keys with the same high code fails (same S line, e.g. 1-6 + ESC), check the J8 track, the series resistor and the matching U25 channel; if a 'column' of keys with the same low code fails (same R line), check U24. If no key works at all, check U24\/U25 supply (pin 16 at +5 V, pins 6\/7\/8 to ground), the KR1 line (POKEY pin 25 - U24 pin 3) and POKEY itself.\",\"The 4051 channel X is the complement of the line number (X = 7 - n) because POKEY's \/K outputs are active low: e.g. line S0 (codes $00-$07) is channel X7 of U25, pin 4. On a scope, A\/B\/C carry square waves at 15.7 kHz divided by 2, 4, 8 (U24) and 16, 32, 64 (U25).\",\"The matrix has no diodes: three keys held at the corners of a rectangle create a phantom key (e.g. L+J+V gives HELP). CTRL, SHIFT and BREAK take part too, so CTRL+SHIFT with the keys of codes $00-$07 and $10-$17 is not recognised: that is normal, not a fault.\",\"Codes with no key: $03, $04, $13, $14 (F1-F4, fitted only on the 1200XL) and $09, $19, $24, $29, $31, $3B. The cursor arrows are CTRL + - = + * and have no lines of their own; HELP is an ordinary matrix key (code $11).\",\"With debounce enabled (the normal setting) POKEY rejects two ordinary keys held together, so one key permanently shorted on the membrane also locks out all the others. If the keyboard is 'dead' but the self test (OPTION at power-on) shows one key always pressed, look for the short on those two lines.\",\"65XE and 800XE: on the CO70025 (65XE) and CA200519 (65XE\/800XE) schematics, J8, the two 4051s U24\/U25, the 270 \u03a9 resistors and the pin wiring are identical to the 130XE (only R95 differs, 1 k\u03a9 on CO70025), and the XE keyboard is the same. So this data also applies to the 65XE and 800XE. It does not apply to the XE Game System (XEGS), whose detachable keyboard uses a DA-15 connector.\",\"The XE connector is assigned differently from the 800XL (on the XE pins 1-3 are +5 V, LED and ground, and the matrix lines are on pins 4-20): do not swap keyboards between XL and XE without an adaptor. The power LED sits on the keyboard and its lead must go back with the right polarity.\",\"On the 130XE the inverse-video key (code $27) is the half-filled square next to right SHIFT; HELP, START, SELECT, OPTION and RESET are the five keys at the top right.\"],\"board_it\":\"scheda CO70065\/CO70067 (130XE, 16 RAM 4164); 65XE e 800XE uguali, vedi note\",\"board_en\":\"CO70065\/CO70067 board (130XE, 16 x 4164 RAM); 65XE and 800XE the same, see notes\"},\"c128\":{\"id\":\"c128\",\"name\":\"Commodore 128\",\"sources\":[{\"t\":\"MAME src\/mame\/commodore\/c128.cpp (INPUT_PORTS c128: ROW0-7, K0-K2, CAPS, 40_80)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/mame\/commodore\/c128.cpp\"},{\"t\":\"VICE data\/C128\/gtk3_pos.vkm (C128 matrix table incl. K0-K2 and layout sketch)\",\"u\":\"https:\/\/sourceforge.net\/p\/vice-emu\/code\/HEAD\/tree\/trunk\/vice\/data\/C128\/gtk3_pos.vkm\"},{\"t\":\"C128 keyboard connector pinout (from C128 Programmer's Reference Guide)\",\"u\":\"https:\/\/tietokonesivut.kasettilamerit.fi\/hardware\/misc\/128_keyboard.htm\"},{\"t\":\"C64-Wiki: Keyboard (8x8 part shared with C64)\",\"u\":\"https:\/\/www.c64-wiki.com\/wiki\/Keyboard\"}],\"scan_it\":\"Matrice 8x8 come sul C64: il CIA 6526 U1 pilota le colonne su PA0-PA7 e legge le righe su PB0-PB7. In pi\u00f9 il VIC-IIe U21 (8564\/8566) ha tre uscite K0-K2 (registro $D02F) che fanno da tre colonne aggiuntive, lette anch'esse su PB0-PB7: servono per HELP, ESC, TAB, ALT, LINE FEED, NO SCROLL, i cursori della fila superiore e il tastierino numerico. CAPS LOCK e 40\/80 DISPLAY sono interruttori a ritenuta fuori matrice.\",\"scan_en\":\"Same 8x8 matrix as the C64: CIA 6526 U1 drives the columns on PA0-PA7 and reads the rows on PB0-PB7. In addition the VIC-IIe U21 (8564\/8566) has three outputs K0-K2 (register $D02F) acting as three extra columns, also read on PB0-PB7: they carry HELP, ESC, TAB, ALT, LINE FEED, NO SCROLL, the top-row cursor keys and the numeric keypad. CAPS LOCK and 40\/80 DISPLAY are latching switches outside the matrix.\",\"lines\":[{\"id\":\"PA0\",\"group\":\"col\",\"name\":\"COL0\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"2\",\"conn_pin\":\"13\",\"path_board\":\"C128 Open128\",\"also_it\":\"porta joystick 2 pin 1 (su)\",\"also_en\":\"control port 2 pin 1 (up)\",\"path_en\":[\"U1.2 PA0 through EMI20\",\"CN4.1 (joystick port) through EMI20+EMI11\"],\"path_it\":[\"U1.2 PA0 via EMI20\",\"CN4.1 (Porta joystick) via EMI20+EMI11\"]},{\"id\":\"PA1\",\"group\":\"col\",\"name\":\"COL1\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"3\",\"conn_pin\":\"19\",\"path_board\":\"C128 Open128\",\"also_it\":\"porta joystick 2 pin 2 (gi\u00f9)\",\"also_en\":\"control port 2 pin 2 (down)\",\"path_en\":[\"U1.3 PA1 through EMI21\",\"CN4.2 (joystick port) through EMI21+EMI12\"],\"path_it\":[\"U1.3 PA1 via EMI21\",\"CN4.2 (Porta joystick) via EMI21+EMI12\"]},{\"id\":\"PA2\",\"group\":\"col\",\"name\":\"COL2\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"4\",\"conn_pin\":\"18\",\"path_board\":\"C128 Open128\",\"also_it\":\"porta joystick 2 pin 3 (sinistra)\",\"also_en\":\"control port 2 pin 3 (left)\",\"path_en\":[\"U1.4 PA2 through EMI22\",\"CN4.3 (joystick port) through EMI22+EMI13\"],\"path_it\":[\"U1.4 PA2 via EMI22\",\"CN4.3 (Porta joystick) via EMI22+EMI13\"]},{\"id\":\"PA3\",\"group\":\"col\",\"name\":\"COL3\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"5\",\"conn_pin\":\"17\",\"path_board\":\"C128 Open128\",\"also_it\":\"porta joystick 2 pin 4 (destra)\",\"also_en\":\"control port 2 pin 4 (right)\",\"path_en\":[\"U1.5 PA3 through EMI23\",\"CN4.4 (joystick port) through EMI23+EMI14\"],\"path_it\":[\"U1.5 PA3 via EMI23\",\"CN4.4 (Porta joystick) via EMI23+EMI14\"]},{\"id\":\"PA4\",\"group\":\"col\",\"name\":\"COL4\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"6\",\"conn_pin\":\"16\",\"path_board\":\"C128 Open128\",\"also_it\":\"porta joystick 2 pin 6 (fuoco)\",\"also_en\":\"control port 2 pin 6 (fire)\",\"path_en\":[\"U1.6 PA4 through EMI24\",\"CN4.6 (joystick port) through EMI24+EMI15\"],\"path_it\":[\"U1.6 PA4 via EMI24\",\"CN4.6 (Porta joystick) via EMI24+EMI15\"]},{\"id\":\"PA5\",\"group\":\"col\",\"name\":\"COL5\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"7\",\"conn_pin\":\"15\",\"also\":\"\",\"path_board\":\"C128 Open128\",\"path_en\":[\"U1.7 PA5 through EMI25\"],\"path_it\":[\"U1.7 PA5 via EMI25\"]},{\"id\":\"PA6\",\"group\":\"col\",\"name\":\"COL6\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"8\",\"conn_pin\":\"14\",\"also\":\"\",\"path_board\":\"C128 Open128\",\"path_en\":[\"U1.8 PA6 through EMI26\",\"U2.12 4C through EMI26\",\"U2.6 3C through EMI26\"],\"path_it\":[\"U1.8 PA6 via EMI26\",\"U2.12 4C via EMI26\",\"U2.6 3C via EMI26\"]},{\"id\":\"PA7\",\"group\":\"col\",\"name\":\"COL7\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"9\",\"conn_pin\":\"20\",\"also\":\"\",\"path_board\":\"C128 Open128\",\"path_en\":[\"U1.9 PA7 through EMI27\",\"U2.13 1C through EMI27\",\"U2.5 2C through EMI27\"],\"path_it\":[\"U1.9 PA7 via EMI27\",\"U2.13 1C via EMI27\",\"U2.5 2C via EMI27\"]},{\"id\":\"PB0\",\"group\":\"row\",\"name\":\"ROW0\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"10\",\"conn_pin\":\"12\",\"path_board\":\"C128 Open128\",\"also_it\":\"porta joystick 1 pin 1 (su)\",\"also_en\":\"control port 1 pin 1 (up)\",\"path_en\":[\"U1.10 PB0 through EMI28\",\"CN3.1 (joystick port) through EMI28+EMI3\"],\"path_it\":[\"U1.10 PB0 via EMI28\",\"CN3.1 (Porta joystick) via EMI28+EMI3\"]},{\"id\":\"PB1\",\"group\":\"row\",\"name\":\"ROW1\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"11\",\"conn_pin\":\"11\",\"path_board\":\"C128 Open128\",\"also_it\":\"porta joystick 1 pin 2 (gi\u00f9)\",\"also_en\":\"control port 1 pin 2 (down)\",\"path_en\":[\"U1.11 PB1 through EMI29\",\"CN3.2 (joystick port) through EMI29+EMI4\"],\"path_it\":[\"U1.11 PB1 via EMI29\",\"CN3.2 (Porta joystick) via EMI29+EMI4\"]},{\"id\":\"PB2\",\"group\":\"row\",\"name\":\"ROW2\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"12\",\"conn_pin\":\"10\",\"path_board\":\"C128 Open128\",\"also_it\":\"porta joystick 1 pin 3 (sinistra)\",\"also_en\":\"control port 1 pin 3 (left)\",\"path_en\":[\"U1.12 PB2 through EMI30\",\"CN3.3 (joystick port) through EMI30+EMI5\"],\"path_it\":[\"U1.12 PB2 via EMI30\",\"CN3.3 (Porta joystick) via EMI30+EMI5\"]},{\"id\":\"PB3\",\"group\":\"row\",\"name\":\"ROW3\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"13\",\"conn_pin\":\"5\",\"path_board\":\"C128 Open128\",\"also_it\":\"porta joystick 1 pin 4 (destra)\",\"also_en\":\"control port 1 pin 4 (right)\",\"path_en\":[\"U1.13 PB3 through EMI31\",\"CN3.4 (joystick port) through EMI31+EMI6\"],\"path_it\":[\"U1.13 PB3 via EMI31\",\"CN3.4 (Porta joystick) via EMI31+EMI6\"]},{\"id\":\"PB4\",\"group\":\"row\",\"name\":\"ROW4\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"14\",\"conn_pin\":\"8\",\"path_board\":\"C128 Open128\",\"also_it\":\"porta joystick 1 pin 6 (fuoco)\",\"also_en\":\"control port 1 pin 6 (fire)\",\"path_en\":[\"U1.14 PB4 through EMI32\",\"U21.9 LP through EMI32\",\"U22.25 LPEN through EMI32\",\"CN3.6 (joystick port) through EMI32+EMI69\"],\"path_it\":[\"U1.14 PB4 via EMI32\",\"U21.9 LP via EMI32\",\"U22.25 LPEN via EMI32\",\"CN3.6 (Porta joystick) via EMI32+EMI69\"]},{\"id\":\"PB5\",\"group\":\"row\",\"name\":\"ROW5\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"15\",\"conn_pin\":\"7\",\"also\":\"\",\"path_board\":\"C128 Open128\",\"path_en\":[\"U1.15 PB5 through EMI33\"],\"path_it\":[\"U1.15 PB5 via EMI33\"]},{\"id\":\"PB6\",\"group\":\"row\",\"name\":\"ROW6\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"16\",\"conn_pin\":\"6\",\"also\":\"\",\"path_board\":\"C128 Open128\",\"path_en\":[\"U1.16 PB6 through EMI34\"],\"path_it\":[\"U1.16 PB6 via EMI34\"]},{\"id\":\"PB7\",\"group\":\"row\",\"name\":\"ROW7\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"17\",\"conn_pin\":\"9\",\"also\":\"\",\"path_board\":\"C128 Open128\",\"path_en\":[\"U1.17 PB7 through EMI35\"],\"path_it\":[\"U1.17 PB7 via EMI35\"]},{\"id\":\"K0\",\"group\":\"col\",\"name\":\"K0\",\"chip\":\"U21\",\"chip_part\":\"8564 VIC-IIe\",\"chip_pin\":\"26\",\"conn_pin\":\"21\",\"path_board\":\"C128 Open128\",\"also_it\":\"registro $D02F del VIC-IIe, bit 0\",\"also_en\":\"VIC-IIe register $D02F bit 0\",\"path_en\":[\"U21.26 K0 through EMI17\"],\"path_it\":[\"U21.26 K0 via EMI17\"]},{\"id\":\"K1\",\"group\":\"col\",\"name\":\"K1\",\"chip\":\"U21\",\"chip_part\":\"8564 VIC-IIe\",\"chip_pin\":\"27\",\"conn_pin\":\"22\",\"path_board\":\"C128 Open128\",\"also_it\":\"registro $D02F del VIC-IIe, bit 1\",\"also_en\":\"VIC-IIe register $D02F bit 1\",\"path_en\":[\"U21.27 K1 through EMI18\"],\"path_it\":[\"U21.27 K1 via EMI18\"]},{\"id\":\"K2\",\"group\":\"col\",\"name\":\"K2\",\"chip\":\"U21\",\"chip_part\":\"8564 VIC-IIe\",\"chip_pin\":\"28\",\"conn_pin\":\"23\",\"path_board\":\"C128 Open128\",\"also_it\":\"registro $D02F del VIC-IIe, bit 2\",\"also_en\":\"VIC-IIe register $D02F bit 2\",\"path_en\":[\"U21.28 K2 through EMI19\"],\"path_it\":[\"U21.28 K2 via EMI19\"]},{\"id\":\"RESTORE\",\"group\":\"extra\",\"name\":\"RESTORE\",\"chip\":\"U16\",\"chip_part\":\"74LS14\",\"chip_pin\":\"9\",\"conn_pin\":\"3\",\"path_board\":\"C128 Open128\",\"also_it\":\"\u2192 NMI\",\"also_en\":\"-> NMI\",\"path_en\":[\"U16.9 4A through EMI37\"],\"path_it\":[\"U16.9 4A via EMI37\"]},{\"id\":\"4080\",\"group\":\"extra\",\"name\":\"40\/80\",\"chip\":\"U7\",\"chip_part\":\"8722 MMU\",\"chip_pin\":\"48\",\"conn_pin\":\"24\",\"path_board\":\"C128 Open128\",\"also_it\":\"letto nel registro MCR $D505 della MMU, bit 7\",\"also_en\":\"read in MMU MCR $D505 bit 7\",\"path_en\":[\"U7.48 40\/80 through EMI16\"],\"path_it\":[\"U7.48 40\/80 via EMI16\"]},{\"id\":\"CAPS\",\"group\":\"extra\",\"name\":\"CAPS LOCK\",\"chip\":\"U6\",\"chip_part\":\"8502\",\"chip_pin\":\"24\",\"conn_pin\":\"25\",\"path_board\":\"C128 Open128\",\"also_it\":\"porta di I\/O dell'8502, bit 6 ($0001)\",\"also_en\":\"8502 I\/O port bit 6 ($0001)\",\"path_en\":[\"U6.24 P6\",\"J7.3 B\"],\"path_it\":[\"U6.24 P6\",\"J7.3 B\"]}],\"connector\":{\"ref\":\"CN5\",\"it\":\"Connettore tastiera 25 pin (pin 2 mancante)\",\"en\":\"25-pin keyboard connector (pin 2 missing)\",\"pins\":[{\"n\":\"1\",\"sig\":\"GND\"},{\"n\":\"2\",\"sig\":\"KEY\",\"note_it\":\"senza pin, polarizzazione\",\"note_en\":\"no pin, polarisation\"},{\"n\":\"3\",\"sig\":\"RESTORE\"},{\"n\":\"4\",\"sig\":\"+5V\"},{\"n\":\"5\",\"sig\":\"PB3\"},{\"n\":\"6\",\"sig\":\"PB6\"},{\"n\":\"7\",\"sig\":\"PB5\"},{\"n\":\"8\",\"sig\":\"PB4\"},{\"n\":\"9\",\"sig\":\"PB7\"},{\"n\":\"10\",\"sig\":\"PB2\"},{\"n\":\"11\",\"sig\":\"PB1\"},{\"n\":\"12\",\"sig\":\"PB0\"},{\"n\":\"13\",\"sig\":\"PA0\"},{\"n\":\"14\",\"sig\":\"PA6\"},{\"n\":\"15\",\"sig\":\"PA5\"},{\"n\":\"16\",\"sig\":\"PA4\"},{\"n\":\"17\",\"sig\":\"PA3\"},{\"n\":\"18\",\"sig\":\"PA2\"},{\"n\":\"19\",\"sig\":\"PA1\"},{\"n\":\"20\",\"sig\":\"PA7\"},{\"n\":\"21\",\"sig\":\"K0\"},{\"n\":\"22\",\"sig\":\"K1\"},{\"n\":\"23\",\"sig\":\"K2\"},{\"n\":\"24\",\"sig\":\"4080\"},{\"n\":\"25\",\"sig\":\"CAPS\",\"note_it\":\"\u00abAlpha Lock\u00bb nel Programmer's Reference Guide\",\"note_en\":\"'Alpha Lock' in the Programmer's Reference Guide\"}]},\"layout\":[{\"id\":\"esc\",\"t\":\"ESC\",\"x\":0,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"tab\",\"t\":\"TAB\",\"x\":1,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"alt\",\"t\":\"ALT\",\"x\":2,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"caps\",\"t\":\"CAPS LOCK\",\"x\":3,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"help\",\"t\":\"HELP\",\"x\":5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"lf\",\"t\":\"LINE FEED\",\"x\":6,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"d4080\",\"t\":\"40\/80 DISPLAY\",\"x\":7,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"noscroll\",\"t\":\"NO SCROLL\",\"x\":8,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"kup\",\"t\":\"\u2191\",\"x\":12,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"kdown\",\"t\":\"\u2193\",\"x\":13,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"kleft\",\"t\":\"\u2190\",\"x\":14,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"kright\",\"t\":\"\u2192\",\"x\":15,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"f1\",\"t\":\"f1\",\"t2\":\"f2\",\"x\":16.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"f3\",\"t\":\"f3\",\"t2\":\"f4\",\"x\":17.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"f5\",\"t\":\"f5\",\"t2\":\"f6\",\"x\":18.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"f7\",\"t\":\"f7\",\"t2\":\"f8\",\"x\":19.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"larrow\",\"t\":\"\u2190\",\"x\":0,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"1\",\"t\":\"1\",\"t2\":\"!\",\"x\":1,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"2\",\"t\":\"2\",\"t2\":\"\\\"\",\"x\":2,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"3\",\"t\":\"3\",\"t2\":\"#\",\"x\":3,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"4\",\"t\":\"4\",\"t2\":\"$\",\"x\":4,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"5\",\"t\":\"5\",\"t2\":\"%\",\"x\":5,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"6\",\"t\":\"6\",\"t2\":\"&\",\"x\":6,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"7\",\"t\":\"7\",\"t2\":\"'\",\"x\":7,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"8\",\"t\":\"8\",\"t2\":\"(\",\"x\":8,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"9\",\"t\":\"9\",\"t2\":\")\",\"x\":9,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"0\",\"t\":\"0\",\"x\":10,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"plus\",\"t\":\"+\",\"x\":11,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"minus\",\"t\":\"-\",\"x\":12,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"pound\",\"t\":\"\u00a3\",\"x\":13,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"home\",\"t\":\"HOME\",\"t2\":\"CLR\",\"x\":14,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"del\",\"t\":\"DEL\",\"t2\":\"INST\",\"x\":15,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"ctrl\",\"t\":\"CTRL\",\"x\":0,\"y\":2.25,\"w\":1.5,\"h\":1},{\"id\":\"q\",\"t\":\"Q\",\"x\":1.5,\"y\":2.25,\"w\":1,\"h\":1},{\"id\":\"w\",\"t\":\"W\",\"x\":2.5,\"y\":2.25,\"w\":1,\"h\":1},{\"id\":\"e\",\"t\":\"E\",\"x\":3.5,\"y\":2.25,\"w\":1,\"h\":1},{\"id\":\"r\",\"t\":\"R\",\"x\":4.5,\"y\":2.25,\"w\":1,\"h\":1},{\"id\":\"t\",\"t\":\"T\",\"x\":5.5,\"y\":2.25,\"w\":1,\"h\":1},{\"id\":\"y\",\"t\":\"Y\",\"x\":6.5,\"y\":2.25,\"w\":1,\"h\":1},{\"id\":\"u\",\"t\":\"U\",\"x\":7.5,\"y\":2.25,\"w\":1,\"h\":1},{\"id\":\"i\",\"t\":\"I\",\"x\":8.5,\"y\":2.25,\"w\":1,\"h\":1},{\"id\":\"o\",\"t\":\"O\",\"x\":9.5,\"y\":2.25,\"w\":1,\"h\":1},{\"id\":\"p\",\"t\":\"P\",\"x\":10.5,\"y\":2.25,\"w\":1,\"h\":1},{\"id\":\"at\",\"t\":\"@\",\"x\":11.5,\"y\":2.25,\"w\":1,\"h\":1},{\"id\":\"star\",\"t\":\"*\",\"x\":12.5,\"y\":2.25,\"w\":1,\"h\":1},{\"id\":\"uparrow\",\"t\":\"\u2191\",\"t2\":\"\u03c0\",\"x\":13.5,\"y\":2.25,\"w\":1,\"h\":1},{\"id\":\"restore\",\"t\":\"RESTORE\",\"x\":14.5,\"y\":2.25,\"w\":1.5,\"h\":1},{\"id\":\"stop\",\"t\":\"STOP\",\"t2\":\"RUN\",\"x\":0,\"y\":3.25,\"w\":1,\"h\":1},{\"id\":\"shlock\",\"t\":\"SHIFT LOCK\",\"x\":1,\"y\":3.25,\"w\":1,\"h\":1},{\"id\":\"a\",\"t\":\"A\",\"x\":2,\"y\":3.25,\"w\":1,\"h\":1},{\"id\":\"s\",\"t\":\"S\",\"x\":3,\"y\":3.25,\"w\":1,\"h\":1},{\"id\":\"d\",\"t\":\"D\",\"x\":4,\"y\":3.25,\"w\":1,\"h\":1},{\"id\":\"f\",\"t\":\"F\",\"x\":5,\"y\":3.25,\"w\":1,\"h\":1},{\"id\":\"g\",\"t\":\"G\",\"x\":6,\"y\":3.25,\"w\":1,\"h\":1},{\"id\":\"h\",\"t\":\"H\",\"x\":7,\"y\":3.25,\"w\":1,\"h\":1},{\"id\":\"j\",\"t\":\"J\",\"x\":8,\"y\":3.25,\"w\":1,\"h\":1},{\"id\":\"k\",\"t\":\"K\",\"x\":9,\"y\":3.25,\"w\":1,\"h\":1},{\"id\":\"l\",\"t\":\"L\",\"x\":10,\"y\":3.25,\"w\":1,\"h\":1},{\"id\":\"colon\",\"t\":\":\",\"t2\":\"[\",\"x\":11,\"y\":3.25,\"w\":1,\"h\":1},{\"id\":\"semicolon\",\"t\":\";\",\"t2\":\"]\",\"x\":12,\"y\":3.25,\"w\":1,\"h\":1},{\"id\":\"equal\",\"t\":\"=\",\"x\":13,\"y\":3.25,\"w\":1,\"h\":1},{\"id\":\"return\",\"t\":\"RETURN\",\"x\":14,\"y\":3.25,\"w\":2,\"h\":1},{\"id\":\"cbm\",\"t\":\"C=\",\"x\":0,\"y\":4.25,\"w\":1,\"h\":1},{\"id\":\"lshift\",\"t\":\"SHIFT\",\"x\":1,\"y\":4.25,\"w\":1.5,\"h\":1},{\"id\":\"z\",\"t\":\"Z\",\"x\":2.5,\"y\":4.25,\"w\":1,\"h\":1},{\"id\":\"x\",\"t\":\"X\",\"x\":3.5,\"y\":4.25,\"w\":1,\"h\":1},{\"id\":\"c\",\"t\":\"C\",\"x\":4.5,\"y\":4.25,\"w\":1,\"h\":1},{\"id\":\"v\",\"t\":\"V\",\"x\":5.5,\"y\":4.25,\"w\":1,\"h\":1},{\"id\":\"b\",\"t\":\"B\",\"x\":6.5,\"y\":4.25,\"w\":1,\"h\":1},{\"id\":\"n\",\"t\":\"N\",\"x\":7.5,\"y\":4.25,\"w\":1,\"h\":1},{\"id\":\"m\",\"t\":\"M\",\"x\":8.5,\"y\":4.25,\"w\":1,\"h\":1},{\"id\":\"comma\",\"t\":\",\",\"t2\":\"<\",\"x\":9.5,\"y\":4.25,\"w\":1,\"h\":1},{\"id\":\"period\",\"t\":\".\",\"t2\":\">\",\"x\":10.5,\"y\":4.25,\"w\":1,\"h\":1},{\"id\":\"slash\",\"t\":\"\/\",\"t2\":\"?\",\"x\":11.5,\"y\":4.25,\"w\":1,\"h\":1},{\"id\":\"rshift\",\"t\":\"SHIFT\",\"x\":12.5,\"y\":4.25,\"w\":1.5,\"h\":1},{\"id\":\"down\",\"t\":\"CRSR \u2193\",\"t2\":\"\u2191\",\"x\":14,\"y\":4.25,\"w\":1,\"h\":1},{\"id\":\"right\",\"t\":\"CRSR \u2192\",\"t2\":\"\u2190\",\"x\":15,\"y\":4.25,\"w\":1,\"h\":1},{\"id\":\"space\",\"t\":\"SPACE\",\"x\":3,\"y\":5.25,\"w\":9,\"h\":1},{\"id\":\"kp7\",\"t\":\"7\",\"x\":16.5,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"kp8\",\"t\":\"8\",\"x\":17.5,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"kp9\",\"t\":\"9\",\"x\":18.5,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"kpplus\",\"t\":\"+\",\"x\":19.5,\"y\":1.25,\"w\":1,\"h\":1},{\"id\":\"kp4\",\"t\":\"4\",\"x\":16.5,\"y\":2.25,\"w\":1,\"h\":1},{\"id\":\"kp5\",\"t\":\"5\",\"x\":17.5,\"y\":2.25,\"w\":1,\"h\":1},{\"id\":\"kp6\",\"t\":\"6\",\"x\":18.5,\"y\":2.25,\"w\":1,\"h\":1},{\"id\":\"kpminus\",\"t\":\"-\",\"x\":19.5,\"y\":2.25,\"w\":1,\"h\":1},{\"id\":\"kp1\",\"t\":\"1\",\"x\":16.5,\"y\":3.25,\"w\":1,\"h\":1},{\"id\":\"kp2\",\"t\":\"2\",\"x\":17.5,\"y\":3.25,\"w\":1,\"h\":1},{\"id\":\"kp3\",\"t\":\"3\",\"x\":18.5,\"y\":3.25,\"w\":1,\"h\":1},{\"id\":\"kpenter\",\"t\":\"ENTER\",\"x\":19.5,\"y\":3.25,\"w\":1,\"h\":2},{\"id\":\"kp0\",\"t\":\"0\",\"x\":16.5,\"y\":4.25,\"w\":2,\"h\":1},{\"id\":\"kpdot\",\"t\":\".\",\"x\":18.5,\"y\":4.25,\"w\":1,\"h\":1}],\"matrix\":{\"del\":[\"PA0\",\"PB0\"],\"return\":[\"PA0\",\"PB1\"],\"right\":[\"PA0\",\"PB2\"],\"f7\":[\"PA0\",\"PB3\"],\"f1\":[\"PA0\",\"PB4\"],\"f3\":[\"PA0\",\"PB5\"],\"f5\":[\"PA0\",\"PB6\"],\"down\":[\"PA0\",\"PB7\"],\"3\":[\"PA1\",\"PB0\"],\"w\":[\"PA1\",\"PB1\"],\"a\":[\"PA1\",\"PB2\"],\"4\":[\"PA1\",\"PB3\"],\"z\":[\"PA1\",\"PB4\"],\"s\":[\"PA1\",\"PB5\"],\"e\":[\"PA1\",\"PB6\"],\"lshift\":[\"PA1\",\"PB7\"],\"5\":[\"PA2\",\"PB0\"],\"r\":[\"PA2\",\"PB1\"],\"d\":[\"PA2\",\"PB2\"],\"6\":[\"PA2\",\"PB3\"],\"c\":[\"PA2\",\"PB4\"],\"f\":[\"PA2\",\"PB5\"],\"t\":[\"PA2\",\"PB6\"],\"x\":[\"PA2\",\"PB7\"],\"7\":[\"PA3\",\"PB0\"],\"y\":[\"PA3\",\"PB1\"],\"g\":[\"PA3\",\"PB2\"],\"8\":[\"PA3\",\"PB3\"],\"b\":[\"PA3\",\"PB4\"],\"h\":[\"PA3\",\"PB5\"],\"u\":[\"PA3\",\"PB6\"],\"v\":[\"PA3\",\"PB7\"],\"9\":[\"PA4\",\"PB0\"],\"i\":[\"PA4\",\"PB1\"],\"j\":[\"PA4\",\"PB2\"],\"0\":[\"PA4\",\"PB3\"],\"m\":[\"PA4\",\"PB4\"],\"k\":[\"PA4\",\"PB5\"],\"o\":[\"PA4\",\"PB6\"],\"n\":[\"PA4\",\"PB7\"],\"plus\":[\"PA5\",\"PB0\"],\"p\":[\"PA5\",\"PB1\"],\"l\":[\"PA5\",\"PB2\"],\"minus\":[\"PA5\",\"PB3\"],\"period\":[\"PA5\",\"PB4\"],\"colon\":[\"PA5\",\"PB5\"],\"at\":[\"PA5\",\"PB6\"],\"comma\":[\"PA5\",\"PB7\"],\"pound\":[\"PA6\",\"PB0\"],\"star\":[\"PA6\",\"PB1\"],\"semicolon\":[\"PA6\",\"PB2\"],\"home\":[\"PA6\",\"PB3\"],\"rshift\":[\"PA6\",\"PB4\"],\"equal\":[\"PA6\",\"PB5\"],\"uparrow\":[\"PA6\",\"PB6\"],\"slash\":[\"PA6\",\"PB7\"],\"1\":[\"PA7\",\"PB0\"],\"larrow\":[\"PA7\",\"PB1\"],\"ctrl\":[\"PA7\",\"PB2\"],\"2\":[\"PA7\",\"PB3\"],\"space\":[\"PA7\",\"PB4\"],\"cbm\":[\"PA7\",\"PB5\"],\"q\":[\"PA7\",\"PB6\"],\"stop\":[\"PA7\",\"PB7\"],\"shlock\":[\"PA1\",\"PB7\"],\"help\":[\"K0\",\"PB0\"],\"kp8\":[\"K0\",\"PB1\"],\"kp5\":[\"K0\",\"PB2\"],\"tab\":[\"K0\",\"PB3\"],\"kp2\":[\"K0\",\"PB4\"],\"kp4\":[\"K0\",\"PB5\"],\"kp7\":[\"K0\",\"PB6\"],\"kp1\":[\"K0\",\"PB7\"],\"esc\":[\"K1\",\"PB0\"],\"kpplus\":[\"K1\",\"PB1\"],\"kpminus\":[\"K1\",\"PB2\"],\"lf\":[\"K1\",\"PB3\"],\"kpenter\":[\"K1\",\"PB4\"],\"kp6\":[\"K1\",\"PB5\"],\"kp9\":[\"K1\",\"PB6\"],\"kp3\":[\"K1\",\"PB7\"],\"alt\":[\"K2\",\"PB0\"],\"kp0\":[\"K2\",\"PB1\"],\"kpdot\":[\"K2\",\"PB2\"],\"kup\":[\"K2\",\"PB3\"],\"kdown\":[\"K2\",\"PB4\"],\"kleft\":[\"K2\",\"PB5\"],\"kright\":[\"K2\",\"PB6\"],\"noscroll\":[\"K2\",\"PB7\"]},\"special\":{\"restore\":{\"lines\":[\"RESTORE\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: chiude il pin 3 (RESTORE) verso massa e genera l'NMI, come sul C64.\",\"en\":\"Not in the matrix: it shorts pin 3 (RESTORE) to ground and raises the NMI, as on the C64.\"},\"shlock\":{\"lines\":[\"PA1\",\"PB7\"],\"it\":\"SHIFT LOCK \u00e8 un tasto a ritenuta in parallelo allo SHIFT sinistro (PA1\/PB7).\",\"en\":\"SHIFT LOCK is a latching key in parallel with left SHIFT (PA1\/PB7).\"},\"caps\":{\"lines\":[\"CAPS\",\"GND\"],\"it\":\"Interruttore a ritenuta fuori matrice: porta a massa il pin 25, letto dal bit P6 della porta I\/O dell'8502 (U6). In C64 mode non ha effetto.\",\"en\":\"Latching switch outside the matrix: it grounds pin 25, read on bit P6 of the 8502 (U6) I\/O port. It has no effect in C64 mode.\"},\"d4080\":{\"lines\":[\"4080\",\"GND\"],\"it\":\"Interruttore a ritenuta fuori matrice: porta a massa il pin 24, letto dalla MMU 8722 (bit 7 di $D505). Viene letto solo all'accensione\/reset per scegliere lo schermo a 40 o 80 colonne.\",\"en\":\"Latching switch outside the matrix: it grounds pin 24, read by the 8722 MMU (bit 7 of $D505). It is only checked at power-up\/reset to choose the 40 or 80 column screen.\"}},\"notes_it\":[\"Se non funziona un gruppo di tasti del tastierino o della fila superiore ma il resto s\u00ec, il guasto \u00e8 quasi sempre su una delle linee K0-K2 (pin 21-23) o sul VIC-IIe U21.\",\"PA0-PA4 sono condivise con la porta joystick 2 e PB0-PB4 con la porta joystick 1, come sul C64.\",\"I cursori della fila superiore (K2) sono tasti separati da quelli CRSR in basso a destra (PA0\/PB2 e PA0\/PB7): se funzionano solo gli uni, il guasto non \u00e8 nella matrice principale.\"],\"notes_en\":[\"If a group of keypad or top-row keys is dead while the rest works, the fault is almost always on one of the K0-K2 lines (pins 21-23) or the VIC-IIe U21.\",\"PA0-PA4 are shared with control port 2 and PB0-PB4 with control port 1, as on the C64.\",\"The top-row cursor keys (K2) are separate from the CRSR keys at bottom right (PA0\/PB2 and PA0\/PB7): if only one set works, the main matrix is not the problem.\"],\"board_it\":\"scheda Open128, stesse sigle della scheda originale\",\"board_en\":\"Open128 board, same references as the original\"},\"c16\":{\"id\":\"c16\",\"name\":\"Commodore 16\",\"sources\":[{\"t\":\"MAME src\/mame\/commodore\/plus4.cpp (INPUT_PORTS c16 = plus4 matrix, ted_k_r)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/mame\/commodore\/plus4.cpp\"},{\"t\":\"Commodore C-16 schematic 251788 rev A, sheet 2 of 3 (zimmers.net)\",\"u\":\"http:\/\/www.zimmers.net\/anonftp\/pub\/cbm\/schematics\/computers\/plus4\/c16-251788-2of3-left.gif\"},{\"t\":\"Commodore Service Manual Model C16, PN 314001-03 (Oct 1984): keyboard matrix, parts list, 6529B\/7360 pinouts\",\"u\":\"http:\/\/www.zimmers.net\/anonftp\/pub\/cbm\/schematics\/computers\/plus4\/C16_Service_Manual_314001-03_(1984_Oct).pdf\"},{\"t\":\"Photo of a C16 keyboard (Wikimedia Commons, Commodore_16_002a.png) for legends\",\"u\":\"https:\/\/commons.wikimedia.org\/wiki\/File:Commodore_16_002a.png\"},{\"t\":\"keyboard-layout-editor sample 'commodore-vic20' (same C64\/VIC-20 style keyboard frame) for key geometry\",\"u\":\"https:\/\/github.com\/ijprest\/keyboard-layout-editor\/blob\/master\/samples\/commodore-vic20\"}],\"scan_it\":\"Come sul Plus\/4: la CPU 7501\/8501 scrive la colonna (bit a 0) nel latch tastiera U13 6529B a $FD30; sul C16 U13 \u00e8 collegato diritto (D0\u2192DB0\u2192P0 ... D7\u2192DB7\u2192P7) e le uscite vanno al connettore CN2 tramite le ferriti FB41-FB48. Le righe tornano tramite FB49-FB56 agli ingressi K0-K7 del TED U1 (piedini 15-22), con pull-up interni; la CPU scrive $FF in $FF08 (joystick non selezionati), il TED memorizza K0-K7 e la CPU li rilegge da $FF08. Tasto premuto = riga bassa.\",\"scan_en\":\"As on the Plus\/4: the 7501\/8501 CPU writes the column (bit at 0) into the U13 6529B keyboard latch at $FD30; on the C16 U13 is wired straight (D0\u2192DB0\u2192P0 ... D7\u2192DB7\u2192P7) and its outputs reach connector CN2 through ferrite beads FB41-FB48. The rows return through FB49-FB56 to the TED U1 K0-K7 inputs (pins 15-22), with internal pull-ups; the CPU writes $FF to $FF08 (no joystick selected), the TED latches K0-K7 and the CPU reads them back from $FF08. Key pressed = row low.\",\"lines\":[{\"id\":\"KB0\",\"group\":\"col\",\"name\":\"KB0 ($FD30 bit 0) = U13 P0\",\"chip\":\"U13\",\"chip_part\":\"6529B SPI (keyboard latch)\",\"chip_pin\":\"2\",\"conn_pin\":\"19\",\"also_it\":\"il D0 della CPU entra in U13 su DB0 (pin 18); ferrite FB41\",\"also_en\":\"CPU D0 enters U13 on DB0 (pin 18); ferrite FB41\"},{\"id\":\"KB1\",\"group\":\"col\",\"name\":\"KB1 ($FD30 bit 1) = U13 P1\",\"chip\":\"U13\",\"chip_part\":\"6529B SPI (keyboard latch)\",\"chip_pin\":\"3\",\"conn_pin\":\"8\",\"also_it\":\"il D1 della CPU entra in U13 su DB1 (pin 17); ferrite FB42\",\"also_en\":\"CPU D1 enters U13 on DB1 (pin 17); ferrite FB42\"},{\"id\":\"KB2\",\"group\":\"col\",\"name\":\"KB2 ($FD30 bit 2) = U13 P2\",\"chip\":\"U13\",\"chip_part\":\"6529B SPI (keyboard latch)\",\"chip_pin\":\"4\",\"conn_pin\":\"12\",\"also_it\":\"il D2 della CPU entra in U13 su DB2 (pin 16); ferrite FB43\",\"also_en\":\"CPU D2 enters U13 on DB2 (pin 16); ferrite FB43\"},{\"id\":\"KB3\",\"group\":\"col\",\"name\":\"KB3 ($FD30 bit 3) = U13 P3\",\"chip\":\"U13\",\"chip_part\":\"6529B SPI (keyboard latch)\",\"chip_pin\":\"5\",\"conn_pin\":\"11\",\"also_it\":\"il D3 della CPU entra in U13 su DB3 (pin 15); ferrite FB44\",\"also_en\":\"CPU D3 enters U13 on DB3 (pin 15); ferrite FB44\"},{\"id\":\"KB4\",\"group\":\"col\",\"name\":\"KB4 ($FD30 bit 4) = U13 P4\",\"chip\":\"U13\",\"chip_part\":\"6529B SPI (keyboard latch)\",\"chip_pin\":\"6\",\"conn_pin\":\"13\",\"also_it\":\"il D4 della CPU entra in U13 su DB4 (pin 14); ferrite FB45\",\"also_en\":\"CPU D4 enters U13 on DB4 (pin 14); ferrite FB45\"},{\"id\":\"KB5\",\"group\":\"col\",\"name\":\"KB5 ($FD30 bit 5) = U13 P5\",\"chip\":\"U13\",\"chip_part\":\"6529B SPI (keyboard latch)\",\"chip_pin\":\"7\",\"conn_pin\":\"1\",\"also_it\":\"il D5 della CPU entra in U13 su DB5 (pin 13); ferrite FB46\",\"also_en\":\"CPU D5 enters U13 on DB5 (pin 13); ferrite FB46\"},{\"id\":\"KB6\",\"group\":\"col\",\"name\":\"KB6 ($FD30 bit 6) = U13 P6\",\"chip\":\"U13\",\"chip_part\":\"6529B SPI (keyboard latch)\",\"chip_pin\":\"8\",\"conn_pin\":\"16\",\"also_it\":\"il D6 della CPU entra in U13 su DB6 (pin 12); ferrite FB47\",\"also_en\":\"CPU D6 enters U13 on DB6 (pin 12); ferrite FB47\"},{\"id\":\"KB7\",\"group\":\"col\",\"name\":\"KB7 ($FD30 bit 7) = U13 P7\",\"chip\":\"U13\",\"chip_part\":\"6529B SPI (keyboard latch)\",\"chip_pin\":\"9\",\"conn_pin\":\"6\",\"also_it\":\"il D7 della CPU entra in U13 su DB7 (pin 11); ferrite FB48\",\"also_en\":\"CPU D7 enters U13 on DB7 (pin 11); ferrite FB48\"},{\"id\":\"K0\",\"group\":\"row\",\"name\":\"K0\",\"chip\":\"U1\",\"chip_part\":\"TED 7360\/8360\",\"chip_pin\":\"15\",\"conn_pin\":\"18\",\"also_it\":\"JOY1 CN4 pin 1 (su) tramite D1, JOY2 CN5 pin 1 (su) tramite D6; ferrite FB49\",\"also_en\":\"JOY1 CN4 pin 1 (up) via D1, JOY2 CN5 pin 1 (up) via D6; ferrite FB49\"},{\"id\":\"K1\",\"group\":\"row\",\"name\":\"K1\",\"chip\":\"U1\",\"chip_part\":\"TED 7360\/8360\",\"chip_pin\":\"16\",\"conn_pin\":\"15\",\"also_it\":\"JOY1 CN4 pin 2 (gi\u00f9) tramite D2, JOY2 CN5 pin 2 (gi\u00f9) tramite D7; ferrite FB50\",\"also_en\":\"JOY1 CN4 pin 2 (down) via D2, JOY2 CN5 pin 2 (down) via D7; ferrite FB50\"},{\"id\":\"K2\",\"group\":\"row\",\"name\":\"K2\",\"chip\":\"U1\",\"chip_part\":\"TED 7360\/8360\",\"chip_pin\":\"17\",\"conn_pin\":\"14\",\"also_it\":\"JOY1 CN4 pin 3 (sinistra) tramite D3, JOY2 CN5 pin 3 (sinistra) tramite D8; ferrite FB51\",\"also_en\":\"JOY1 CN4 pin 3 (left) via D3, JOY2 CN5 pin 3 (left) via D8; ferrite FB51\"},{\"id\":\"K3\",\"group\":\"row\",\"name\":\"K3\",\"chip\":\"U1\",\"chip_part\":\"TED 7360\/8360\",\"chip_pin\":\"18\",\"conn_pin\":\"17\",\"also_it\":\"JOY1 CN4 pin 4 (destra) tramite D4, JOY2 CN5 pin 4 (destra) tramite D9; ferrite FB52\",\"also_en\":\"JOY1 CN4 pin 4 (right) via D4, JOY2 CN5 pin 4 (right) via D9; ferrite FB52\"},{\"id\":\"K4\",\"group\":\"row\",\"name\":\"K4\",\"chip\":\"U1\",\"chip_part\":\"TED 7360\/8360\",\"chip_pin\":\"19\",\"conn_pin\":\"7\",\"also_it\":\"ferrite FB53\",\"also_en\":\"ferrite FB53\"},{\"id\":\"K5\",\"group\":\"row\",\"name\":\"K5\",\"chip\":\"U1\",\"chip_part\":\"TED 7360\/8360\",\"chip_pin\":\"20\",\"conn_pin\":\"9\",\"also_it\":\"ferrite FB54\",\"also_en\":\"ferrite FB54\"},{\"id\":\"K6\",\"group\":\"row\",\"name\":\"K6\",\"chip\":\"U1\",\"chip_part\":\"TED 7360\/8360\",\"chip_pin\":\"21\",\"conn_pin\":\"10\",\"also_it\":\"JOY1 CN4 pin 6 (fuoco) tramite D5; ferrite FB55\",\"also_en\":\"JOY1 CN4 pin 6 (fire) via D5; ferrite FB55\"},{\"id\":\"K7\",\"group\":\"row\",\"name\":\"K7\",\"chip\":\"U1\",\"chip_part\":\"TED 7360\/8360\",\"chip_pin\":\"22\",\"conn_pin\":\"3\",\"also_it\":\"JOY2 CN5 pin 6 (fuoco) tramite D10; ferrite FB56\",\"also_en\":\"JOY2 CN5 pin 6 (fire) via D10; ferrite FB56\"}],\"connector\":{\"ref\":\"CN2\",\"it\":\"Connettore tastiera 20 pin (pettine maschio sulla scheda madre)\",\"en\":\"20-pin keyboard connector (male header on the main board)\",\"pins\":[{\"n\":\"1\",\"sig\":\"KB5\"},{\"n\":\"2\",\"sig\":\"KEY\",\"note_it\":\"chiave di polarizzazione (senza pin)\",\"note_en\":\"polarisation key (no pin)\"},{\"n\":\"3\",\"sig\":\"K7\"},{\"n\":\"4\",\"sig\":\"GND\"},{\"n\":\"5\",\"sig\":\"NC\"},{\"n\":\"6\",\"sig\":\"KB7\"},{\"n\":\"7\",\"sig\":\"K4\"},{\"n\":\"8\",\"sig\":\"KB1\"},{\"n\":\"9\",\"sig\":\"K5\"},{\"n\":\"10\",\"sig\":\"K6\"},{\"n\":\"11\",\"sig\":\"KB3\"},{\"n\":\"12\",\"sig\":\"KB2\"},{\"n\":\"13\",\"sig\":\"KB4\"},{\"n\":\"14\",\"sig\":\"K2\"},{\"n\":\"15\",\"sig\":\"K1\"},{\"n\":\"16\",\"sig\":\"KB6\"},{\"n\":\"17\",\"sig\":\"K3\"},{\"n\":\"18\",\"sig\":\"K0\"},{\"n\":\"19\",\"sig\":\"KB0\"},{\"n\":\"20\",\"sig\":\"NC\"}]},\"layout\":[{\"id\":\"esc\",\"t\":\"ESC\",\"x\":0.25,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"1\",\"t\":\"1\",\"t2\":\"!\",\"x\":1.25,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"2\",\"t\":\"2\",\"t2\":\"\\\"\",\"x\":2.25,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"3\",\"t\":\"3\",\"t2\":\"#\",\"x\":3.25,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"4\",\"t\":\"4\",\"t2\":\"$\",\"x\":4.25,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"5\",\"t\":\"5\",\"t2\":\"%\",\"x\":5.25,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"6\",\"t\":\"6\",\"t2\":\"&\",\"x\":6.25,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"7\",\"t\":\"7\",\"t2\":\"'\",\"x\":7.25,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"8\",\"t\":\"8\",\"t2\":\"(\",\"x\":8.25,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"9\",\"t\":\"9\",\"t2\":\")\",\"x\":9.25,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"0\",\"t\":\"0\",\"t2\":\"\u2191\",\"x\":10.25,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"left\",\"t\":\"\u2190\",\"x\":11.25,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"right\",\"t\":\"\u2192\",\"x\":12.25,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"up\",\"t\":\"\u2191\",\"x\":13.25,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"down\",\"t\":\"\u2193\",\"x\":14.25,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"del\",\"t\":\"INST\",\"t2\":\"DEL\",\"x\":15.25,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"ctrl\",\"t\":\"CTRL\",\"x\":0.25,\"y\":1,\"w\":1.5,\"h\":1},{\"id\":\"q\",\"t\":\"Q\",\"x\":1.75,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"w\",\"t\":\"W\",\"x\":2.75,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"e\",\"t\":\"E\",\"x\":3.75,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"r\",\"t\":\"R\",\"x\":4.75,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"t\",\"t\":\"T\",\"x\":5.75,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"y\",\"t\":\"Y\",\"x\":6.75,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"u\",\"t\":\"U\",\"x\":7.75,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"i\",\"t\":\"I\",\"x\":8.75,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"o\",\"t\":\"O\",\"x\":9.75,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"p\",\"t\":\"P\",\"x\":10.75,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"at\",\"t\":\"@\",\"x\":11.75,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"plus\",\"t\":\"+\",\"x\":12.75,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"minus\",\"t\":\"\u2212\",\"x\":13.75,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"home\",\"t\":\"CLEAR\",\"t2\":\"HOME\",\"x\":14.75,\"y\":1,\"w\":1.5,\"h\":1},{\"id\":\"stop\",\"t\":\"RUN\",\"t2\":\"STOP\",\"x\":0,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"lock\",\"t\":\"SHIFT\",\"t2\":\"LOCK\",\"x\":1,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"a\",\"t\":\"A\",\"x\":2,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"s\",\"t\":\"S\",\"x\":3,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"d\",\"t\":\"D\",\"x\":4,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"f\",\"t\":\"F\",\"x\":5,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"g\",\"t\":\"G\",\"x\":6,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"h\",\"t\":\"H\",\"x\":7,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"j\",\"t\":\"J\",\"x\":8,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"k\",\"t\":\"K\",\"x\":9,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"l\",\"t\":\"L\",\"x\":10,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"colon\",\"t\":\":\",\"t2\":\"[\",\"x\":11,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"semi\",\"t\":\";\",\"t2\":\"]\",\"x\":12,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"star\",\"t\":\"*\",\"x\":13,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"ret\",\"t\":\"RETURN\",\"x\":14,\"y\":2,\"w\":2,\"h\":1},{\"id\":\"cbm\",\"t\":\"C=\",\"x\":0,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"lshift\",\"t\":\"SHIFT\",\"x\":1,\"y\":3,\"w\":1.5,\"h\":1},{\"id\":\"z\",\"t\":\"Z\",\"x\":2.5,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"x\",\"t\":\"X\",\"x\":3.5,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"c\",\"t\":\"C\",\"x\":4.5,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"v\",\"t\":\"V\",\"x\":5.5,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"b\",\"t\":\"B\",\"x\":6.5,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"n\",\"t\":\"N\",\"x\":7.5,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"m\",\"t\":\"M\",\"x\":8.5,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"comma\",\"t\":\",\",\"t2\":\"<\",\"x\":9.5,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"period\",\"t\":\".\",\"t2\":\">\",\"x\":10.5,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"slash\",\"t\":\"\/\",\"t2\":\"?\",\"x\":11.5,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"rshift\",\"t\":\"SHIFT\",\"x\":12.5,\"y\":3,\"w\":1.5,\"h\":1},{\"id\":\"pound\",\"t\":\"\u00a3\",\"x\":14,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"equal\",\"t\":\"=\",\"t2\":\"\u03c0\",\"x\":15,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"space\",\"t\":\"SPACE\",\"x\":2.75,\"y\":4,\"w\":9,\"h\":1},{\"id\":\"f1\",\"t\":\"f1\",\"t2\":\"f4\",\"x\":17.5,\"y\":0,\"w\":1.5,\"h\":1},{\"id\":\"f2\",\"t\":\"f2\",\"t2\":\"f5\",\"x\":17.5,\"y\":1,\"w\":1.5,\"h\":1},{\"id\":\"f3\",\"t\":\"f3\",\"t2\":\"f6\",\"x\":17.5,\"y\":2,\"w\":1.5,\"h\":1},{\"id\":\"help\",\"t\":\"HELP\",\"t2\":\"f7\",\"x\":17.5,\"y\":3,\"w\":1.5,\"h\":1}],\"matrix\":{\"del\":[\"KB0\",\"K0\"],\"ret\":[\"KB0\",\"K1\"],\"pound\":[\"KB0\",\"K2\"],\"help\":[\"KB0\",\"K3\"],\"f1\":[\"KB0\",\"K4\"],\"f2\":[\"KB0\",\"K5\"],\"f3\":[\"KB0\",\"K6\"],\"at\":[\"KB0\",\"K7\"],\"3\":[\"KB1\",\"K0\"],\"w\":[\"KB1\",\"K1\"],\"a\":[\"KB1\",\"K2\"],\"4\":[\"KB1\",\"K3\"],\"z\":[\"KB1\",\"K4\"],\"s\":[\"KB1\",\"K5\"],\"e\":[\"KB1\",\"K6\"],\"lshift\":[\"KB1\",\"K7\"],\"5\":[\"KB2\",\"K0\"],\"r\":[\"KB2\",\"K1\"],\"d\":[\"KB2\",\"K2\"],\"6\":[\"KB2\",\"K3\"],\"c\":[\"KB2\",\"K4\"],\"f\":[\"KB2\",\"K5\"],\"t\":[\"KB2\",\"K6\"],\"x\":[\"KB2\",\"K7\"],\"7\":[\"KB3\",\"K0\"],\"y\":[\"KB3\",\"K1\"],\"g\":[\"KB3\",\"K2\"],\"8\":[\"KB3\",\"K3\"],\"b\":[\"KB3\",\"K4\"],\"h\":[\"KB3\",\"K5\"],\"u\":[\"KB3\",\"K6\"],\"v\":[\"KB3\",\"K7\"],\"9\":[\"KB4\",\"K0\"],\"i\":[\"KB4\",\"K1\"],\"j\":[\"KB4\",\"K2\"],\"0\":[\"KB4\",\"K3\"],\"m\":[\"KB4\",\"K4\"],\"k\":[\"KB4\",\"K5\"],\"o\":[\"KB4\",\"K6\"],\"n\":[\"KB4\",\"K7\"],\"down\":[\"KB5\",\"K0\"],\"p\":[\"KB5\",\"K1\"],\"l\":[\"KB5\",\"K2\"],\"up\":[\"KB5\",\"K3\"],\"period\":[\"KB5\",\"K4\"],\"colon\":[\"KB5\",\"K5\"],\"minus\":[\"KB5\",\"K6\"],\"comma\":[\"KB5\",\"K7\"],\"left\":[\"KB6\",\"K0\"],\"star\":[\"KB6\",\"K1\"],\"semi\":[\"KB6\",\"K2\"],\"right\":[\"KB6\",\"K3\"],\"esc\":[\"KB6\",\"K4\"],\"equal\":[\"KB6\",\"K5\"],\"plus\":[\"KB6\",\"K6\"],\"slash\":[\"KB6\",\"K7\"],\"1\":[\"KB7\",\"K0\"],\"home\":[\"KB7\",\"K1\"],\"ctrl\":[\"KB7\",\"K2\"],\"2\":[\"KB7\",\"K3\"],\"space\":[\"KB7\",\"K4\"],\"cbm\":[\"KB7\",\"K5\"],\"q\":[\"KB7\",\"K6\"],\"stop\":[\"KB7\",\"K7\"],\"rshift\":[\"KB1\",\"K7\"],\"lock\":[\"KB1\",\"K7\"]},\"special\":{\"lock\":{\"lines\":[\"KB1\",\"K7\"],\"it\":\"SHIFT LOCK \u00e8 un tasto a ritenuta collegato in parallelo allo SHIFT: chiude KB1 (CN2-8) con K7 (CN2-3). Se resta abbassato sembra che SHIFT sia sempre premuto.\",\"en\":\"SHIFT LOCK is a latching key wired in parallel with SHIFT: it shorts KB1 (CN2-8) to K7 (CN2-3). If it stays down the machine behaves as if SHIFT were held.\"},\"rshift\":{\"lines\":[\"KB1\",\"K7\"],\"it\":\"I due SHIFT sono in parallelo sulla stessa posizione di matrice KB1\/K7.\",\"en\":\"Both SHIFT keys are wired in parallel on the same matrix position KB1\/K7.\"},\"reset\":{\"lines\":[],\"it\":\"Il pulsante RESET (sul retro) non passa dalla tastiera: \u00e8 SW2 sulla scheda madre, che innesca il 555 U10; l'uscita, tramite l'inverter open-collector 7406 U9, pilota la linea RESET. Il LED di accensione ha un connettore a parte (CN9, 3 pin, resistenza R14 470 \u03a9).\",\"en\":\"The (rear) RESET button is not part of the keyboard: it is SW2 on the main board, which triggers 555 U10; its output, through open-collector inverter 7406 U9, drives the RESET line. The power LED has its own connector (CN9, 3 pins, resistor R14 470 \u03a9).\"}},\"notes_it\":[\"Stessa matrice del Plus\/4 (stesso KERNAL), ma disposizione fisica diversa (mobile tipo C64): i quattro tasti cursore sono nella fila dei numeri tra 0 e INST\/DEL, i tasti f1, f2, f3 e HELP sono in colonna a destra, CLEAR\/HOME \u00e8 a fine fila Q-P, \u00a3 e = sono a destra dello SHIFT destro. C'\u00e8 un solo CTRL.\",\"Anche qui K0-K3, K6 e K7 sono condivise con le porte joystick (mini-DIN 8 poli CN4 'JOY 1' e CN5 'JOY 2'): pin 1-4 (su, gi\u00f9, sinistra, destra) su K0-K3 tramite i diodi 1N914 D1-D4 e D6-D9; fuoco di CN4 su K6 tramite D5, fuoco di CN5 su K7 tramite D10. Pull-up 3,3 k\u03a9 (RP2, RP5).\",\"Il pin 8 di CN4 \u00e8 pilotato da D2 e quello di CN5 da D1 attraverso i buffer 74LS125 U11 (pin 2\u21923 e 5\u21926), filtrati da EM1\/EM2: \u00e8 il bit scritto in $FF08 che seleziona il joystick da leggere.\",\"Diagnosi: riga K0-K3\/K6\/K7 morta o sempre attiva \u2192 scollegare i joystick e controllare D1-D10 e U11. Riga K4 o K5 \u2192 solo tastiera\/TED. Colonna KB morta \u2192 U13, ferriti FB41-FB48, connettore CN2.\",\"La numerazione dei pin di CN2 non coincide con quella del connettore CN8 del Plus\/4: le tastiere non sono intercambiabili.\"],\"notes_en\":[\"Same matrix as the Plus\/4 (same KERNAL) but a different physical layout (C64-style case): the four cursor keys are in the number row between 0 and INST\/DEL, f1, f2, f3 and HELP are in a column on the right, CLEAR\/HOME ends the Q-P row, \u00a3 and = sit to the right of right SHIFT. There is only one CTRL.\",\"Here too K0-K3, K6 and K7 are shared with the joystick ports (8-pin mini-DIN CN4 'JOY 1' and CN5 'JOY 2'): pins 1-4 (up, down, left, right) to K0-K3 through 1N914 diodes D1-D4 and D6-D9; CN4 fire to K6 through D5, CN5 fire to K7 through D10. 3.3 k\u03a9 pull-ups (RP2, RP5).\",\"CN4 pin 8 is driven from D2 and CN5 pin 8 from D1 through 74LS125 buffers U11 (pins 2\u21923 and 5\u21926), filtered by EM1\/EM2: the bit written to $FF08 selects which joystick is read.\",\"Diagnosis: K0-K3\/K6\/K7 row dead or always active \u2192 unplug the joysticks and check D1-D10 and U11. K4 or K5 row \u2192 keyboard\/TED only. Dead KB column \u2192 U13, ferrites FB41-FB48, connector CN2.\",\"CN2 pin numbering is not the same as the Plus\/4 CN8 connector: the keyboards are not interchangeable.\"],\"board_it\":\"scheda 250443-01 (schema 251788 rev. A)\",\"board_en\":\"250443-01 board (schematic 251788 rev. A)\"},\"c64\":{\"id\":\"c64\",\"name\":\"Commodore 64\",\"sources\":[{\"t\":\"MAME src\/mame\/commodore\/c64.cpp (INPUT_PORTS c64, cia1_pa_r\/cia1_pb_r)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/mame\/commodore\/c64.cpp\"},{\"t\":\"VICE data\/C64\/gtk3_pos.vkm (keyboard matrix table)\",\"u\":\"https:\/\/sourceforge.net\/p\/vice-emu\/code\/HEAD\/tree\/trunk\/vice\/data\/C64\/gtk3_pos.vkm\"},{\"t\":\"C64-Wiki: Keyboard\",\"u\":\"https:\/\/www.c64-wiki.com\/wiki\/Keyboard\"},{\"t\":\"SX-64 \/ C64 keyboard connector pinout\",\"u\":\"https:\/\/tietokonesivut.kasettilamerit.fi\/hardware\/misc\/sx64_keyboard.htm\"}],\"scan_it\":\"Il CIA 6526 U1 pilota le colonne su PA0-PA7 (uscite, una alla volta a livello basso) e legge le righe su PB0-PB7 (ingressi con pull-up interni). Un tasto premuto mette in contatto una colonna con una riga: se la colonna selezionata \u00e8 bassa, il bit della riga corrispondente viene letto a 0.\",\"scan_en\":\"CIA 6526 U1 drives the columns on PA0-PA7 (outputs, pulled low one at a time) and reads the rows on PB0-PB7 (inputs with internal pull-ups). A pressed key connects one column to one row: when that column is low, the row bit reads 0.\",\"lines\":[{\"id\":\"PA0\",\"group\":\"col\",\"name\":\"COL0\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"2\",\"conn_pin\":\"13\",\"path_board\":\"C64 250407\",\"also_it\":\"porta joystick 2 pin 1 (su)\",\"also_en\":\"control port 2 pin 1 (up)\",\"path_en\":[\"U1.2 PA0\",\"CN8.1 (joystick port)\"],\"path_it\":[\"U1.2 PA0\",\"CN8.1 (Porta joystick)\"]},{\"id\":\"PA1\",\"group\":\"col\",\"name\":\"COL1\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"3\",\"conn_pin\":\"19\",\"path_board\":\"C64 250407\",\"also_it\":\"porta joystick 2 pin 2 (gi\u00f9)\",\"also_en\":\"control port 2 pin 2 (down)\",\"path_en\":[\"U1.3 PA1\",\"CN8.2 (joystick port)\"],\"path_it\":[\"U1.3 PA1\",\"CN8.2 (Porta joystick)\"]},{\"id\":\"PA2\",\"group\":\"col\",\"name\":\"COL2\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"4\",\"conn_pin\":\"18\",\"path_board\":\"C64 250407\",\"also_it\":\"porta joystick 2 pin 3 (sinistra)\",\"also_en\":\"control port 2 pin 3 (left)\",\"path_en\":[\"U1.4 PA2\",\"CN8.3 (joystick port)\"],\"path_it\":[\"U1.4 PA2\",\"CN8.3 (Porta joystick)\"]},{\"id\":\"PA3\",\"group\":\"col\",\"name\":\"COL3\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"5\",\"conn_pin\":\"17\",\"path_board\":\"C64 250407\",\"also_it\":\"porta joystick 2 pin 4 (destra)\",\"also_en\":\"control port 2 pin 4 (right)\",\"path_en\":[\"U1.5 PA3\",\"CN8.4 (joystick port)\"],\"path_it\":[\"U1.5 PA3\",\"CN8.4 (Porta joystick)\"]},{\"id\":\"PA4\",\"group\":\"col\",\"name\":\"COL4\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"6\",\"conn_pin\":\"16\",\"path_board\":\"C64 250407\",\"also_it\":\"porta joystick 2 pin 6 (fuoco)\",\"also_en\":\"control port 2 pin 6 (fire)\",\"path_en\":[\"U1.6 PA4\",\"CN8.6 (joystick port)\"],\"path_it\":[\"U1.6 PA4\",\"CN8.6 (Porta joystick)\"]},{\"id\":\"PA5\",\"group\":\"col\",\"name\":\"COL5\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"7\",\"conn_pin\":\"15\",\"also\":\"\",\"path_board\":\"C64 250407\",\"path_en\":[\"U1.7 PA5\"],\"path_it\":[\"U1.7 PA5\"]},{\"id\":\"PA6\",\"group\":\"col\",\"name\":\"COL6\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"8\",\"conn_pin\":\"14\",\"also\":\"\",\"path_board\":\"C64 250407\",\"path_en\":[\"U1.8 PA6\",\"U28.12 4C\",\"U28.6 3C\"],\"path_it\":[\"U1.8 PA6\",\"U28.12 4C\",\"U28.6 3C\"]},{\"id\":\"PA7\",\"group\":\"col\",\"name\":\"COL7\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"9\",\"conn_pin\":\"20\",\"also\":\"\",\"path_board\":\"C64 250407\",\"path_en\":[\"U1.9 PA7\",\"U28.13 1C\",\"U28.5 2C\"],\"path_it\":[\"U1.9 PA7\",\"U28.13 1C\",\"U28.5 2C\"]},{\"id\":\"PB0\",\"group\":\"row\",\"name\":\"ROW0\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"10\",\"conn_pin\":\"12\",\"path_board\":\"C64 250407\",\"also_it\":\"porta joystick 1 pin 1 (su)\",\"also_en\":\"control port 1 pin 1 (up)\",\"path_en\":[\"U1.10 PB0\",\"CN9.1 (joystick port)\"],\"path_it\":[\"U1.10 PB0\",\"CN9.1 (Porta joystick)\"]},{\"id\":\"PB1\",\"group\":\"row\",\"name\":\"ROW1\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"11\",\"conn_pin\":\"11\",\"path_board\":\"C64 250407\",\"also_it\":\"porta joystick 1 pin 2 (gi\u00f9)\",\"also_en\":\"control port 1 pin 2 (down)\",\"path_en\":[\"U1.11 PB1\",\"CN9.2 (joystick port)\"],\"path_it\":[\"U1.11 PB1\",\"CN9.2 (Porta joystick)\"]},{\"id\":\"PB2\",\"group\":\"row\",\"name\":\"ROW2\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"12\",\"conn_pin\":\"10\",\"path_board\":\"C64 250407\",\"also_it\":\"porta joystick 1 pin 3 (sinistra)\",\"also_en\":\"control port 1 pin 3 (left)\",\"path_en\":[\"U1.12 PB2\",\"CN9.3 (joystick port)\"],\"path_it\":[\"U1.12 PB2\",\"CN9.3 (Porta joystick)\"]},{\"id\":\"PB3\",\"group\":\"row\",\"name\":\"ROW3\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"13\",\"conn_pin\":\"5\",\"path_board\":\"C64 250407\",\"also_it\":\"porta joystick 1 pin 4 (destra)\",\"also_en\":\"control port 1 pin 4 (right)\",\"path_en\":[\"U1.13 PB3\",\"CN9.4 (joystick port)\"],\"path_it\":[\"U1.13 PB3\",\"CN9.4 (Porta joystick)\"]},{\"id\":\"PB4\",\"group\":\"row\",\"name\":\"ROW4\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"14\",\"conn_pin\":\"8\",\"path_board\":\"C64 250407\",\"also_it\":\"porta joystick 1 pin 6 (fuoco)\",\"also_en\":\"control port 1 pin 6 (fire)\",\"path_en\":[\"U1.14 PB4\",\"U19.9 ~LP\",\"CN9.6 (joystick port)\"],\"path_it\":[\"U1.14 PB4\",\"U19.9 ~LP\",\"CN9.6 (Porta joystick)\"]},{\"id\":\"PB5\",\"group\":\"row\",\"name\":\"ROW5\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"15\",\"conn_pin\":\"7\",\"also\":\"\",\"path_board\":\"C64 250407\",\"path_en\":[\"U1.15 PB5\"],\"path_it\":[\"U1.15 PB5\"]},{\"id\":\"PB6\",\"group\":\"row\",\"name\":\"ROW6\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"16\",\"conn_pin\":\"6\",\"also\":\"\",\"path_board\":\"C64 250407\",\"path_en\":[\"U1.16 PB6\"],\"path_it\":[\"U1.16 PB6\"]},{\"id\":\"PB7\",\"group\":\"row\",\"name\":\"ROW7\",\"chip\":\"U1\",\"chip_part\":\"6526 CIA\",\"chip_pin\":\"17\",\"conn_pin\":\"9\",\"also\":\"\",\"path_board\":\"C64 250407\",\"path_en\":[\"U1.17 PB7\"],\"path_it\":[\"U1.17 PB7\"]},{\"id\":\"RESTORE\",\"group\":\"extra\",\"name\":\"RESTORE\",\"chip\":\"U20\",\"chip_part\":\"556\",\"chip_pin\":\"6\",\"conn_pin\":\"3\",\"path\":[],\"path_board\":\"C64 250407\",\"also_it\":\"monostabile del 556 \u2192 NMI\",\"also_en\":\"monostable on the 556 -> NMI\"}],\"connector\":{\"ref\":\"CN1\",\"it\":\"Connettore tastiera 20 pin (pin 2 mancante)\",\"en\":\"20-pin keyboard connector (pin 2 missing)\",\"pins\":[{\"n\":\"1\",\"sig\":\"GND\"},{\"n\":\"2\",\"sig\":\"KEY\",\"note_it\":\"senza pin, polarizzazione\",\"note_en\":\"no pin, polarisation\"},{\"n\":\"3\",\"sig\":\"RESTORE\"},{\"n\":\"4\",\"sig\":\"+5V\"},{\"n\":\"5\",\"sig\":\"PB3\"},{\"n\":\"6\",\"sig\":\"PB6\"},{\"n\":\"7\",\"sig\":\"PB5\"},{\"n\":\"8\",\"sig\":\"PB4\"},{\"n\":\"9\",\"sig\":\"PB7\"},{\"n\":\"10\",\"sig\":\"PB2\"},{\"n\":\"11\",\"sig\":\"PB1\"},{\"n\":\"12\",\"sig\":\"PB0\"},{\"n\":\"13\",\"sig\":\"PA0\"},{\"n\":\"14\",\"sig\":\"PA6\"},{\"n\":\"15\",\"sig\":\"PA5\"},{\"n\":\"16\",\"sig\":\"PA4\"},{\"n\":\"17\",\"sig\":\"PA3\"},{\"n\":\"18\",\"sig\":\"PA2\"},{\"n\":\"19\",\"sig\":\"PA1\"},{\"n\":\"20\",\"sig\":\"PA7\"}]},\"layout\":[{\"id\":\"larrow\",\"t\":\"\u2190\",\"x\":0,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"1\",\"t\":\"1\",\"t2\":\"!\",\"x\":1,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"2\",\"t\":\"2\",\"t2\":\"\\\"\",\"x\":2,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"3\",\"t\":\"3\",\"t2\":\"#\",\"x\":3,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"4\",\"t\":\"4\",\"t2\":\"$\",\"x\":4,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"5\",\"t\":\"5\",\"t2\":\"%\",\"x\":5,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"6\",\"t\":\"6\",\"t2\":\"&\",\"x\":6,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"7\",\"t\":\"7\",\"t2\":\"'\",\"x\":7,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"8\",\"t\":\"8\",\"t2\":\"(\",\"x\":8,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"9\",\"t\":\"9\",\"t2\":\")\",\"x\":9,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"0\",\"t\":\"0\",\"x\":10,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"plus\",\"t\":\"+\",\"x\":11,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"minus\",\"t\":\"-\",\"x\":12,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"pound\",\"t\":\"\u00a3\",\"x\":13,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"home\",\"t\":\"HOME\",\"t2\":\"CLR\",\"x\":14,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"del\",\"t\":\"DEL\",\"t2\":\"INST\",\"x\":15,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"ctrl\",\"t\":\"CTRL\",\"x\":0,\"y\":1.0,\"w\":1.5,\"h\":1},{\"id\":\"q\",\"t\":\"Q\",\"x\":1.5,\"y\":1.0,\"w\":1,\"h\":1},{\"id\":\"w\",\"t\":\"W\",\"x\":2.5,\"y\":1.0,\"w\":1,\"h\":1},{\"id\":\"e\",\"t\":\"E\",\"x\":3.5,\"y\":1.0,\"w\":1,\"h\":1},{\"id\":\"r\",\"t\":\"R\",\"x\":4.5,\"y\":1.0,\"w\":1,\"h\":1},{\"id\":\"t\",\"t\":\"T\",\"x\":5.5,\"y\":1.0,\"w\":1,\"h\":1},{\"id\":\"y\",\"t\":\"Y\",\"x\":6.5,\"y\":1.0,\"w\":1,\"h\":1},{\"id\":\"u\",\"t\":\"U\",\"x\":7.5,\"y\":1.0,\"w\":1,\"h\":1},{\"id\":\"i\",\"t\":\"I\",\"x\":8.5,\"y\":1.0,\"w\":1,\"h\":1},{\"id\":\"o\",\"t\":\"O\",\"x\":9.5,\"y\":1.0,\"w\":1,\"h\":1},{\"id\":\"p\",\"t\":\"P\",\"x\":10.5,\"y\":1.0,\"w\":1,\"h\":1},{\"id\":\"at\",\"t\":\"@\",\"x\":11.5,\"y\":1.0,\"w\":1,\"h\":1},{\"id\":\"star\",\"t\":\"*\",\"x\":12.5,\"y\":1.0,\"w\":1,\"h\":1},{\"id\":\"uparrow\",\"t\":\"\u2191\",\"t2\":\"\u03c0\",\"x\":13.5,\"y\":1.0,\"w\":1,\"h\":1},{\"id\":\"restore\",\"t\":\"RESTORE\",\"x\":14.5,\"y\":1.0,\"w\":1.5,\"h\":1},{\"id\":\"stop\",\"t\":\"STOP\",\"t2\":\"RUN\",\"x\":0,\"y\":2.0,\"w\":1,\"h\":1},{\"id\":\"shlock\",\"t\":\"SHIFT LOCK\",\"x\":1,\"y\":2.0,\"w\":1,\"h\":1},{\"id\":\"a\",\"t\":\"A\",\"x\":2,\"y\":2.0,\"w\":1,\"h\":1},{\"id\":\"s\",\"t\":\"S\",\"x\":3,\"y\":2.0,\"w\":1,\"h\":1},{\"id\":\"d\",\"t\":\"D\",\"x\":4,\"y\":2.0,\"w\":1,\"h\":1},{\"id\":\"f\",\"t\":\"F\",\"x\":5,\"y\":2.0,\"w\":1,\"h\":1},{\"id\":\"g\",\"t\":\"G\",\"x\":6,\"y\":2.0,\"w\":1,\"h\":1},{\"id\":\"h\",\"t\":\"H\",\"x\":7,\"y\":2.0,\"w\":1,\"h\":1},{\"id\":\"j\",\"t\":\"J\",\"x\":8,\"y\":2.0,\"w\":1,\"h\":1},{\"id\":\"k\",\"t\":\"K\",\"x\":9,\"y\":2.0,\"w\":1,\"h\":1},{\"id\":\"l\",\"t\":\"L\",\"x\":10,\"y\":2.0,\"w\":1,\"h\":1},{\"id\":\"colon\",\"t\":\":\",\"t2\":\"[\",\"x\":11,\"y\":2.0,\"w\":1,\"h\":1},{\"id\":\"semicolon\",\"t\":\";\",\"t2\":\"]\",\"x\":12,\"y\":2.0,\"w\":1,\"h\":1},{\"id\":\"equal\",\"t\":\"=\",\"x\":13,\"y\":2.0,\"w\":1,\"h\":1},{\"id\":\"return\",\"t\":\"RETURN\",\"x\":14,\"y\":2.0,\"w\":2,\"h\":1},{\"id\":\"cbm\",\"t\":\"C=\",\"x\":0,\"y\":3.0,\"w\":1,\"h\":1},{\"id\":\"lshift\",\"t\":\"SHIFT\",\"x\":1,\"y\":3.0,\"w\":1.5,\"h\":1},{\"id\":\"z\",\"t\":\"Z\",\"x\":2.5,\"y\":3.0,\"w\":1,\"h\":1},{\"id\":\"x\",\"t\":\"X\",\"x\":3.5,\"y\":3.0,\"w\":1,\"h\":1},{\"id\":\"c\",\"t\":\"C\",\"x\":4.5,\"y\":3.0,\"w\":1,\"h\":1},{\"id\":\"v\",\"t\":\"V\",\"x\":5.5,\"y\":3.0,\"w\":1,\"h\":1},{\"id\":\"b\",\"t\":\"B\",\"x\":6.5,\"y\":3.0,\"w\":1,\"h\":1},{\"id\":\"n\",\"t\":\"N\",\"x\":7.5,\"y\":3.0,\"w\":1,\"h\":1},{\"id\":\"m\",\"t\":\"M\",\"x\":8.5,\"y\":3.0,\"w\":1,\"h\":1},{\"id\":\"comma\",\"t\":\",\",\"t2\":\"<\",\"x\":9.5,\"y\":3.0,\"w\":1,\"h\":1},{\"id\":\"period\",\"t\":\".\",\"t2\":\">\",\"x\":10.5,\"y\":3.0,\"w\":1,\"h\":1},{\"id\":\"slash\",\"t\":\"\/\",\"t2\":\"?\",\"x\":11.5,\"y\":3.0,\"w\":1,\"h\":1},{\"id\":\"rshift\",\"t\":\"SHIFT\",\"x\":12.5,\"y\":3.0,\"w\":1.5,\"h\":1},{\"id\":\"down\",\"t\":\"CRSR \u2193\",\"t2\":\"\u2191\",\"x\":14,\"y\":3.0,\"w\":1,\"h\":1},{\"id\":\"right\",\"t\":\"CRSR \u2192\",\"t2\":\"\u2190\",\"x\":15,\"y\":3.0,\"w\":1,\"h\":1},{\"id\":\"space\",\"t\":\"SPACE\",\"x\":3,\"y\":4.0,\"w\":9,\"h\":1},{\"id\":\"f1\",\"t\":\"f1\",\"t2\":\"f2\",\"x\":16.5,\"y\":0.0,\"w\":1.5,\"h\":1},{\"id\":\"f3\",\"t\":\"f3\",\"t2\":\"f4\",\"x\":16.5,\"y\":1.0,\"w\":1.5,\"h\":1},{\"id\":\"f5\",\"t\":\"f5\",\"t2\":\"f6\",\"x\":16.5,\"y\":2.0,\"w\":1.5,\"h\":1},{\"id\":\"f7\",\"t\":\"f7\",\"t2\":\"f8\",\"x\":16.5,\"y\":3.0,\"w\":1.5,\"h\":1}],\"matrix\":{\"del\":[\"PA0\",\"PB0\"],\"return\":[\"PA0\",\"PB1\"],\"right\":[\"PA0\",\"PB2\"],\"f7\":[\"PA0\",\"PB3\"],\"f1\":[\"PA0\",\"PB4\"],\"f3\":[\"PA0\",\"PB5\"],\"f5\":[\"PA0\",\"PB6\"],\"down\":[\"PA0\",\"PB7\"],\"3\":[\"PA1\",\"PB0\"],\"w\":[\"PA1\",\"PB1\"],\"a\":[\"PA1\",\"PB2\"],\"4\":[\"PA1\",\"PB3\"],\"z\":[\"PA1\",\"PB4\"],\"s\":[\"PA1\",\"PB5\"],\"e\":[\"PA1\",\"PB6\"],\"lshift\":[\"PA1\",\"PB7\"],\"5\":[\"PA2\",\"PB0\"],\"r\":[\"PA2\",\"PB1\"],\"d\":[\"PA2\",\"PB2\"],\"6\":[\"PA2\",\"PB3\"],\"c\":[\"PA2\",\"PB4\"],\"f\":[\"PA2\",\"PB5\"],\"t\":[\"PA2\",\"PB6\"],\"x\":[\"PA2\",\"PB7\"],\"7\":[\"PA3\",\"PB0\"],\"y\":[\"PA3\",\"PB1\"],\"g\":[\"PA3\",\"PB2\"],\"8\":[\"PA3\",\"PB3\"],\"b\":[\"PA3\",\"PB4\"],\"h\":[\"PA3\",\"PB5\"],\"u\":[\"PA3\",\"PB6\"],\"v\":[\"PA3\",\"PB7\"],\"9\":[\"PA4\",\"PB0\"],\"i\":[\"PA4\",\"PB1\"],\"j\":[\"PA4\",\"PB2\"],\"0\":[\"PA4\",\"PB3\"],\"m\":[\"PA4\",\"PB4\"],\"k\":[\"PA4\",\"PB5\"],\"o\":[\"PA4\",\"PB6\"],\"n\":[\"PA4\",\"PB7\"],\"plus\":[\"PA5\",\"PB0\"],\"p\":[\"PA5\",\"PB1\"],\"l\":[\"PA5\",\"PB2\"],\"minus\":[\"PA5\",\"PB3\"],\"period\":[\"PA5\",\"PB4\"],\"colon\":[\"PA5\",\"PB5\"],\"at\":[\"PA5\",\"PB6\"],\"comma\":[\"PA5\",\"PB7\"],\"pound\":[\"PA6\",\"PB0\"],\"star\":[\"PA6\",\"PB1\"],\"semicolon\":[\"PA6\",\"PB2\"],\"home\":[\"PA6\",\"PB3\"],\"rshift\":[\"PA6\",\"PB4\"],\"equal\":[\"PA6\",\"PB5\"],\"uparrow\":[\"PA6\",\"PB6\"],\"slash\":[\"PA6\",\"PB7\"],\"1\":[\"PA7\",\"PB0\"],\"larrow\":[\"PA7\",\"PB1\"],\"ctrl\":[\"PA7\",\"PB2\"],\"2\":[\"PA7\",\"PB3\"],\"space\":[\"PA7\",\"PB4\"],\"cbm\":[\"PA7\",\"PB5\"],\"q\":[\"PA7\",\"PB6\"],\"stop\":[\"PA7\",\"PB7\"],\"shlock\":[\"PA1\",\"PB7\"]},\"special\":{\"restore\":{\"lines\":[\"RESTORE\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: chiude il pin 3 del connettore (RESTORE) verso massa (pin 1); il segnale va al timer 556 usato come monostabile, che genera l'impulso di NMI.\",\"en\":\"Not in the matrix: it shorts connector pin 3 (RESTORE) to ground (pin 1); the signal goes to the 556 timer wired as a monostable, which produces the NMI pulse.\"},\"shlock\":{\"lines\":[\"PA1\",\"PB7\"],\"it\":\"SHIFT LOCK \u00e8 un tasto meccanico a ritenuta collegato in parallelo allo SHIFT sinistro (PA1\/PB7): se resta bloccato gi\u00f9, il computer vede SHIFT sempre premuto.\",\"en\":\"SHIFT LOCK is a mechanically latching key wired in parallel with left SHIFT (PA1\/PB7): if it stays latched down, the computer sees SHIFT held all the time.\"}},\"notes_it\":[\"PA0-PA4 sono condivise con la porta joystick 2 e PB0-PB4 con la porta joystick 1: un joystick difettoso o una porta in corto si presenta come un gruppo di tasti che non va o che si \\\"preme\\\" da solo.\",\"Se non funziona un'intera colonna o riga di tasti, controllare prima la pista sul connettore CN1 e il relativo pin del CIA U1; se non funziona nessun tasto, il CIA U1 \u00e8 il primo sospettato.\",\"I tasti funzione e i tasti cursore sono normali tasti della matrice; SHIFT+tasto non passa da una linea separata.\"],\"notes_en\":[\"PA0-PA4 are shared with control port 2 and PB0-PB4 with control port 1: a faulty joystick or a shorted port shows up as a group of keys that are dead or that \\\"press\\\" themselves.\",\"If a whole column or row of keys is dead, check the track at connector CN1 and the matching CIA U1 pin first; if no key works at all, CIA U1 is the first suspect.\",\"Function keys and cursor keys are ordinary matrix keys; SHIFT+key does not use a separate line.\"],\"board_it\":\"scheda 250407 (biscottone)\",\"board_en\":\"250407 board (breadbin)\"},\"cpc464\":{\"id\":\"cpc464\",\"name\":\"Amstrad CPC 464\",\"sources\":[{\"t\":\"Amstrad CPC464 Service Manual (1985): circuit diagram p.15-16, main PCB layout p.12-14, electrical parts list p.17\",\"u\":\"https:\/\/archive.org\/details\/Amstrad_CPC464_Service_Manual_1985_Amstrad_Consumer_Electronics\"},{\"t\":\"Amstrad CPC464\/CPC6128 Service Manual Amendment (later 464 board, CPU\/PIO section, two 10-way keyboard connectors)\",\"u\":\"https:\/\/archive.org\/details\/amstrad-cpc-464-cpc-6128-micro-computer-gt-65-green-monitor-ctm-644-color-monito\"},{\"t\":\"Board-Folk CPC464-2MINI v5.3 (KiCad re-creation of the 464 board: CP2\/IC101\/IC102 pad nets)\",\"u\":\"https:\/\/github.com\/Board-Folk\/CPC464-2MINI\"},{\"t\":\"MAME src\/mame\/amstrad\/amstrad.cpp (INPUT_PORTS amstrad_keyboard, kbrow.0-9; gx4000)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/mame\/amstrad\/amstrad.cpp\"},{\"t\":\"CPCWiki: Programming:Keyboard scanning (hardware scancode table)\",\"u\":\"https:\/\/www.cpcwiki.eu\/index.php\/Programming:Keyboard_scanning\"},{\"t\":\"CPCWiki: Connector:Digital joystick\",\"u\":\"https:\/\/www.cpcwiki.eu\/index.php\/Connector:Digital_joystick\"},{\"t\":\"Bread80 CPC_Keyboards (replacement keyboard: matrix schematic, 464\/6128 connector mapping, key positions)\",\"u\":\"https:\/\/github.com\/Bread80\/CPC_Keyboards\"}],\"scan_it\":\"L'8255 PPI IC107 scrive il numero di linea (0-9) in binario su PC0-PC3 (pin 14-17); il decodificatore 74LS145 IC101 (uscite open collector) porta a livello basso una sola delle 10 linee della tastiera. I tasti premuti su quella linea portano a 0 i bit della porta di I\/O A dell'AY-3-8912 IC102 (IOA0-IOA7, pin 14-7, con pull-up), che la CPU legge attraverso l'8255 (porta A collegata al bus dati dell'AY). La porta joystick \u00e8 collegata in parallelo: COMMON alla linea 9, COM2 alla linea 6.\",\"scan_en\":\"The 8255 PPI IC107 writes the line number (0-9) in binary on PC0-PC3 (pins 14-17); the 74LS145 decoder IC101 (open-collector outputs) pulls exactly one of the 10 keyboard lines low. Keys pressed on that line pull the matching bits of the AY-3-8912 IC102 I\/O port A (IOA0-IOA7, pins 14-7, pulled up) to 0, and the CPU reads them through the 8255 (port A wired to the AY data bus). The joystick port is wired in parallel: COMMON to line 9, COM2 to line 6.\",\"lines\":[{\"id\":\"L0\",\"group\":\"col\",\"name\":\"Line 0 (Y1)\",\"chip\":\"IC101\",\"chip_part\":\"74LS145\",\"chip_pin\":\"1\",\"conn_pin\":\"19\",\"also\":\"\"},{\"id\":\"L1\",\"group\":\"col\",\"name\":\"Line 1 (Y2)\",\"chip\":\"IC101\",\"chip_part\":\"74LS145\",\"chip_pin\":\"2\",\"conn_pin\":\"18\",\"also\":\"\"},{\"id\":\"L2\",\"group\":\"col\",\"name\":\"Line 2 (Y3)\",\"chip\":\"IC101\",\"chip_part\":\"74LS145\",\"chip_pin\":\"3\",\"conn_pin\":\"17\",\"also\":\"\"},{\"id\":\"L3\",\"group\":\"col\",\"name\":\"Line 3 (Y4)\",\"chip\":\"IC101\",\"chip_part\":\"74LS145\",\"chip_pin\":\"4\",\"conn_pin\":\"16\",\"also\":\"\"},{\"id\":\"L4\",\"group\":\"col\",\"name\":\"Line 4 (Y5)\",\"chip\":\"IC101\",\"chip_part\":\"74LS145\",\"chip_pin\":\"5\",\"conn_pin\":\"15\",\"also\":\"\"},{\"id\":\"L5\",\"group\":\"col\",\"name\":\"Line 5 (Y6)\",\"chip\":\"IC101\",\"chip_part\":\"74LS145\",\"chip_pin\":\"6\",\"conn_pin\":\"14\",\"also\":\"\"},{\"id\":\"L6\",\"group\":\"col\",\"name\":\"Line 6 (Y7)\",\"chip\":\"IC101\",\"chip_part\":\"74LS145\",\"chip_pin\":\"7\",\"conn_pin\":\"13\",\"also_it\":\"porta joystick J102 pin 9 (COM2, secondo joystick)\",\"also_en\":\"joystick port J102 pin 9 (COM2, second joystick)\"},{\"id\":\"L7\",\"group\":\"col\",\"name\":\"Line 7 (Y8)\",\"chip\":\"IC101\",\"chip_part\":\"74LS145\",\"chip_pin\":\"9\",\"conn_pin\":\"12\",\"also\":\"\"},{\"id\":\"L8\",\"group\":\"col\",\"name\":\"Line 8 (Y9)\",\"chip\":\"IC101\",\"chip_part\":\"74LS145\",\"chip_pin\":\"10\",\"conn_pin\":\"11\",\"also\":\"\"},{\"id\":\"L9\",\"group\":\"col\",\"name\":\"Line 9 (Y10)\",\"chip\":\"IC101\",\"chip_part\":\"74LS145\",\"chip_pin\":\"11\",\"conn_pin\":\"2\",\"also_it\":\"porta joystick J102 pin 8 (COMMON, joystick 1)\",\"also_en\":\"joystick port J102 pin 8 (COMMON, joystick 1)\"},{\"id\":\"IOA0\",\"group\":\"row\",\"name\":\"Bit 0 (X1)\",\"chip\":\"IC102\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"14\",\"conn_pin\":\"3\",\"also_it\":\"porta joystick J102 pin 1 (su)\",\"also_en\":\"joystick port J102 pin 1 (up)\"},{\"id\":\"IOA1\",\"group\":\"row\",\"name\":\"Bit 1 (X2)\",\"chip\":\"IC102\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"13\",\"conn_pin\":\"4\",\"also_it\":\"porta joystick J102 pin 2 (gi\u00f9)\",\"also_en\":\"joystick port J102 pin 2 (down)\"},{\"id\":\"IOA2\",\"group\":\"row\",\"name\":\"Bit 2 (X3)\",\"chip\":\"IC102\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"12\",\"conn_pin\":\"5\",\"also_it\":\"porta joystick J102 pin 3 (sinistra)\",\"also_en\":\"joystick port J102 pin 3 (left)\"},{\"id\":\"IOA3\",\"group\":\"row\",\"name\":\"Bit 3 (X4)\",\"chip\":\"IC102\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"11\",\"conn_pin\":\"6\",\"also_it\":\"porta joystick J102 pin 4 (destra)\",\"also_en\":\"joystick port J102 pin 4 (right)\"},{\"id\":\"IOA4\",\"group\":\"row\",\"name\":\"Bit 4 (X5)\",\"chip\":\"IC102\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"10\",\"conn_pin\":\"7\",\"also_it\":\"porta joystick J102 pin 6 (FIRE 2, pulsante standard)\",\"also_en\":\"joystick port J102 pin 6 (FIRE 2, standard button)\"},{\"id\":\"IOA5\",\"group\":\"row\",\"name\":\"Bit 5 (X6)\",\"chip\":\"IC102\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"9\",\"conn_pin\":\"8\",\"also_it\":\"porta joystick J102 pin 7 (FIRE 1)\",\"also_en\":\"joystick port J102 pin 7 (FIRE 1)\"},{\"id\":\"IOA6\",\"group\":\"row\",\"name\":\"Bit 6 (X7)\",\"chip\":\"IC102\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"8\",\"conn_pin\":\"9\",\"also_it\":\"porta joystick J102 pin 5 (SPARE, fuoco 3)\",\"also_en\":\"joystick port J102 pin 5 (SPARE, fire 3)\"},{\"id\":\"IOA7\",\"group\":\"row\",\"name\":\"Bit 7 (X8)\",\"chip\":\"IC102\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"7\",\"conn_pin\":\"10\",\"also_it\":\"collegato anche al pin 1 del connettore (x9)\",\"also_en\":\"also wired to connector pin 1 (x9)\"},{\"id\":\"PC0\",\"group\":\"extra\",\"name\":\"8255 PC0\",\"chip\":\"IC107\",\"chip_part\":\"8255 PPI\",\"chip_pin\":\"14\",\"conn_pin\":\"\",\"also_it\":\"va all'ingresso A (pin 15) di IC101\",\"also_en\":\"goes to IC101 input A (pin 15)\"},{\"id\":\"PC1\",\"group\":\"extra\",\"name\":\"8255 PC1\",\"chip\":\"IC107\",\"chip_part\":\"8255 PPI\",\"chip_pin\":\"15\",\"conn_pin\":\"\",\"also_it\":\"va all'ingresso B (pin 14) di IC101\",\"also_en\":\"goes to IC101 input B (pin 14)\"},{\"id\":\"PC2\",\"group\":\"extra\",\"name\":\"8255 PC2\",\"chip\":\"IC107\",\"chip_part\":\"8255 PPI\",\"chip_pin\":\"16\",\"conn_pin\":\"\",\"also_it\":\"va all'ingresso C (pin 13) di IC101\",\"also_en\":\"goes to IC101 input C (pin 13)\"},{\"id\":\"PC3\",\"group\":\"extra\",\"name\":\"8255 PC3\",\"chip\":\"IC107\",\"chip_part\":\"8255 PPI\",\"chip_pin\":\"17\",\"conn_pin\":\"\",\"also_it\":\"va all'ingresso D (pin 12) di IC101\",\"also_en\":\"goes to IC101 input D (pin 12)\"}],\"connector\":{\"ref\":\"CP002\",\"it\":\"Connettore tastiera CP002, 20 vie in linea passo 2,5 mm (tastiera a circuito stampato)\",\"en\":\"Keyboard connector CP002, 20-way in-line, 2.5 mm pitch (PCB keyboard)\",\"pins\":[{\"n\":\"1\",\"sig\":\"IOA7\",\"note_it\":\"x9: stessa linea del pin 10; sulla tastiera a circuito stampato il DEL \u00e8 collegato qui\",\"note_en\":\"x9: same line as pin 10; on the PCB keyboard DEL is wired here\"},{\"n\":\"2\",\"sig\":\"L9\",\"note_it\":\"Y10, linea 9 (anche COMMON joystick)\",\"note_en\":\"Y10, line 9 (also joystick COMMON)\"},{\"n\":\"3\",\"sig\":\"IOA0\",\"note_it\":\"x1\",\"note_en\":\"x1\"},{\"n\":\"4\",\"sig\":\"IOA1\",\"note_it\":\"x2\",\"note_en\":\"x2\"},{\"n\":\"5\",\"sig\":\"IOA2\",\"note_it\":\"x3\",\"note_en\":\"x3\"},{\"n\":\"6\",\"sig\":\"IOA3\",\"note_it\":\"x4\",\"note_en\":\"x4\"},{\"n\":\"7\",\"sig\":\"IOA4\",\"note_it\":\"x5\",\"note_en\":\"x5\"},{\"n\":\"8\",\"sig\":\"IOA5\",\"note_it\":\"x6\",\"note_en\":\"x6\"},{\"n\":\"9\",\"sig\":\"IOA6\",\"note_it\":\"x7\",\"note_en\":\"x7\"},{\"n\":\"10\",\"sig\":\"IOA7\",\"note_it\":\"x8\",\"note_en\":\"x8\"},{\"n\":\"11\",\"sig\":\"L8\",\"note_it\":\"Y9\",\"note_en\":\"Y9\"},{\"n\":\"12\",\"sig\":\"L7\",\"note_it\":\"Y8\",\"note_en\":\"Y8\"},{\"n\":\"13\",\"sig\":\"L6\",\"note_it\":\"Y7\",\"note_en\":\"Y7\"},{\"n\":\"14\",\"sig\":\"L5\",\"note_it\":\"Y6\",\"note_en\":\"Y6\"},{\"n\":\"15\",\"sig\":\"L4\",\"note_it\":\"Y5\",\"note_en\":\"Y5\"},{\"n\":\"16\",\"sig\":\"L3\",\"note_it\":\"Y4\",\"note_en\":\"Y4\"},{\"n\":\"17\",\"sig\":\"L2\",\"note_it\":\"Y3\",\"note_en\":\"Y3\"},{\"n\":\"18\",\"sig\":\"L1\",\"note_it\":\"Y2\",\"note_en\":\"Y2\"},{\"n\":\"19\",\"sig\":\"L0\",\"note_it\":\"Y1\",\"note_en\":\"Y1\"},{\"n\":\"20\",\"sig\":\"NC\",\"note_it\":\"non collegato\",\"note_en\":\"not connected\"}]},\"layout\":[{\"id\":\"esc\",\"t\":\"ESC\",\"x\":0,\"y\":2.3,\"w\":1,\"h\":1},{\"id\":\"1\",\"t\":\"1\",\"t2\":\"!\",\"x\":1,\"y\":2.3,\"w\":1,\"h\":1},{\"id\":\"2\",\"t\":\"2\",\"t2\":\"\\\"\",\"x\":2,\"y\":2.3,\"w\":1,\"h\":1},{\"id\":\"3\",\"t\":\"3\",\"t2\":\"#\",\"x\":3,\"y\":2.3,\"w\":1,\"h\":1},{\"id\":\"4\",\"t\":\"4\",\"t2\":\"$\",\"x\":4,\"y\":2.3,\"w\":1,\"h\":1},{\"id\":\"5\",\"t\":\"5\",\"t2\":\"%\",\"x\":5,\"y\":2.3,\"w\":1,\"h\":1},{\"id\":\"6\",\"t\":\"6\",\"t2\":\"&\",\"x\":6,\"y\":2.3,\"w\":1,\"h\":1},{\"id\":\"7\",\"t\":\"7\",\"t2\":\"'\",\"x\":7,\"y\":2.3,\"w\":1,\"h\":1},{\"id\":\"8\",\"t\":\"8\",\"t2\":\"(\",\"x\":8,\"y\":2.3,\"w\":1,\"h\":1},{\"id\":\"9\",\"t\":\"9\",\"t2\":\")\",\"x\":9,\"y\":2.3,\"w\":1,\"h\":1},{\"id\":\"0\",\"t\":\"0\",\"t2\":\"_\",\"x\":10,\"y\":2.3,\"w\":1,\"h\":1},{\"id\":\"minus\",\"t\":\"-\",\"t2\":\"=\",\"x\":11,\"y\":2.3,\"w\":1,\"h\":1},{\"id\":\"caret\",\"t\":\"^\",\"t2\":\"\u00a3\",\"x\":12,\"y\":2.3,\"w\":1,\"h\":1},{\"id\":\"clr\",\"t\":\"CLR\",\"x\":13,\"y\":2.3,\"w\":1,\"h\":1},{\"id\":\"del\",\"t\":\"DEL\",\"x\":14,\"y\":2.3,\"w\":1.5,\"h\":1},{\"id\":\"tab\",\"t\":\"TAB\",\"x\":0,\"y\":3.3,\"w\":1.5,\"h\":1},{\"id\":\"q\",\"t\":\"Q\",\"x\":1.5,\"y\":3.3,\"w\":1,\"h\":1},{\"id\":\"w\",\"t\":\"W\",\"x\":2.5,\"y\":3.3,\"w\":1,\"h\":1},{\"id\":\"e\",\"t\":\"E\",\"x\":3.5,\"y\":3.3,\"w\":1,\"h\":1},{\"id\":\"r\",\"t\":\"R\",\"x\":4.5,\"y\":3.3,\"w\":1,\"h\":1},{\"id\":\"t\",\"t\":\"T\",\"x\":5.5,\"y\":3.3,\"w\":1,\"h\":1},{\"id\":\"y\",\"t\":\"Y\",\"x\":6.5,\"y\":3.3,\"w\":1,\"h\":1},{\"id\":\"u\",\"t\":\"U\",\"x\":7.5,\"y\":3.3,\"w\":1,\"h\":1},{\"id\":\"i\",\"t\":\"I\",\"x\":8.5,\"y\":3.3,\"w\":1,\"h\":1},{\"id\":\"o\",\"t\":\"O\",\"x\":9.5,\"y\":3.3,\"w\":1,\"h\":1},{\"id\":\"p\",\"t\":\"P\",\"x\":10.5,\"y\":3.3,\"w\":1,\"h\":1},{\"id\":\"at\",\"t\":\"@\",\"t2\":\"|\",\"x\":11.5,\"y\":3.3,\"w\":1,\"h\":1},{\"id\":\"lbracket\",\"t\":\"[\",\"t2\":\"{\",\"x\":12.5,\"y\":3.3,\"w\":1,\"h\":1},{\"id\":\"return\",\"t\":\"ENTER\",\"x\":13.75,\"y\":3.3,\"w\":1.75,\"h\":2},{\"id\":\"caps\",\"t\":\"CAPS LOCK\",\"x\":0,\"y\":4.3,\"w\":1.75,\"h\":1},{\"id\":\"a\",\"t\":\"A\",\"x\":1.75,\"y\":4.3,\"w\":1,\"h\":1},{\"id\":\"s\",\"t\":\"S\",\"x\":2.75,\"y\":4.3,\"w\":1,\"h\":1},{\"id\":\"d\",\"t\":\"D\",\"x\":3.75,\"y\":4.3,\"w\":1,\"h\":1},{\"id\":\"f\",\"t\":\"F\",\"x\":4.75,\"y\":4.3,\"w\":1,\"h\":1},{\"id\":\"g\",\"t\":\"G\",\"x\":5.75,\"y\":4.3,\"w\":1,\"h\":1},{\"id\":\"h\",\"t\":\"H\",\"x\":6.75,\"y\":4.3,\"w\":1,\"h\":1},{\"id\":\"j\",\"t\":\"J\",\"x\":7.75,\"y\":4.3,\"w\":1,\"h\":1},{\"id\":\"k\",\"t\":\"K\",\"x\":8.75,\"y\":4.3,\"w\":1,\"h\":1},{\"id\":\"l\",\"t\":\"L\",\"x\":9.75,\"y\":4.3,\"w\":1,\"h\":1},{\"id\":\"colon\",\"t\":\":\",\"t2\":\"*\",\"x\":10.75,\"y\":4.3,\"w\":1,\"h\":1},{\"id\":\"semicolon\",\"t\":\";\",\"t2\":\"+\",\"x\":11.75,\"y\":4.3,\"w\":1,\"h\":1},{\"id\":\"rbracket\",\"t\":\"]\",\"t2\":\"}\",\"x\":12.75,\"y\":4.3,\"w\":1,\"h\":1},{\"id\":\"lshift\",\"t\":\"SHIFT\",\"x\":0,\"y\":5.3,\"w\":2.25,\"h\":1},{\"id\":\"z\",\"t\":\"Z\",\"x\":2.25,\"y\":5.3,\"w\":1,\"h\":1},{\"id\":\"x\",\"t\":\"X\",\"x\":3.25,\"y\":5.3,\"w\":1,\"h\":1},{\"id\":\"c\",\"t\":\"C\",\"x\":4.25,\"y\":5.3,\"w\":1,\"h\":1},{\"id\":\"v\",\"t\":\"V\",\"x\":5.25,\"y\":5.3,\"w\":1,\"h\":1},{\"id\":\"b\",\"t\":\"B\",\"x\":6.25,\"y\":5.3,\"w\":1,\"h\":1},{\"id\":\"n\",\"t\":\"N\",\"x\":7.25,\"y\":5.3,\"w\":1,\"h\":1},{\"id\":\"m\",\"t\":\"M\",\"x\":8.25,\"y\":5.3,\"w\":1,\"h\":1},{\"id\":\"comma\",\"t\":\",\",\"t2\":\"<\",\"x\":9.25,\"y\":5.3,\"w\":1,\"h\":1},{\"id\":\"period\",\"t\":\".\",\"t2\":\">\",\"x\":10.25,\"y\":5.3,\"w\":1,\"h\":1},{\"id\":\"slash\",\"t\":\"\/\",\"t2\":\"?\",\"x\":11.25,\"y\":5.3,\"w\":1,\"h\":1},{\"id\":\"backslash\",\"t\":\"\\\\\",\"t2\":\"`\",\"x\":12.25,\"y\":5.3,\"w\":1,\"h\":1},{\"id\":\"rshift\",\"t\":\"SHIFT\",\"x\":13.25,\"y\":5.3,\"w\":2.25,\"h\":1},{\"id\":\"space\",\"t\":\"SPACE\",\"x\":3.25,\"y\":6.3,\"w\":9,\"h\":1},{\"id\":\"ctrl\",\"t\":\"CTRL\",\"x\":12.25,\"y\":6.3,\"w\":1,\"h\":1},{\"id\":\"up\",\"t\":\"\u2191\",\"x\":17.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"left\",\"t\":\"\u2190\",\"x\":16.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"copy\",\"t\":\"COPY\",\"x\":17.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"right\",\"t\":\"\u2192\",\"x\":18.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"down\",\"t\":\"\u2193\",\"x\":17.5,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"f7\",\"t\":\"f7\",\"x\":16.5,\"y\":3.3,\"w\":1,\"h\":1},{\"id\":\"f8\",\"t\":\"f8\",\"x\":17.5,\"y\":3.3,\"w\":1,\"h\":1},{\"id\":\"f9\",\"t\":\"f9\",\"x\":18.5,\"y\":3.3,\"w\":1,\"h\":1},{\"id\":\"f4\",\"t\":\"f4\",\"x\":16.5,\"y\":4.3,\"w\":1,\"h\":1},{\"id\":\"f5\",\"t\":\"f5\",\"x\":17.5,\"y\":4.3,\"w\":1,\"h\":1},{\"id\":\"f6\",\"t\":\"f6\",\"x\":18.5,\"y\":4.3,\"w\":1,\"h\":1},{\"id\":\"f1\",\"t\":\"f1\",\"x\":16.5,\"y\":5.3,\"w\":1,\"h\":1},{\"id\":\"f2\",\"t\":\"f2\",\"x\":17.5,\"y\":5.3,\"w\":1,\"h\":1},{\"id\":\"f3\",\"t\":\"f3\",\"x\":18.5,\"y\":5.3,\"w\":1,\"h\":1},{\"id\":\"f0\",\"t\":\"f0\",\"x\":16.5,\"y\":6.3,\"w\":1,\"h\":1},{\"id\":\"kdot\",\"t\":\".\",\"x\":17.5,\"y\":6.3,\"w\":1,\"h\":1},{\"id\":\"kenter\",\"t\":\"ENTER\",\"x\":18.5,\"y\":6.3,\"w\":1,\"h\":1}],\"matrix\":{\"up\":[\"L0\",\"IOA0\"],\"right\":[\"L0\",\"IOA1\"],\"down\":[\"L0\",\"IOA2\"],\"f9\":[\"L0\",\"IOA3\"],\"f6\":[\"L0\",\"IOA4\"],\"f3\":[\"L0\",\"IOA5\"],\"kenter\":[\"L0\",\"IOA6\"],\"kdot\":[\"L0\",\"IOA7\"],\"left\":[\"L1\",\"IOA0\"],\"copy\":[\"L1\",\"IOA1\"],\"f7\":[\"L1\",\"IOA2\"],\"f8\":[\"L1\",\"IOA3\"],\"f5\":[\"L1\",\"IOA4\"],\"f1\":[\"L1\",\"IOA5\"],\"f2\":[\"L1\",\"IOA6\"],\"f0\":[\"L1\",\"IOA7\"],\"clr\":[\"L2\",\"IOA0\"],\"lbracket\":[\"L2\",\"IOA1\"],\"return\":[\"L2\",\"IOA2\"],\"rbracket\":[\"L2\",\"IOA3\"],\"f4\":[\"L2\",\"IOA4\"],\"lshift\":[\"L2\",\"IOA5\"],\"backslash\":[\"L2\",\"IOA6\"],\"ctrl\":[\"L2\",\"IOA7\"],\"caret\":[\"L3\",\"IOA0\"],\"minus\":[\"L3\",\"IOA1\"],\"at\":[\"L3\",\"IOA2\"],\"p\":[\"L3\",\"IOA3\"],\"semicolon\":[\"L3\",\"IOA4\"],\"colon\":[\"L3\",\"IOA5\"],\"slash\":[\"L3\",\"IOA6\"],\"period\":[\"L3\",\"IOA7\"],\"0\":[\"L4\",\"IOA0\"],\"9\":[\"L4\",\"IOA1\"],\"o\":[\"L4\",\"IOA2\"],\"i\":[\"L4\",\"IOA3\"],\"l\":[\"L4\",\"IOA4\"],\"k\":[\"L4\",\"IOA5\"],\"m\":[\"L4\",\"IOA6\"],\"comma\":[\"L4\",\"IOA7\"],\"8\":[\"L5\",\"IOA0\"],\"7\":[\"L5\",\"IOA1\"],\"u\":[\"L5\",\"IOA2\"],\"y\":[\"L5\",\"IOA3\"],\"h\":[\"L5\",\"IOA4\"],\"j\":[\"L5\",\"IOA5\"],\"n\":[\"L5\",\"IOA6\"],\"space\":[\"L5\",\"IOA7\"],\"6\":[\"L6\",\"IOA0\"],\"5\":[\"L6\",\"IOA1\"],\"r\":[\"L6\",\"IOA2\"],\"t\":[\"L6\",\"IOA3\"],\"g\":[\"L6\",\"IOA4\"],\"f\":[\"L6\",\"IOA5\"],\"b\":[\"L6\",\"IOA6\"],\"v\":[\"L6\",\"IOA7\"],\"4\":[\"L7\",\"IOA0\"],\"3\":[\"L7\",\"IOA1\"],\"e\":[\"L7\",\"IOA2\"],\"w\":[\"L7\",\"IOA3\"],\"s\":[\"L7\",\"IOA4\"],\"d\":[\"L7\",\"IOA5\"],\"c\":[\"L7\",\"IOA6\"],\"x\":[\"L7\",\"IOA7\"],\"1\":[\"L8\",\"IOA0\"],\"2\":[\"L8\",\"IOA1\"],\"esc\":[\"L8\",\"IOA2\"],\"q\":[\"L8\",\"IOA3\"],\"tab\":[\"L8\",\"IOA4\"],\"a\":[\"L8\",\"IOA5\"],\"caps\":[\"L8\",\"IOA6\"],\"z\":[\"L8\",\"IOA7\"],\"del\":[\"L9\",\"IOA7\"],\"rshift\":[\"L2\",\"IOA5\"]},\"special\":{\"rshift\":{\"lines\":[\"L2\",\"IOA5\"],\"it\":\"I due tasti SHIFT sono collegati in parallelo sulla stessa intersezione della matrice (linea 2, bit 5): il computer non distingue lo SHIFT destro dal sinistro.\",\"en\":\"Both SHIFT keys are wired in parallel on the same matrix crossing (line 2, bit 5): the computer cannot tell right SHIFT from left SHIFT.\"}},\"notes_it\":[\"Le linee 9 e 6 sono condivise con la porta joystick J102 (COMMON = linea 9, COM2 = linea 6) e i bit IOA0-IOA6 con le direzioni e i pulsanti: un joystick difettoso o un pulsante in corto si presenta come un tasto premuto da solo (per esempio un fuoco in corto sulla linea 6 fa comparire G o F).\",\"Se non funziona un'intera linea (8 tasti dello stesso gruppo), controllare la relativa uscita del 74LS145 e la pista fino al connettore; se non funziona un intero bit (un tasto per ogni linea), controllare il pin IOA dell'AY-3-8912 e la sua pista; se non va nessun tasto, sospettare 8255 (PC0-PC3), 74LS145 o AY.\",\"La matrice non ha diodi: premendo tre tasti ai vertici di un rettangolo compare un quarto tasto fantasma (keyboard clash). Non \u00e8 un guasto.\",\"Viene segnalato che alcuni AY-3-8912A di ricambio non hanno i pull-up interni sulla porta A: dopo la sostituzione dell'AY, se i tasti non rispondono o danno letture casuali, aggiungere pull-up (rete 8 x 2,2 k\u03a9 - 10 k\u03a9 verso +5 V su IOA0-IOA7), come fa la scheda 6128 \\\"cost-down\\\" con NR102.\",\"Sul connettore CP002 il bit 7 (IOA7) arriva su due pin, 1 (x9) e 10 (x8), uniti sulla scheda madre: sulla tastiera a circuito stampato il DEL usa il pin 1. Se non va solo il DEL, controllare il pin 1 oltre al pin 2 (linea 9).\",\"Le schede 464 successive (con ROM 40009 e Gate Array 40010, vedi Service Manual Amendment) usano una tastiera a membrana con due connettori da 10 vie CP002 e CP003: i numeri di pin di questa pagina NON valgono per quelle schede; i pin dei chip (74LS145, AY-3-8912, 8255) restano gli stessi.\",\"Disposizione: tastiera UK. Non esiste una versione italiana; le versioni spagnola (CPC 472 \/ 464 con \u00d1), francese (AZERTY), tedesca (Schneider, QWERTZ) e danese cambiano le scritte sui tasti, ma ogni posizione fisica resta sulla stessa intersezione della matrice.\"],\"notes_en\":[\"Lines 9 and 6 are shared with joystick port J102 (COMMON = line 9, COM2 = line 6) and bits IOA0-IOA6 with the directions and buttons: a faulty joystick or a shorted button shows up as a key that presses itself (e.g. a fire button shorted on line 6 produces G or F).\",\"If a whole line is dead (8 keys of one group), check that 74LS145 output and the track to the connector; if a whole bit is dead (one key on every line), check the AY-3-8912 IOA pin and its track; if no key works at all, suspect the 8255 (PC0-PC3), the 74LS145 or the AY.\",\"The matrix has no diodes: pressing three keys at the corners of a rectangle makes a fourth, ghost key appear (keyboard clash). This is not a fault.\",\"Some replacement AY-3-8912A parts are reported to lack the internal pull-ups on port A: after replacing the AY, if keys are dead or read randomly, add pull-ups (8 x 2.2 k\u03a9 - 10 k\u03a9 network to +5 V on IOA0-IOA7), as the 6128 \\\"cost-down\\\" board does with NR102.\",\"On connector CP002 bit 7 (IOA7) appears on two pins, 1 (x9) and 10 (x8), joined on the main board: on the PCB keyboard DEL uses pin 1. If only DEL is dead, check pin 1 as well as pin 2 (line 9).\",\"Later 464 boards (ROM 40009 and Gate Array 40010, see the Service Manual Amendment) use a membrane keyboard with two 10-way connectors CP002 and CP003: the pin numbers on this page do NOT apply to those boards; the chip pins (74LS145, AY-3-8912, 8255) stay the same.\",\"Layout: UK keyboard. There is no Italian version; the Spanish (CPC 472 \/ 464 with \u00d1), French (AZERTY), German (Schneider, QWERTZ) and Danish versions change the key legends, but each physical key position stays on the same matrix crossing.\"],\"board_it\":\"prima scheda madre del CPC 464 con un solo connettore tastiera in linea a 20 vie CP002, come nel manuale di servizio Amstrad del 1985 (IC101 74LS145, IC102 AY-3-8912, IC107 M5L8255AP-5)\",\"board_en\":\"early CPC 464 main board with a single 20-way in-line keyboard connector CP002, as in the 1985 Amstrad service manual (IC101 74LS145, IC102 AY-3-8912, IC107 M5L8255AP-5)\"},\"cpc6128\":{\"id\":\"cpc6128\",\"name\":\"Amstrad CPC 6128\",\"sources\":[{\"t\":\"Amstrad CPC6128 Service Manual: CPU circuit diagram p.19-20 (PCB MC0009A), main PCB Z70210 p.16-17, parts list\",\"u\":\"https:\/\/archive.org\/details\/lost_manuals_Amstrad--CPC6128--service--ID1594\"},{\"t\":\"Amstrad CPC464\/CPC6128 Service Manual Amendment: CPC6128 PIO\/Sound section p.22 (CP101\/CP102 10-way pinout, 'two keyboard connectors, care with orientation')\",\"u\":\"https:\/\/archive.org\/details\/amstrad-cpc-464-cpc-6128-micro-computer-gt-65-green-monitor-ctm-644-color-monito\"},{\"t\":\"MAME src\/mame\/amstrad\/amstrad.cpp (INPUT_PORTS amstrad_keyboard, kbrow.0-9; gx4000)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/mame\/amstrad\/amstrad.cpp\"},{\"t\":\"CPCWiki: Programming:Keyboard scanning (hardware scancode table)\",\"u\":\"https:\/\/www.cpcwiki.eu\/index.php\/Programming:Keyboard_scanning\"},{\"t\":\"CPCWiki: Connector:Digital joystick\",\"u\":\"https:\/\/www.cpcwiki.eu\/index.php\/Connector:Digital_joystick\"},{\"t\":\"Bread80 CPC_Keyboards (replacement keyboard: matrix schematic, 464\/6128 connector mapping, key positions)\",\"u\":\"https:\/\/github.com\/Bread80\/CPC_Keyboards\"}],\"scan_it\":\"L'8255 PPI IC107 scrive il numero di linea (0-9) in binario su PC0-PC3 (pin 14-17); il decodificatore 74LS145 IC101 (uscite open collector) porta a livello basso una sola delle 10 linee della tastiera. I tasti premuti su quella linea portano a 0 i bit della porta di I\/O A dell'AY-3-8912 IC102 (IOA0-IOA7, pin 14-7, con pull-up), che la CPU legge attraverso l'8255 (porta A collegata al bus dati dell'AY). La porta joystick \u00e8 collegata in parallelo: COMMON alla linea 9, COM2 alla linea 6.\",\"scan_en\":\"The 8255 PPI IC107 writes the line number (0-9) in binary on PC0-PC3 (pins 14-17); the 74LS145 decoder IC101 (open-collector outputs) pulls exactly one of the 10 keyboard lines low. Keys pressed on that line pull the matching bits of the AY-3-8912 IC102 I\/O port A (IOA0-IOA7, pins 14-7, pulled up) to 0, and the CPU reads them through the 8255 (port A wired to the AY data bus). The joystick port is wired in parallel: COMMON to line 9, COM2 to line 6.\",\"lines\":[{\"id\":\"L0\",\"group\":\"col\",\"name\":\"Line 0 (Y1)\",\"chip\":\"IC101\",\"chip_part\":\"74LS145\",\"chip_pin\":\"1\",\"conn_pin\":\"1\",\"also_it\":\"connettore CP102 pin 1\",\"also_en\":\"connector CP102 pin 1\"},{\"id\":\"L1\",\"group\":\"col\",\"name\":\"Line 1 (Y2)\",\"chip\":\"IC101\",\"chip_part\":\"74LS145\",\"chip_pin\":\"2\",\"conn_pin\":\"2\",\"also_it\":\"connettore CP102 pin 2\",\"also_en\":\"connector CP102 pin 2\"},{\"id\":\"L2\",\"group\":\"col\",\"name\":\"Line 2 (Y3)\",\"chip\":\"IC101\",\"chip_part\":\"74LS145\",\"chip_pin\":\"3\",\"conn_pin\":\"3\",\"also_it\":\"connettore CP102 pin 3\",\"also_en\":\"connector CP102 pin 3\"},{\"id\":\"L3\",\"group\":\"col\",\"name\":\"Line 3 (Y4)\",\"chip\":\"IC101\",\"chip_part\":\"74LS145\",\"chip_pin\":\"4\",\"conn_pin\":\"4\",\"also_it\":\"connettore CP102 pin 4\",\"also_en\":\"connector CP102 pin 4\"},{\"id\":\"L4\",\"group\":\"col\",\"name\":\"Line 4 (Y5)\",\"chip\":\"IC101\",\"chip_part\":\"74LS145\",\"chip_pin\":\"5\",\"conn_pin\":\"5\",\"also_it\":\"connettore CP102 pin 5\",\"also_en\":\"connector CP102 pin 5\"},{\"id\":\"L5\",\"group\":\"col\",\"name\":\"Line 5 (Y6)\",\"chip\":\"IC101\",\"chip_part\":\"74LS145\",\"chip_pin\":\"6\",\"conn_pin\":\"6\",\"also_it\":\"connettore CP102 pin 6\",\"also_en\":\"connector CP102 pin 6\"},{\"id\":\"L6\",\"group\":\"col\",\"name\":\"Line 6 (Y7)\",\"chip\":\"IC101\",\"chip_part\":\"74LS145\",\"chip_pin\":\"7\",\"conn_pin\":\"7\",\"also_it\":\"CP102 pin 7, porta joystick J102 pin 9 (COM2)\",\"also_en\":\"CP102 pin 7, joystick port J102 pin 9 (COM2)\"},{\"id\":\"L7\",\"group\":\"col\",\"name\":\"Line 7 (Y8)\",\"chip\":\"IC101\",\"chip_part\":\"74LS145\",\"chip_pin\":\"9\",\"conn_pin\":\"8\",\"also_it\":\"connettore CP102 pin 8\",\"also_en\":\"connector CP102 pin 8\"},{\"id\":\"L8\",\"group\":\"col\",\"name\":\"Line 8 (Y9)\",\"chip\":\"IC101\",\"chip_part\":\"74LS145\",\"chip_pin\":\"10\",\"conn_pin\":\"9\",\"also_it\":\"connettore CP102 pin 9\",\"also_en\":\"connector CP102 pin 9\"},{\"id\":\"L9\",\"group\":\"col\",\"name\":\"Line 9 (Y10)\",\"chip\":\"IC101\",\"chip_part\":\"74LS145\",\"chip_pin\":\"11\",\"conn_pin\":\"10\",\"also_it\":\"CP102 pin 10, porta joystick J102 pin 8 (COMMON)\",\"also_en\":\"CP102 pin 10, joystick port J102 pin 8 (COMMON)\"},{\"id\":\"IOA0\",\"group\":\"row\",\"name\":\"Bit 0 (X1)\",\"chip\":\"IC102\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"14\",\"conn_pin\":\"2\",\"also_it\":\"CP101 pin 2, porta joystick J102 pin 1 (su)\",\"also_en\":\"CP101 pin 2, joystick port J102 pin 1 (up)\"},{\"id\":\"IOA1\",\"group\":\"row\",\"name\":\"Bit 1 (X2)\",\"chip\":\"IC102\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"13\",\"conn_pin\":\"3\",\"also_it\":\"CP101 pin 3, porta joystick J102 pin 2 (gi\u00f9)\",\"also_en\":\"CP101 pin 3, joystick port J102 pin 2 (down)\"},{\"id\":\"IOA2\",\"group\":\"row\",\"name\":\"Bit 2 (X3)\",\"chip\":\"IC102\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"12\",\"conn_pin\":\"4\",\"also_it\":\"CP101 pin 4, porta joystick J102 pin 3 (sinistra)\",\"also_en\":\"CP101 pin 4, joystick port J102 pin 3 (left)\"},{\"id\":\"IOA3\",\"group\":\"row\",\"name\":\"Bit 3 (X4)\",\"chip\":\"IC102\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"11\",\"conn_pin\":\"5\",\"also_it\":\"CP101 pin 5, porta joystick J102 pin 4 (destra)\",\"also_en\":\"CP101 pin 5, joystick port J102 pin 4 (right)\"},{\"id\":\"IOA4\",\"group\":\"row\",\"name\":\"Bit 4 (X5)\",\"chip\":\"IC102\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"10\",\"conn_pin\":\"6\",\"also_it\":\"CP101 pin 6, porta joystick J102 pin 6 (FIRE 2, pulsante standard)\",\"also_en\":\"CP101 pin 6, joystick port J102 pin 6 (FIRE 2, standard button)\"},{\"id\":\"IOA5\",\"group\":\"row\",\"name\":\"Bit 5 (X6)\",\"chip\":\"IC102\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"9\",\"conn_pin\":\"7\",\"also_it\":\"CP101 pin 7, porta joystick J102 pin 7 (FIRE 1)\",\"also_en\":\"CP101 pin 7, joystick port J102 pin 7 (FIRE 1)\"},{\"id\":\"IOA6\",\"group\":\"row\",\"name\":\"Bit 6 (X7)\",\"chip\":\"IC102\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"8\",\"conn_pin\":\"8\",\"also_it\":\"CP101 pin 8, porta joystick J102 pin 5 (SPARE, fuoco 3)\",\"also_en\":\"CP101 pin 8, joystick port J102 pin 5 (SPARE, fire 3)\"},{\"id\":\"IOA7\",\"group\":\"row\",\"name\":\"Bit 7 (X8)\",\"chip\":\"IC102\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"7\",\"conn_pin\":\"9\",\"also_it\":\"connettore CP101 pin 9\",\"also_en\":\"connector CP101 pin 9\"},{\"id\":\"PC0\",\"group\":\"extra\",\"name\":\"8255 PC0\",\"chip\":\"IC107\",\"chip_part\":\"8255 PPI\",\"chip_pin\":\"14\",\"conn_pin\":\"\",\"also_it\":\"va all'ingresso A (pin 15) di IC101\",\"also_en\":\"goes to IC101 input A (pin 15)\"},{\"id\":\"PC1\",\"group\":\"extra\",\"name\":\"8255 PC1\",\"chip\":\"IC107\",\"chip_part\":\"8255 PPI\",\"chip_pin\":\"15\",\"conn_pin\":\"\",\"also_it\":\"va all'ingresso B (pin 14) di IC101\",\"also_en\":\"goes to IC101 input B (pin 14)\"},{\"id\":\"PC2\",\"group\":\"extra\",\"name\":\"8255 PC2\",\"chip\":\"IC107\",\"chip_part\":\"8255 PPI\",\"chip_pin\":\"16\",\"conn_pin\":\"\",\"also_it\":\"va all'ingresso C (pin 13) di IC101\",\"also_en\":\"goes to IC101 input C (pin 13)\"},{\"id\":\"PC3\",\"group\":\"extra\",\"name\":\"8255 PC3\",\"chip\":\"IC107\",\"chip_part\":\"8255 PPI\",\"chip_pin\":\"17\",\"conn_pin\":\"\",\"also_it\":\"va all'ingresso D (pin 12) di IC101\",\"also_en\":\"goes to IC101 input D (pin 12)\"}],\"connectors\":[{\"ref\":\"CP101\",\"it\":\"Connettore tastiera CP101, 10 vie (coda della membrana: bit X1-X8 verso l'AY)\",\"en\":\"Keyboard connector CP101, 10-way (membrane tail: bits X1-X8 to the AY)\",\"pins\":[{\"n\":\"1\",\"sig\":\"NC\",\"note_it\":\"non collegato\",\"note_en\":\"not connected\"},{\"n\":\"2\",\"sig\":\"IOA0\",\"note_it\":\"X1\",\"note_en\":\"X1\"},{\"n\":\"3\",\"sig\":\"IOA1\",\"note_it\":\"X2\",\"note_en\":\"X2\"},{\"n\":\"4\",\"sig\":\"IOA2\",\"note_it\":\"X3\",\"note_en\":\"X3\"},{\"n\":\"5\",\"sig\":\"IOA3\",\"note_it\":\"X4\",\"note_en\":\"X4\"},{\"n\":\"6\",\"sig\":\"IOA4\",\"note_it\":\"X5\",\"note_en\":\"X5\"},{\"n\":\"7\",\"sig\":\"IOA5\",\"note_it\":\"X6\",\"note_en\":\"X6\"},{\"n\":\"8\",\"sig\":\"IOA6\",\"note_it\":\"X7\",\"note_en\":\"X7\"},{\"n\":\"9\",\"sig\":\"IOA7\",\"note_it\":\"X8\",\"note_en\":\"X8\"},{\"n\":\"10\",\"sig\":\"NC\",\"note_it\":\"non collegato\",\"note_en\":\"not connected\"}]},{\"ref\":\"CP102\",\"it\":\"Connettore tastiera CP102, 10 vie (coda della membrana: linee Y1-Y10 dal 74LS145)\",\"en\":\"Keyboard connector CP102, 10-way (membrane tail: lines Y1-Y10 from the 74LS145)\",\"pins\":[{\"n\":\"1\",\"sig\":\"L0\",\"note_it\":\"Y1\",\"note_en\":\"Y1\"},{\"n\":\"2\",\"sig\":\"L1\",\"note_it\":\"Y2\",\"note_en\":\"Y2\"},{\"n\":\"3\",\"sig\":\"L2\",\"note_it\":\"Y3\",\"note_en\":\"Y3\"},{\"n\":\"4\",\"sig\":\"L3\",\"note_it\":\"Y4\",\"note_en\":\"Y4\"},{\"n\":\"5\",\"sig\":\"L4\",\"note_it\":\"Y5\",\"note_en\":\"Y5\"},{\"n\":\"6\",\"sig\":\"L5\",\"note_it\":\"Y6\",\"note_en\":\"Y6\"},{\"n\":\"7\",\"sig\":\"L6\",\"note_it\":\"Y7\",\"note_en\":\"Y7\"},{\"n\":\"8\",\"sig\":\"L7\",\"note_it\":\"Y8\",\"note_en\":\"Y8\"},{\"n\":\"9\",\"sig\":\"L8\",\"note_it\":\"Y9\",\"note_en\":\"Y9\"},{\"n\":\"10\",\"sig\":\"L9\",\"note_it\":\"Y10\",\"note_en\":\"Y10\"}]}],\"layout\":[{\"id\":\"esc\",\"t\":\"ESC\",\"x\":0,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"1\",\"t\":\"1\",\"t2\":\"!\",\"x\":1,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"2\",\"t\":\"2\",\"t2\":\"\\\"\",\"x\":2,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"3\",\"t\":\"3\",\"t2\":\"#\",\"x\":3,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"4\",\"t\":\"4\",\"t2\":\"$\",\"x\":4,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"5\",\"t\":\"5\",\"t2\":\"%\",\"x\":5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"6\",\"t\":\"6\",\"t2\":\"&\",\"x\":6,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"7\",\"t\":\"7\",\"t2\":\"'\",\"x\":7,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"8\",\"t\":\"8\",\"t2\":\"(\",\"x\":8,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"9\",\"t\":\"9\",\"t2\":\")\",\"x\":9,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"0\",\"t\":\"0\",\"t2\":\"_\",\"x\":10,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"minus\",\"t\":\"-\",\"t2\":\"=\",\"x\":11,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"caret\",\"t\":\"^\",\"t2\":\"\u00a3\",\"x\":12,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"clr\",\"t\":\"CLR\",\"x\":13,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"del\",\"t\":\"DEL\",\"x\":14,\"y\":0,\"w\":1.5,\"h\":1},{\"id\":\"tab\",\"t\":\"TAB\",\"x\":0,\"y\":1,\"w\":1.5,\"h\":1},{\"id\":\"q\",\"t\":\"Q\",\"x\":1.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"w\",\"t\":\"W\",\"x\":2.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"e\",\"t\":\"E\",\"x\":3.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"r\",\"t\":\"R\",\"x\":4.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"t\",\"t\":\"T\",\"x\":5.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"y\",\"t\":\"Y\",\"x\":6.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"u\",\"t\":\"U\",\"x\":7.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"i\",\"t\":\"I\",\"x\":8.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"o\",\"t\":\"O\",\"x\":9.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"p\",\"t\":\"P\",\"x\":10.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"at\",\"t\":\"@\",\"t2\":\"|\",\"x\":11.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"lbracket\",\"t\":\"[\",\"t2\":\"{\",\"x\":12.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"return\",\"t\":\"RETURN\",\"x\":13.75,\"y\":1,\"w\":1.75,\"h\":2},{\"id\":\"caps\",\"t\":\"CAPS LOCK\",\"x\":0,\"y\":2,\"w\":1.75,\"h\":1},{\"id\":\"a\",\"t\":\"A\",\"x\":1.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"s\",\"t\":\"S\",\"x\":2.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"d\",\"t\":\"D\",\"x\":3.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"f\",\"t\":\"F\",\"x\":4.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"g\",\"t\":\"G\",\"x\":5.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"h\",\"t\":\"H\",\"x\":6.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"j\",\"t\":\"J\",\"x\":7.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"k\",\"t\":\"K\",\"x\":8.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"l\",\"t\":\"L\",\"x\":9.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"colon\",\"t\":\":\",\"t2\":\"*\",\"x\":10.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"semicolon\",\"t\":\";\",\"t2\":\"+\",\"x\":11.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"rbracket\",\"t\":\"]\",\"t2\":\"}\",\"x\":12.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"lshift\",\"t\":\"SHIFT\",\"x\":0,\"y\":3,\"w\":2.25,\"h\":1},{\"id\":\"z\",\"t\":\"Z\",\"x\":2.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"x\",\"t\":\"X\",\"x\":3.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"c\",\"t\":\"C\",\"x\":4.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"v\",\"t\":\"V\",\"x\":5.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"b\",\"t\":\"B\",\"x\":6.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"n\",\"t\":\"N\",\"x\":7.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"m\",\"t\":\"M\",\"x\":8.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"comma\",\"t\":\",\",\"t2\":\"<\",\"x\":9.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"period\",\"t\":\".\",\"t2\":\">\",\"x\":10.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"slash\",\"t\":\"\/\",\"t2\":\"?\",\"x\":11.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"backslash\",\"t\":\"\\\\\",\"t2\":\"`\",\"x\":12.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"rshift\",\"t\":\"SHIFT\",\"x\":13.25,\"y\":3,\"w\":2.25,\"h\":1},{\"id\":\"ctrl\",\"t\":\"CONTROL\",\"x\":0,\"y\":4,\"w\":2.25,\"h\":1},{\"id\":\"copy\",\"t\":\"COPY\",\"x\":2.25,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"space\",\"t\":\"SPACE\",\"x\":3.25,\"y\":4,\"w\":9,\"h\":1},{\"id\":\"kenter\",\"t\":\"ENTER\",\"x\":12.25,\"y\":4,\"w\":3.25,\"h\":1},{\"id\":\"f7\",\"t\":\"f7\",\"x\":16,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"f8\",\"t\":\"f8\",\"x\":17,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"f9\",\"t\":\"f9\",\"x\":18,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"f4\",\"t\":\"f4\",\"x\":16,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"f5\",\"t\":\"f5\",\"x\":17,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"f6\",\"t\":\"f6\",\"x\":18,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"f1\",\"t\":\"f1\",\"x\":16,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"f2\",\"t\":\"f2\",\"x\":17,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"f3\",\"t\":\"f3\",\"x\":18,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"f0\",\"t\":\"f0\",\"x\":16,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"up\",\"t\":\"\u2191\",\"x\":17,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"kdot\",\"t\":\".\",\"x\":18,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"left\",\"t\":\"\u2190\",\"x\":16,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"down\",\"t\":\"\u2193\",\"x\":17,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"right\",\"t\":\"\u2192\",\"x\":18,\"y\":4,\"w\":1,\"h\":1}],\"matrix\":{\"up\":[\"L0\",\"IOA0\"],\"right\":[\"L0\",\"IOA1\"],\"down\":[\"L0\",\"IOA2\"],\"f9\":[\"L0\",\"IOA3\"],\"f6\":[\"L0\",\"IOA4\"],\"f3\":[\"L0\",\"IOA5\"],\"kenter\":[\"L0\",\"IOA6\"],\"kdot\":[\"L0\",\"IOA7\"],\"left\":[\"L1\",\"IOA0\"],\"copy\":[\"L1\",\"IOA1\"],\"f7\":[\"L1\",\"IOA2\"],\"f8\":[\"L1\",\"IOA3\"],\"f5\":[\"L1\",\"IOA4\"],\"f1\":[\"L1\",\"IOA5\"],\"f2\":[\"L1\",\"IOA6\"],\"f0\":[\"L1\",\"IOA7\"],\"clr\":[\"L2\",\"IOA0\"],\"lbracket\":[\"L2\",\"IOA1\"],\"return\":[\"L2\",\"IOA2\"],\"rbracket\":[\"L2\",\"IOA3\"],\"f4\":[\"L2\",\"IOA4\"],\"lshift\":[\"L2\",\"IOA5\"],\"backslash\":[\"L2\",\"IOA6\"],\"ctrl\":[\"L2\",\"IOA7\"],\"caret\":[\"L3\",\"IOA0\"],\"minus\":[\"L3\",\"IOA1\"],\"at\":[\"L3\",\"IOA2\"],\"p\":[\"L3\",\"IOA3\"],\"semicolon\":[\"L3\",\"IOA4\"],\"colon\":[\"L3\",\"IOA5\"],\"slash\":[\"L3\",\"IOA6\"],\"period\":[\"L3\",\"IOA7\"],\"0\":[\"L4\",\"IOA0\"],\"9\":[\"L4\",\"IOA1\"],\"o\":[\"L4\",\"IOA2\"],\"i\":[\"L4\",\"IOA3\"],\"l\":[\"L4\",\"IOA4\"],\"k\":[\"L4\",\"IOA5\"],\"m\":[\"L4\",\"IOA6\"],\"comma\":[\"L4\",\"IOA7\"],\"8\":[\"L5\",\"IOA0\"],\"7\":[\"L5\",\"IOA1\"],\"u\":[\"L5\",\"IOA2\"],\"y\":[\"L5\",\"IOA3\"],\"h\":[\"L5\",\"IOA4\"],\"j\":[\"L5\",\"IOA5\"],\"n\":[\"L5\",\"IOA6\"],\"space\":[\"L5\",\"IOA7\"],\"6\":[\"L6\",\"IOA0\"],\"5\":[\"L6\",\"IOA1\"],\"r\":[\"L6\",\"IOA2\"],\"t\":[\"L6\",\"IOA3\"],\"g\":[\"L6\",\"IOA4\"],\"f\":[\"L6\",\"IOA5\"],\"b\":[\"L6\",\"IOA6\"],\"v\":[\"L6\",\"IOA7\"],\"4\":[\"L7\",\"IOA0\"],\"3\":[\"L7\",\"IOA1\"],\"e\":[\"L7\",\"IOA2\"],\"w\":[\"L7\",\"IOA3\"],\"s\":[\"L7\",\"IOA4\"],\"d\":[\"L7\",\"IOA5\"],\"c\":[\"L7\",\"IOA6\"],\"x\":[\"L7\",\"IOA7\"],\"1\":[\"L8\",\"IOA0\"],\"2\":[\"L8\",\"IOA1\"],\"esc\":[\"L8\",\"IOA2\"],\"q\":[\"L8\",\"IOA3\"],\"tab\":[\"L8\",\"IOA4\"],\"a\":[\"L8\",\"IOA5\"],\"caps\":[\"L8\",\"IOA6\"],\"z\":[\"L8\",\"IOA7\"],\"del\":[\"L9\",\"IOA7\"],\"rshift\":[\"L2\",\"IOA5\"]},\"special\":{\"rshift\":{\"lines\":[\"L2\",\"IOA5\"],\"it\":\"I due tasti SHIFT sono collegati in parallelo sulla stessa intersezione della matrice (linea 2, bit 5): il computer non distingue lo SHIFT destro dal sinistro.\",\"en\":\"Both SHIFT keys are wired in parallel on the same matrix crossing (line 2, bit 5): the computer cannot tell right SHIFT from left SHIFT.\"}},\"notes_it\":[\"Le linee 9 e 6 sono condivise con la porta joystick J102 (COMMON = linea 9, COM2 = linea 6) e i bit IOA0-IOA6 con le direzioni e i pulsanti: un joystick difettoso o un pulsante in corto si presenta come un tasto premuto da solo (per esempio un fuoco in corto sulla linea 6 fa comparire G o F).\",\"Se non funziona un'intera linea (8 tasti dello stesso gruppo), controllare la relativa uscita del 74LS145 e la pista fino al connettore; se non funziona un intero bit (un tasto per ogni linea), controllare il pin IOA dell'AY-3-8912 e la sua pista; se non va nessun tasto, sospettare 8255 (PC0-PC3), 74LS145 o AY.\",\"La matrice non ha diodi: premendo tre tasti ai vertici di un rettangolo compare un quarto tasto fantasma (keyboard clash). Non \u00e8 un guasto.\",\"Viene segnalato che alcuni AY-3-8912A di ricambio non hanno i pull-up interni sulla porta A: dopo la sostituzione dell'AY, se i tasti non rispondono o danno letture casuali, aggiungere pull-up (rete 8 x 2,2 k\u03a9 - 10 k\u03a9 verso +5 V su IOA0-IOA7), come fa la scheda 6128 \\\"cost-down\\\" con NR102.\",\"La tastiera \u00e8 a membrana (due fogli) con due code piatte che entrano nei connettori CP101 e CP102 a 10 vie; Amstrad avverte di fare attenzione al verso d'inserimento. Una coda inserita al contrario o con i contatti ossidati d\u00e0 gruppi interi di tasti muti: pulire i contatti delle code prima di sospettare i chip.\",\"Sulla scheda 6128 \\\"cost-down\\\" (ASIC 40226, Service Manual Amendment) cambiano le sigle: 8255 = IC102, AY-3-8912 = IC103, 74LS145 = IC104, con rete di pull-up NR102 2,2 k\u03a9 x 8 su IOA0-IOA7. I pin dei chip e dei connettori CP101\/CP102 sono gli stessi.\",\"Disposizione: tastiera UK. Non esiste una versione italiana; le versioni spagnola, francese (AZERTY), tedesca (Schneider, QWERTZ) e danese cambiano solo le scritte: ogni posizione fisica resta sulla stessa intersezione della matrice.\"],\"notes_en\":[\"Lines 9 and 6 are shared with joystick port J102 (COMMON = line 9, COM2 = line 6) and bits IOA0-IOA6 with the directions and buttons: a faulty joystick or a shorted button shows up as a key that presses itself (e.g. a fire button shorted on line 6 produces G or F).\",\"If a whole line is dead (8 keys of one group), check that 74LS145 output and the track to the connector; if a whole bit is dead (one key on every line), check the AY-3-8912 IOA pin and its track; if no key works at all, suspect the 8255 (PC0-PC3), the 74LS145 or the AY.\",\"The matrix has no diodes: pressing three keys at the corners of a rectangle makes a fourth, ghost key appear (keyboard clash). This is not a fault.\",\"Some replacement AY-3-8912A parts are reported to lack the internal pull-ups on port A: after replacing the AY, if keys are dead or read randomly, add pull-ups (8 x 2.2 k\u03a9 - 10 k\u03a9 network to +5 V on IOA0-IOA7), as the 6128 \\\"cost-down\\\" board does with NR102.\",\"The keyboard is a membrane (two foils) with two flat tails plugging into the 10-way connectors CP101 and CP102; Amstrad warns to take care with their orientation. A tail fitted the wrong way round or with oxidised contacts gives whole groups of dead keys: clean the tail contacts before suspecting the chips.\",\"On the 6128 \\\"cost-down\\\" board (ASIC 40226, Service Manual Amendment) the references change: 8255 = IC102, AY-3-8912 = IC103, 74LS145 = IC104, with pull-up network NR102 2.2 k\u03a9 x 8 on IOA0-IOA7. The chip pins and the CP101\/CP102 pins are the same.\",\"Layout: UK keyboard. There is no Italian version; the Spanish, French (AZERTY), German (Schneider, QWERTZ) and Danish versions only change the legends: each physical key position stays on the same matrix crossing.\"],\"board_it\":\"scheda Z70210 (serigrafia MC0009A), come nel manuale di servizio Amstrad del CPC 6128 (IC101 74LS145, IC102 AY-3-8912, IC107 M5L8255AP-5, connettori tastiera CP101\/CP102)\",\"board_en\":\"Z70210 board (silkscreen MC0009A), as in the Amstrad CPC 6128 service manual (IC101 74LS145, IC102 AY-3-8912, IC107 M5L8255AP-5, keyboard connectors CP101\/CP102)\"},\"creativision\":{\"id\":\"creativision\",\"name\":\"VTech CreatiVision\",\"sources\":[{\"t\":\"VTech schematic 65-0159-01 sheet 3 (PIA and audio), Madrigal Design CreatiVision datasheets cv03\",\"u\":\"http:\/\/www.madrigaldesign.it\/creativemu\/datasheets.php\"},{\"t\":\"MAME src\/mame\/vtech\/crvision.cpp (INPUT_PORTS crvision, pia_pa_w, pia_pb_r, read_keyboard)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/mame\/vtech\/crvision.cpp\"},{\"t\":\"DigicoolThings CreatiVisionController src\/main.c (controller pin and key-switch mapping)\",\"u\":\"https:\/\/github.com\/DigicoolThings\/CreatiVisionController\"},{\"t\":\"DigicoolThings CreatiVisionMechanicalKeyboard (48-key layout)\",\"u\":\"https:\/\/github.com\/DigicoolThings\/CreatiVisionMechanicalKeyboard\"},{\"t\":\"kernelcrash.com: Recreating the Funvision (controller port order, diodes)\",\"u\":\"https:\/\/www.kernelcrash.com\/blog\/recreating-the-funvision\/2016\/01\/06\/\"}],\"scan_it\":\"Il PIA 6821 U21 usa PA0-PA3 come strobe (uscite, una alla volta a livello basso): PA0 joystick e fuoco del controller sinistro, PA1 tastiera sinistra, PA2 joystick e fuoco del controller destro, PA3 tastiera destra. PB0-PB7 sono ingressi con pull-up da 3,3 k\u03a9 (R19-R26) e arrivano a ciascuna presa attraverso un diodo 1N4148. Ogni tasto chiude lo strobe verso due linee PB, che si leggono a 0 insieme; CNT'L, SHIFT, -, \u2192, fuoco e joystick chiudono una linea sola. Le stesse PB servono anche da bus dati verso il SN76489.\",\"scan_en\":\"The 6821 PIA U21 uses PA0-PA3 as strobes (outputs, pulled low one at a time): PA0 left controller joystick and fire, PA1 left keypad, PA2 right controller joystick and fire, PA3 right keypad. PB0-PB7 are inputs with 3.3 k\u03a9 pull-ups (R19-R26) and reach each socket through a 1N4148 diode. Each key connects the strobe to two PB lines, which read 0 together; CNT'L, SHIFT, -, \u2192, fire and joystick close a single line. The same PB lines are also the data bus to the SN76489.\",\"lines\":[{\"id\":\"PA0\",\"group\":\"col\",\"name\":\"PA0 (sx)\",\"chip\":\"U21\",\"chip_part\":\"6821 PIA\",\"chip_pin\":\"2\",\"conn\":\"J2\",\"conn_pin\":\"2\",\"also_it\":\"strobe controller sinistro: joystick, fuoco, tasti 1 e CNT'L\",\"also_en\":\"left controller strobe: joystick, fire, keys 1 and CNT'L\"},{\"id\":\"PA1\",\"group\":\"col\",\"name\":\"PA1 (sx)\",\"chip\":\"U21\",\"chip_part\":\"6821 PIA\",\"chip_pin\":\"3\",\"conn\":\"J2\",\"conn_pin\":\"1\",\"also_it\":\"strobe tastiera sinistra (2-6, Q-T, \u2190, A-G, SHIFT, Z-B)\",\"also_en\":\"left keypad strobe (2-6, Q-T, \u2190, A-G, SHIFT, Z-B)\"},{\"id\":\"PA2\",\"group\":\"col\",\"name\":\"PA2 (dx)\",\"chip\":\"U21\",\"chip_part\":\"6821 PIA\",\"chip_pin\":\"4\",\"conn\":\"J1\",\"conn_pin\":\"10\",\"also_it\":\"strobe controller destro: joystick, fuoco, SPACE e \u2192\",\"also_en\":\"right controller strobe: joystick, fire, SPACE and \u2192\"},{\"id\":\"PA3\",\"group\":\"col\",\"name\":\"PA3 (dx)\",\"chip\":\"U21\",\"chip_part\":\"6821 PIA\",\"chip_pin\":\"5\",\"conn\":\"J1\",\"conn_pin\":\"9\",\"also_it\":\"strobe tastiera destra (7-0, :, -, Y-P, RET'N, H-L, ;, N-\/)\",\"also_en\":\"right keypad strobe (7-0, :, -, Y-P, RET'N, H-L, ;, N-\/)\"},{\"id\":\"PB0L\",\"group\":\"row\",\"name\":\"PB0 (sx)\",\"chip\":\"U21\",\"chip_part\":\"6821 PIA\",\"chip_pin\":\"10\",\"conn\":\"J2\",\"conn_pin\":\"3\",\"also_it\":\"diodo D16, pull-up R19 3,3 k\u03a9; PB0 va anche al dato D7 del SN76489 U22 (pin 10)\",\"also_en\":\"diode D16, pull-up R19 3.3 k\u03a9; PB0 also goes to SN76489 U22 data D7 (pin 10)\"},{\"id\":\"PB1L\",\"group\":\"row\",\"name\":\"PB1 (sx)\",\"chip\":\"U21\",\"chip_part\":\"6821 PIA\",\"chip_pin\":\"11\",\"conn\":\"J2\",\"conn_pin\":\"4\",\"also_it\":\"diodo D15, pull-up R20 3,3 k\u03a9; PB1 va anche al dato D6 del SN76489 U22 (pin 11)\",\"also_en\":\"diode D15, pull-up R20 3.3 k\u03a9; PB1 also goes to SN76489 U22 data D6 (pin 11)\"},{\"id\":\"PB2L\",\"group\":\"row\",\"name\":\"PB2 (sx)\",\"chip\":\"U21\",\"chip_part\":\"6821 PIA\",\"chip_pin\":\"12\",\"conn\":\"J2\",\"conn_pin\":\"5\",\"also_it\":\"diodo D14, pull-up R21 3,3 k\u03a9; PB2 va anche al dato D5 del SN76489 U22 (pin 12)\",\"also_en\":\"diode D14, pull-up R21 3.3 k\u03a9; PB2 also goes to SN76489 U22 data D5 (pin 12)\"},{\"id\":\"PB3L\",\"group\":\"row\",\"name\":\"PB3 (sx)\",\"chip\":\"U21\",\"chip_part\":\"6821 PIA\",\"chip_pin\":\"13\",\"conn\":\"J2\",\"conn_pin\":\"6\",\"also_it\":\"diodo D13, pull-up R26 3,3 k\u03a9; PB3 va anche al dato D4 del SN76489 U22 (pin 13)\",\"also_en\":\"diode D13, pull-up R26 3.3 k\u03a9; PB3 also goes to SN76489 U22 data D4 (pin 13)\"},{\"id\":\"PB4L\",\"group\":\"row\",\"name\":\"PB4 (sx)\",\"chip\":\"U21\",\"chip_part\":\"6821 PIA\",\"chip_pin\":\"14\",\"conn\":\"J2\",\"conn_pin\":\"7\",\"also_it\":\"diodo D12, pull-up R25 3,3 k\u03a9; PB4 va anche al dato D3 del SN76489 U22 (pin 15)\",\"also_en\":\"diode D12, pull-up R25 3.3 k\u03a9; PB4 also goes to SN76489 U22 data D3 (pin 15)\"},{\"id\":\"PB5L\",\"group\":\"row\",\"name\":\"PB5 (sx)\",\"chip\":\"U21\",\"chip_part\":\"6821 PIA\",\"chip_pin\":\"15\",\"conn\":\"J2\",\"conn_pin\":\"10\",\"also_it\":\"diodo D9, pull-up R24 3,3 k\u03a9; PB5 va anche al dato D2 del SN76489 U22 (pin 1)\",\"also_en\":\"diode D9, pull-up R24 3.3 k\u03a9; PB5 also goes to SN76489 U22 data D2 (pin 1)\"},{\"id\":\"PB6L\",\"group\":\"row\",\"name\":\"PB6 (sx)\",\"chip\":\"U21\",\"chip_part\":\"6821 PIA\",\"chip_pin\":\"16\",\"conn\":\"J2\",\"conn_pin\":\"9\",\"also_it\":\"diodo D10, pull-up R23 3,3 k\u03a9; PB6 va anche al dato D1 del SN76489 U22 (pin 2)\",\"also_en\":\"diode D10, pull-up R23 3.3 k\u03a9; PB6 also goes to SN76489 U22 data D1 (pin 2)\"},{\"id\":\"PB7L\",\"group\":\"row\",\"name\":\"PB7 (sx)\",\"chip\":\"U21\",\"chip_part\":\"6821 PIA\",\"chip_pin\":\"17\",\"conn\":\"J2\",\"conn_pin\":\"8\",\"also_it\":\"diodo D11, pull-up R22 3,3 k\u03a9; PB7 va anche al dato D0 del SN76489 U22 (pin 3)\",\"also_en\":\"diode D11, pull-up R22 3.3 k\u03a9; PB7 also goes to SN76489 U22 data D0 (pin 3)\"},{\"id\":\"PB0R\",\"group\":\"row\",\"name\":\"PB0 (dx)\",\"chip\":\"U21\",\"chip_part\":\"6821 PIA\",\"chip_pin\":\"10\",\"conn\":\"J1\",\"conn_pin\":\"3\",\"also_it\":\"diodo D3, pull-up R19 3,3 k\u03a9; PB0 va anche al dato D7 del SN76489 U22 (pin 10)\",\"also_en\":\"diode D3, pull-up R19 3.3 k\u03a9; PB0 also goes to SN76489 U22 data D7 (pin 10)\"},{\"id\":\"PB1R\",\"group\":\"row\",\"name\":\"PB1 (dx)\",\"chip\":\"U21\",\"chip_part\":\"6821 PIA\",\"chip_pin\":\"11\",\"conn\":\"J1\",\"conn_pin\":\"2\",\"also_it\":\"diodo D2, pull-up R20 3,3 k\u03a9; PB1 va anche al dato D6 del SN76489 U22 (pin 11)\",\"also_en\":\"diode D2, pull-up R20 3.3 k\u03a9; PB1 also goes to SN76489 U22 data D6 (pin 11)\"},{\"id\":\"PB2R\",\"group\":\"row\",\"name\":\"PB2 (dx)\",\"chip\":\"U21\",\"chip_part\":\"6821 PIA\",\"chip_pin\":\"12\",\"conn\":\"J1\",\"conn_pin\":\"1\",\"also_it\":\"diodo D1, pull-up R21 3,3 k\u03a9; PB2 va anche al dato D5 del SN76489 U22 (pin 12)\",\"also_en\":\"diode D1, pull-up R21 3.3 k\u03a9; PB2 also goes to SN76489 U22 data D5 (pin 12)\"},{\"id\":\"PB3R\",\"group\":\"row\",\"name\":\"PB3 (dx)\",\"chip\":\"U21\",\"chip_part\":\"6821 PIA\",\"chip_pin\":\"13\",\"conn\":\"J1\",\"conn_pin\":\"4\",\"also_it\":\"diodo D4, pull-up R26 3,3 k\u03a9; PB3 va anche al dato D4 del SN76489 U22 (pin 13)\",\"also_en\":\"diode D4, pull-up R26 3.3 k\u03a9; PB3 also goes to SN76489 U22 data D4 (pin 13)\"},{\"id\":\"PB4R\",\"group\":\"row\",\"name\":\"PB4 (dx)\",\"chip\":\"U21\",\"chip_part\":\"6821 PIA\",\"chip_pin\":\"14\",\"conn\":\"J1\",\"conn_pin\":\"5\",\"also_it\":\"diodo D5, pull-up R25 3,3 k\u03a9; PB4 va anche al dato D3 del SN76489 U22 (pin 15)\",\"also_en\":\"diode D5, pull-up R25 3.3 k\u03a9; PB4 also goes to SN76489 U22 data D3 (pin 15)\"},{\"id\":\"PB5R\",\"group\":\"row\",\"name\":\"PB5 (dx)\",\"chip\":\"U21\",\"chip_part\":\"6821 PIA\",\"chip_pin\":\"15\",\"conn\":\"J1\",\"conn_pin\":\"6\",\"also_it\":\"diodo D6, pull-up R24 3,3 k\u03a9; PB5 va anche al dato D2 del SN76489 U22 (pin 1)\",\"also_en\":\"diode D6, pull-up R24 3.3 k\u03a9; PB5 also goes to SN76489 U22 data D2 (pin 1)\"},{\"id\":\"PB6R\",\"group\":\"row\",\"name\":\"PB6 (dx)\",\"chip\":\"U21\",\"chip_part\":\"6821 PIA\",\"chip_pin\":\"16\",\"conn\":\"J1\",\"conn_pin\":\"7\",\"also_it\":\"diodo D7, pull-up R23 3,3 k\u03a9; PB6 va anche al dato D1 del SN76489 U22 (pin 2)\",\"also_en\":\"diode D7, pull-up R23 3.3 k\u03a9; PB6 also goes to SN76489 U22 data D1 (pin 2)\"},{\"id\":\"PB7R\",\"group\":\"row\",\"name\":\"PB7 (dx)\",\"chip\":\"U21\",\"chip_part\":\"6821 PIA\",\"chip_pin\":\"17\",\"conn\":\"J1\",\"conn_pin\":\"8\",\"also_it\":\"diodo D8, pull-up R22 3,3 k\u03a9; PB7 va anche al dato D0 del SN76489 U22 (pin 3)\",\"also_en\":\"diode D8, pull-up R22 3.3 k\u03a9; PB7 also goes to SN76489 U22 data D0 (pin 3)\"}],\"connectors\":[{\"ref\":\"J2\",\"it\":\"J2, presa controller sinistro (10 pin, nessuna massa n\u00e9 +5V)\",\"en\":\"J2, left controller socket (10 pins, no ground or +5V)\",\"pins\":[{\"n\":\"1\",\"sig\":\"PA1\",\"note_it\":\"diretto al PIA, senza diodo\",\"note_en\":\"straight to the PIA, no diode\"},{\"n\":\"2\",\"sig\":\"PA0\",\"note_it\":\"diretto al PIA, senza diodo\",\"note_en\":\"straight to the PIA, no diode\"},{\"n\":\"3\",\"sig\":\"PB0L\",\"note_it\":\"PB0 dopo il diodo D16\",\"note_en\":\"PB0 after diode D16\"},{\"n\":\"4\",\"sig\":\"PB1L\",\"note_it\":\"PB1 dopo il diodo D15\",\"note_en\":\"PB1 after diode D15\"},{\"n\":\"5\",\"sig\":\"PB2L\",\"note_it\":\"PB2 dopo il diodo D14\",\"note_en\":\"PB2 after diode D14\"},{\"n\":\"6\",\"sig\":\"PB3L\",\"note_it\":\"PB3 dopo il diodo D13\",\"note_en\":\"PB3 after diode D13\"},{\"n\":\"7\",\"sig\":\"PB4L\",\"note_it\":\"PB4 dopo il diodo D12\",\"note_en\":\"PB4 after diode D12\"},{\"n\":\"8\",\"sig\":\"PB7L\",\"note_it\":\"PB7 dopo il diodo D11\",\"note_en\":\"PB7 after diode D11\"},{\"n\":\"9\",\"sig\":\"PB6L\",\"note_it\":\"PB6 dopo il diodo D10\",\"note_en\":\"PB6 after diode D10\"},{\"n\":\"10\",\"sig\":\"PB5L\",\"note_it\":\"PB5 dopo il diodo D9\",\"note_en\":\"PB5 after diode D9\"}]},{\"ref\":\"J1\",\"it\":\"J1, presa controller destro (10 pin, nessuna massa n\u00e9 +5V)\",\"en\":\"J1, right controller socket (10 pins, no ground or +5V)\",\"pins\":[{\"n\":\"1\",\"sig\":\"PB2R\",\"note_it\":\"PB2 dopo il diodo D1\",\"note_en\":\"PB2 after diode D1\"},{\"n\":\"2\",\"sig\":\"PB1R\",\"note_it\":\"PB1 dopo il diodo D2\",\"note_en\":\"PB1 after diode D2\"},{\"n\":\"3\",\"sig\":\"PB0R\",\"note_it\":\"PB0 dopo il diodo D3\",\"note_en\":\"PB0 after diode D3\"},{\"n\":\"4\",\"sig\":\"PB3R\",\"note_it\":\"PB3 dopo il diodo D4\",\"note_en\":\"PB3 after diode D4\"},{\"n\":\"5\",\"sig\":\"PB4R\",\"note_it\":\"PB4 dopo il diodo D5\",\"note_en\":\"PB4 after diode D5\"},{\"n\":\"6\",\"sig\":\"PB5R\",\"note_it\":\"PB5 dopo il diodo D6\",\"note_en\":\"PB5 after diode D6\"},{\"n\":\"7\",\"sig\":\"PB6R\",\"note_it\":\"PB6 dopo il diodo D7\",\"note_en\":\"PB6 after diode D7\"},{\"n\":\"8\",\"sig\":\"PB7R\",\"note_it\":\"PB7 dopo il diodo D8\",\"note_en\":\"PB7 after diode D8\"},{\"n\":\"9\",\"sig\":\"PA3\",\"note_it\":\"diretto al PIA, senza diodo\",\"note_en\":\"straight to the PIA, no diode\"},{\"n\":\"10\",\"sig\":\"PA2\",\"note_it\":\"diretto al PIA, senza diodo\",\"note_en\":\"straight to the PIA, no diode\"}]}],\"layout\":[{\"id\":\"1\",\"t\":\"1\",\"x\":0,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"2\",\"t\":\"2\",\"t2\":\"\\\"\",\"x\":1,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"3\",\"t\":\"3\",\"t2\":\"#\",\"x\":2,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"4\",\"t\":\"4\",\"t2\":\"$\",\"x\":3,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"5\",\"t\":\"5\",\"t2\":\"%\",\"x\":4,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"6\",\"t\":\"6\",\"t2\":\"&\",\"x\":5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"cntl\",\"t\":\"CNT'L\",\"x\":0,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"q\",\"t\":\"Q\",\"x\":1,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"w\",\"t\":\"W\",\"x\":2,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"e\",\"t\":\"E\",\"x\":3,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"r\",\"t\":\"R\",\"x\":4,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"t\",\"t\":\"T\",\"x\":5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"left\",\"t\":\"\u2190\",\"x\":0,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"a\",\"t\":\"A\",\"x\":1,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"s\",\"t\":\"S\",\"x\":2,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"d\",\"t\":\"D\",\"x\":3,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"f\",\"t\":\"F\",\"x\":4,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"g\",\"t\":\"G\",\"x\":5,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"shift\",\"t\":\"SHIFT\",\"x\":0,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"z\",\"t\":\"Z\",\"x\":1,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"x\",\"t\":\"X\",\"x\":2,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"c\",\"t\":\"C\",\"x\":3,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"v\",\"t\":\"V\",\"x\":4,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"b\",\"t\":\"B\",\"x\":5,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"7\",\"t\":\"7\",\"t2\":\"'\",\"x\":7,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"8\",\"t\":\"8\",\"t2\":\"(\",\"x\":8,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"9\",\"t\":\"9\",\"t2\":\")\",\"x\":9,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"0\",\"t\":\"0\",\"t2\":\"@\",\"x\":10,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"colon\",\"t\":\":\",\"t2\":\"*\",\"x\":11,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"minus\",\"t\":\"-\",\"t2\":\"=\",\"x\":12,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"y\",\"t\":\"Y\",\"x\":7,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"u\",\"t\":\"U\",\"x\":8,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"i\",\"t\":\"I\",\"x\":9,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"o\",\"t\":\"O\",\"x\":10,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"p\",\"t\":\"P\",\"x\":11,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"retn\",\"t\":\"RET'N\",\"x\":12,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"h\",\"t\":\"H\",\"x\":7,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"j\",\"t\":\"J\",\"x\":8,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"k\",\"t\":\"K\",\"x\":9,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"l\",\"t\":\"L\",\"x\":10,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"semicolon\",\"t\":\";\",\"t2\":\"+\",\"x\":11,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"right\",\"t\":\"\u2192\",\"x\":12,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"n\",\"t\":\"N\",\"x\":7,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"m\",\"t\":\"M\",\"x\":8,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"comma\",\"t\":\",\",\"t2\":\"<\",\"x\":9,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"period\",\"t\":\".\",\"t2\":\">\",\"x\":10,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"slash\",\"t\":\"\/\",\"t2\":\"?\",\"x\":11,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"space\",\"t\":\"SPACE\",\"x\":12,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"jlul\",\"t\":\"\u2196\",\"x\":1.5,\"y\":5,\"w\":1,\"h\":1},{\"id\":\"jlup\",\"t\":\"\u2191\",\"x\":2.5,\"y\":5,\"w\":1,\"h\":1},{\"id\":\"jlur\",\"t\":\"\u2197\",\"x\":3.5,\"y\":5,\"w\":1,\"h\":1},{\"id\":\"jlleft\",\"t\":\"\u2190\",\"x\":1.5,\"y\":6,\"w\":1,\"h\":1},{\"id\":\"jlright\",\"t\":\"\u2192\",\"x\":3.5,\"y\":6,\"w\":1,\"h\":1},{\"id\":\"jldl\",\"t\":\"\u2199\",\"x\":1.5,\"y\":7,\"w\":1,\"h\":1},{\"id\":\"jldown\",\"t\":\"\u2193\",\"x\":2.5,\"y\":7,\"w\":1,\"h\":1},{\"id\":\"jldr\",\"t\":\"\u2198\",\"x\":3.5,\"y\":7,\"w\":1,\"h\":1},{\"id\":\"fl1\",\"t\":\"FIRE\",\"t2\":\"1\",\"x\":0,\"y\":6,\"w\":1.25,\"h\":1},{\"id\":\"fl2\",\"t\":\"FIRE\",\"t2\":\"2\",\"x\":4.75,\"y\":6,\"w\":1.25,\"h\":1},{\"id\":\"jrul\",\"t\":\"\u2196\",\"x\":8.5,\"y\":5,\"w\":1,\"h\":1},{\"id\":\"jrup\",\"t\":\"\u2191\",\"x\":9.5,\"y\":5,\"w\":1,\"h\":1},{\"id\":\"jrur\",\"t\":\"\u2197\",\"x\":10.5,\"y\":5,\"w\":1,\"h\":1},{\"id\":\"jrleft\",\"t\":\"\u2190\",\"x\":8.5,\"y\":6,\"w\":1,\"h\":1},{\"id\":\"jrright\",\"t\":\"\u2192\",\"x\":10.5,\"y\":6,\"w\":1,\"h\":1},{\"id\":\"jrdl\",\"t\":\"\u2199\",\"x\":8.5,\"y\":7,\"w\":1,\"h\":1},{\"id\":\"jrdown\",\"t\":\"\u2193\",\"x\":9.5,\"y\":7,\"w\":1,\"h\":1},{\"id\":\"jrdr\",\"t\":\"\u2198\",\"x\":10.5,\"y\":7,\"w\":1,\"h\":1},{\"id\":\"fr1\",\"t\":\"FIRE\",\"t2\":\"1\",\"x\":7,\"y\":6,\"w\":1.25,\"h\":1},{\"id\":\"fr2\",\"t\":\"FIRE\",\"t2\":\"2\",\"x\":11.75,\"y\":6,\"w\":1.25,\"h\":1}],\"matrix\":{\"2\":[\"PA1\",\"PB4L\",\"PB5L\"],\"3\":[\"PA1\",\"PB5L\",\"PB6L\"],\"4\":[\"PA1\",\"PB3L\",\"PB5L\"],\"5\":[\"PA1\",\"PB3L\",\"PB6L\"],\"6\":[\"PA1\",\"PB4L\",\"PB6L\"],\"q\":[\"PA1\",\"PB3L\",\"PB4L\"],\"w\":[\"PA1\",\"PB2L\",\"PB3L\"],\"e\":[\"PA1\",\"PB2L\",\"PB4L\"],\"r\":[\"PA1\",\"PB2L\",\"PB5L\"],\"t\":[\"PA1\",\"PB2L\",\"PB6L\"],\"left\":[\"PA1\",\"PB0L\",\"PB3L\"],\"a\":[\"PA1\",\"PB0L\",\"PB4L\"],\"s\":[\"PA1\",\"PB0L\",\"PB5L\"],\"d\":[\"PA1\",\"PB0L\",\"PB6L\"],\"f\":[\"PA1\",\"PB0L\",\"PB1L\"],\"g\":[\"PA1\",\"PB0L\",\"PB2L\"],\"z\":[\"PA1\",\"PB1L\",\"PB3L\"],\"x\":[\"PA1\",\"PB1L\",\"PB4L\"],\"c\":[\"PA1\",\"PB1L\",\"PB5L\"],\"v\":[\"PA1\",\"PB1L\",\"PB6L\"],\"b\":[\"PA1\",\"PB1L\",\"PB2L\"],\"1\":[\"PA0\",\"PB2L\",\"PB3L\"],\"cntl\":[\"PA0\",\"PB7L\"],\"shift\":[\"PA1\",\"PB7L\"],\"7\":[\"PA3\",\"PB1R\",\"PB2R\"],\"8\":[\"PA3\",\"PB1R\",\"PB6R\"],\"9\":[\"PA3\",\"PB1R\",\"PB5R\"],\"0\":[\"PA3\",\"PB1R\",\"PB4R\"],\"colon\":[\"PA3\",\"PB1R\",\"PB3R\"],\"y\":[\"PA3\",\"PB0R\",\"PB2R\"],\"u\":[\"PA3\",\"PB0R\",\"PB1R\"],\"i\":[\"PA3\",\"PB0R\",\"PB6R\"],\"o\":[\"PA3\",\"PB0R\",\"PB5R\"],\"p\":[\"PA3\",\"PB0R\",\"PB4R\"],\"retn\":[\"PA3\",\"PB0R\",\"PB3R\"],\"h\":[\"PA3\",\"PB2R\",\"PB6R\"],\"j\":[\"PA3\",\"PB2R\",\"PB5R\"],\"k\":[\"PA3\",\"PB2R\",\"PB4R\"],\"l\":[\"PA3\",\"PB2R\",\"PB3R\"],\"semicolon\":[\"PA3\",\"PB3R\",\"PB4R\"],\"n\":[\"PA3\",\"PB4R\",\"PB6R\"],\"m\":[\"PA3\",\"PB3R\",\"PB6R\"],\"comma\":[\"PA3\",\"PB3R\",\"PB5R\"],\"period\":[\"PA3\",\"PB5R\",\"PB6R\"],\"slash\":[\"PA3\",\"PB4R\",\"PB5R\"],\"space\":[\"PA2\",\"PB2R\",\"PB3R\"],\"minus\":[\"PA3\",\"PB7R\"],\"right\":[\"PA2\",\"PB7R\"],\"jlup\":[\"PA0\",\"PB3L\"],\"jldown\":[\"PA0\",\"PB1L\"],\"jlleft\":[\"PA0\",\"PB5L\"],\"jlright\":[\"PA0\",\"PB2L\"],\"jlul\":[\"PA0\",\"PB4L\"],\"jlur\":[\"PA0\",\"PB6L\"],\"jldl\":[\"PA0\",\"PB6L\"],\"jldr\":[\"PA0\",\"PB0L\"],\"jrup\":[\"PA2\",\"PB3R\"],\"jrdown\":[\"PA2\",\"PB1R\"],\"jrleft\":[\"PA2\",\"PB5R\"],\"jrright\":[\"PA2\",\"PB2R\"],\"jrul\":[\"PA2\",\"PB4R\"],\"jrur\":[\"PA2\",\"PB6R\"],\"jrdl\":[\"PA2\",\"PB6R\"],\"jrdr\":[\"PA2\",\"PB0R\"],\"fl1\":[\"PA0\",\"PB7L\"],\"fl2\":[\"PA1\",\"PB7L\"],\"fr1\":[\"PA2\",\"PB7R\"],\"fr2\":[\"PA3\",\"PB7R\"]},\"special\":{\"fl1\":{\"lines\":[\"PA0\",\"PB7L\"],\"it\":\"Pulsante di fuoco collegato in parallelo al tasto CNT'L (PA0\/PB7): se il pulsante resta premuto o \u00e8 in corto, il computer vede anche CNT'L sempre premuto.\",\"en\":\"Fire button wired in parallel with the CNT'L key (PA0\/PB7): if the button sticks or is shorted, the computer also sees CNT'L held down.\"},\"fl2\":{\"lines\":[\"PA1\",\"PB7L\"],\"it\":\"Pulsante di fuoco collegato in parallelo al tasto SHIFT (PA1\/PB7): se il pulsante resta premuto o \u00e8 in corto, il computer vede anche SHIFT sempre premuto.\",\"en\":\"Fire button wired in parallel with the SHIFT key (PA1\/PB7): if the button sticks or is shorted, the computer also sees SHIFT held down.\"},\"fr1\":{\"lines\":[\"PA2\",\"PB7R\"],\"it\":\"Pulsante di fuoco collegato in parallelo al tasto \u2192 (PA2\/PB7): se il pulsante resta premuto o \u00e8 in corto, il computer vede anche \u2192 sempre premuto.\",\"en\":\"Fire button wired in parallel with the \u2192 key (PA2\/PB7): if the button sticks or is shorted, the computer also sees \u2192 held down.\"},\"fr2\":{\"lines\":[\"PA3\",\"PB7R\"],\"it\":\"Pulsante di fuoco collegato in parallelo al tasto - (PA3\/PB7): se il pulsante resta premuto o \u00e8 in corto, il computer vede anche - sempre premuto.\",\"en\":\"Fire button wired in parallel with the - key (PA3\/PB7): if the button sticks or is shorted, the computer also sees - held down.\"},\"jlur\":{\"lines\":[\"PA0\",\"PB6L\"],\"it\":\"Contatto diagonale: la posizione su-destra e quella gi\u00f9-sinistra usano la stessa linea extra (PA0\/PB6); secondo MAME la direzione si distingue dal contatto cardinale chiuso insieme (\u2192 o \u2190).\",\"en\":\"Diagonal contact: up-right and down-left use the same extra line (PA0\/PB6); according to MAME the direction is told apart by the cardinal contact closed with it (\u2192 or \u2190).\"},\"jldl\":{\"lines\":[\"PA0\",\"PB6L\"],\"it\":\"Contatto diagonale: la posizione su-destra e quella gi\u00f9-sinistra usano la stessa linea extra (PA0\/PB6); secondo MAME la direzione si distingue dal contatto cardinale chiuso insieme (\u2192 o \u2190).\",\"en\":\"Diagonal contact: up-right and down-left use the same extra line (PA0\/PB6); according to MAME the direction is told apart by the cardinal contact closed with it (\u2192 or \u2190).\"},\"jrur\":{\"lines\":[\"PA2\",\"PB6R\"],\"it\":\"Contatto diagonale: la posizione su-destra e quella gi\u00f9-sinistra usano la stessa linea extra (PA2\/PB6); secondo MAME la direzione si distingue dal contatto cardinale chiuso insieme (\u2192 o \u2190).\",\"en\":\"Diagonal contact: up-right and down-left use the same extra line (PA2\/PB6); according to MAME the direction is told apart by the cardinal contact closed with it (\u2192 or \u2190).\"},\"jrdl\":{\"lines\":[\"PA2\",\"PB6R\"],\"it\":\"Contatto diagonale: la posizione su-destra e quella gi\u00f9-sinistra usano la stessa linea extra (PA2\/PB6); secondo MAME la direzione si distingue dal contatto cardinale chiuso insieme (\u2192 o \u2190).\",\"en\":\"Diagonal contact: up-right and down-left use the same extra line (PA2\/PB6); according to MAME the direction is told apart by the cardinal contact closed with it (\u2192 or \u2190).\"}},\"notes_it\":[\"I due controller sono uguali: joystick a disco con due pulsanti di fuoco e 24 tasti in gomma. Infilati nella console, il sinistro (presa J2, strobe PA0\/PA1) e il destro (presa J1, strobe PA2\/PA3) formano la tastiera da 48 tasti. La tastiera separata opzionale ha gli stessi 48 tasti con gli stessi codici: non aggiunge tasti e non \u00e8 disegnata.\",\"Ogni tasto delle due tastiere \u00e8 a doppio contatto: chiude lo strobe PA verso DUE linee PB insieme (per esempio Q = PA1 con PB3 e PB4). Per questo nella mappa ogni tasto mostra tre linee. Solo CNT'L, SHIFT, -, \u2192, i pulsanti di fuoco e i contatti del joystick chiudono una sola linea PB (PB7 per tasti modificatori e fuoco).\",\"Le linee PB0-PB7 sono comuni ai due controller ma separate da un diodo per presa (D9-D16 per J2, D1-D8 per J1): un diodo interrotto fa sparire un gruppo di tasti di un solo controller, una linea PB del PIA guasta li fa sparire su entrambi.\",\"PB0-PB7 sono anche il bus dati del generatore sonoro SN76489 U22 (in ordine inverso: PB0 = D7 ... PB7 = D0). Una linea PB in corto o un tasto bloccato pu\u00f2 quindi disturbare anche l'audio, e un U22 guasto pu\u00f2 caricare le linee della tastiera.\",\"Un tasto che 'non va' ma fa apparire un altro carattere \u00e8 tipico di uno dei due contatti sporco: per esempio Q (PB3+PB4) con il solo contatto PB3 chiuso d\u00e0 un codice sbagliato o nessun carattere. Pulire la gomma conduttiva e la membrana del controller prima di sospettare la console.\",\"Il tasto 1 \u00e8 sullo strobe del joystick (PA0) con PB2+PB3, cio\u00e8 le stesse linee di joystick destra + su; SPACE fa lo stesso sul controller destro (PA2).\"],\"notes_en\":[\"The two controllers are identical: a disc joystick with two fire buttons and 24 rubber keys. Slotted into the console, the left one (socket J2, strobes PA0\/PA1) and the right one (socket J1, strobes PA2\/PA3) form the 48-key keyboard. The optional separate keyboard has the same 48 keys with the same codes: it adds no keys and is not drawn.\",\"Every keypad key is double-contact: it connects the PA strobe to TWO PB lines at once (for example Q = PA1 with PB3 and PB4). That is why each key shows three lines here. Only CNT'L, SHIFT, -, \u2192, the fire buttons and the joystick contacts close a single PB line (PB7 for the modifier keys and fire).\",\"Lines PB0-PB7 are shared by both controllers but separated by one diode per socket (D9-D16 for J2, D1-D8 for J1): an open diode kills a group of keys on one controller only, a faulty PB line on the PIA kills them on both.\",\"PB0-PB7 are also the data bus of the SN76489 sound generator U22 (in reverse order: PB0 = D7 ... PB7 = D0). A shorted PB line or a stuck key can therefore upset the sound too, and a faulty U22 can load the keyboard lines.\",\"A key that 'does not work' but produces a different character usually has one of its two contacts dirty: for example Q (PB3+PB4) with only the PB3 contact closing gives a wrong code or no character. Clean the conductive rubber and the controller membrane before suspecting the console.\",\"Key 1 is on the joystick strobe (PA0) with PB2+PB3, the same lines as joystick right + up; SPACE does the same on the right controller (PA2).\"],\"board_it\":\"scheda madre della CreatiVision, schema VTech 65-0159-01 foglio 3 (PIA U21, SN76489 U22, prese dei controller J1\/J2)\",\"board_en\":\"CreatiVision main board, VTech schematic 65-0159-01 sheet 3 (PIA U21, SN76489 U22, controller sockets J1\/J2)\"},\"g7000\":{\"id\":\"g7000\",\"name\":\"Philips Videopac G7000 (Magnavox Odyssey\u00b2)\",\"sources\":[{\"t\":\"Philips Service Manual Videopac Computer G7000\/20\/35\/53, schema CS 75 074 (IC651 8048, IC657 74LS156, IC654 74LS148, IC658\/IC677 74LS365, connettore P5)\",\"u\":\"https:\/\/archive.org\/details\/G7000_Service_Manual_198x_Philips_M6\"},{\"t\":\"Magnavox Service Manual 6510, Odyssey\u00b2 BJ\/BK7600, schematic 6510-8 (J7, IC12 612230-1 decoder, IC13 612195-1 encoder)\",\"u\":\"https:\/\/archive.org\/details\/magnavox-odyssey-2-sm\"},{\"t\":\"MAME src\/mame\/philips\/odyssey2.cpp (INPUT_PORTS o2, p2_read, bus_read)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/mame\/philips\/odyssey2.cpp\"},{\"t\":\"O2EM (libretro-o2em) src\/vmachine.c, key_map[6][8] and read_P2()\",\"u\":\"https:\/\/github.com\/libretro\/libretro-o2em\/blob\/master\/src\/vmachine.c\"},{\"t\":\"Videopac Computer G7000 Instructions for Use (1978, multilingual incl. Italian): keyboard drawing, \\\"Touch RESET (\u25b3)\\\", 48 keys\",\"u\":\"https:\/\/archive.org\/details\/Videopac_Computer_G7000_Instructions_For_Use_1978_Philips_en-de_a\"},{\"t\":\"Wikimedia Commons: Videopac g7000-keyboard1152px.jpg (photo of the G7000 keyboard, used for the layout)\",\"u\":\"https:\/\/commons.wikimedia.org\/wiki\/File:Videopac_g7000-keyboard1152px.jpg\"},{\"t\":\"AtariAge forum: Y\/N and YES\/NO are the same keys electrically\",\"u\":\"https:\/\/forums.atariage.com\/topic\/315582-computer-intro-can-i-do-this\/\"}],\"scan_it\":\"La tastiera a membrana non ha elettronica: 6 colonne e 8 righe arrivano al connettore P5 della scheda. L'8048 IC651 porta basso P12 (pin 29), che abilita il decodificatore 74LS156 IC657 (strobe 1G\/2G, pin 2 e 14), e mette il numero di colonna su P20-P22 (pin 21-23): P20 va all'ingresso A (pin 13), P21 a B (pin 3), P22 a 1C\/2C (pin 1 e 15). Con P22=0 lavora la met\u00e0 2 (2Y0-2Y3, colonne SEL0-SEL3), con P22=1 la met\u00e0 1 (1Y0-1Y1, colonne SEL4-SEL5); l'uscita scelta (open collector) va a massa e raggiunge la membrana tramite una resistenza da 330 \u03a9. Le 8 righe hanno pull-up da 20 k\u03a9 ed entrano nel codificatore di priorit\u00e0 74LS148 IC654: l'uscita GS (pin 14) va a P24 (pin 35) e dice se c'\u00e8 un tasto premuto nella colonna, le uscite A0-A2 (pin 9, 7, 6) vanno a P25-P27 (pin 36-38) e danno il numero di riga in logica negata. Le colonne SEL0 e SEL1 abilitano anche i buffer 74LS365 dei joystick, letti sul bus dati B0-B4 durante \/RD.\",\"scan_en\":\"The membrane keyboard has no electronics of its own: 6 columns and 8 rows run to connector P5 on the board. The 8048 IC651 pulls P12 (pin 29) low, which enables the 74LS156 decoder IC657 (strobes 1G\/2G, pins 2 and 14), and puts the column number on P20-P22 (pins 21-23): P20 goes to input A (pin 13), P21 to B (pin 3), P22 to 1C\/2C (pins 1 and 15). With P22=0 half 2 is active (2Y0-2Y3, columns SEL0-SEL3), with P22=1 half 1 (1Y0-1Y1, columns SEL4-SEL5); the selected open-collector output goes low and reaches the membrane through a 330 \u03a9 resistor. The 8 rows have 20 k\u03a9 pull-ups and feed the 74LS148 priority encoder IC654: output GS (pin 14) goes to P24 (pin 35) and flags a key pressed in that column, outputs A0-A2 (pins 9, 7, 6) go to P25-P27 (pins 36-38) and give the row number, inverted. Columns SEL0 and SEL1 also enable the 74LS365 joystick buffers, which are read on data bus B0-B4 during \/RD.\",\"lines\":[{\"id\":\"SEL0\",\"group\":\"col\",\"name\":\"2Y0\",\"chip\":\"IC657\",\"chip_part\":\"74LS156\",\"chip_pin\":\"9\",\"conn_pin\":\"1\",\"also_it\":\"R714 330 \u03a9, pull-up R762 20 k\u03a9; abilita IC658 \/G2 (pin 15) = joystick destro P3, C802 1 nF a massa\",\"also_en\":\"R714 330 \u03a9, pull-up R762 20 k\u03a9; enables IC658 \/G2 (pin 15) = right joystick P3, C802 1 nF to ground\"},{\"id\":\"SEL1\",\"group\":\"col\",\"name\":\"2Y1\",\"chip\":\"IC657\",\"chip_part\":\"74LS156\",\"chip_pin\":\"10\",\"conn_pin\":\"2\",\"also_it\":\"R715 330 \u03a9, pull-up R763 20 k\u03a9; abilita IC677 \/G2 (pin 15) = joystick sinistro P2, C803 1 nF a massa\",\"also_en\":\"R715 330 \u03a9, pull-up R763 20 k\u03a9; enables IC677 \/G2 (pin 15) = left joystick P2, C803 1 nF to ground\"},{\"id\":\"SEL2\",\"group\":\"col\",\"name\":\"2Y2\",\"chip\":\"IC657\",\"chip_part\":\"74LS156\",\"chip_pin\":\"11\",\"conn_pin\":\"3\",\"also_it\":\"R716 330 \u03a9, C804 1 nF a massa\",\"also_en\":\"R716 330 \u03a9, C804 1 nF to ground\"},{\"id\":\"SEL3\",\"group\":\"col\",\"name\":\"2Y3\",\"chip\":\"IC657\",\"chip_part\":\"74LS156\",\"chip_pin\":\"12\",\"conn_pin\":\"4\",\"also_it\":\"R717 330 \u03a9, C805 1 nF a massa\",\"also_en\":\"R717 330 \u03a9, C805 1 nF to ground\"},{\"id\":\"SEL4\",\"group\":\"col\",\"name\":\"1Y0\",\"chip\":\"IC657\",\"chip_part\":\"74LS156\",\"chip_pin\":\"7\",\"conn_pin\":\"5\",\"also_it\":\"R718 330 \u03a9, C806 1 nF a massa\",\"also_en\":\"R718 330 \u03a9, C806 1 nF to ground\"},{\"id\":\"SEL5\",\"group\":\"col\",\"name\":\"1Y1\",\"chip\":\"IC657\",\"chip_part\":\"74LS156\",\"chip_pin\":\"6\",\"conn_pin\":\"6\",\"also_it\":\"R719 330 \u03a9, C807 1 nF a massa\",\"also_en\":\"R719 330 \u03a9, C807 1 nF to ground\"},{\"id\":\"ROW0\",\"group\":\"row\",\"name\":\"I0\",\"chip\":\"IC654\",\"chip_part\":\"74LS148\",\"chip_pin\":\"10\",\"conn_pin\":\"7\",\"also_it\":\"pull-up R712 20 k\u03a9, C794 1 nF a massa\",\"also_en\":\"pull-up R712 20 k\u03a9, C794 1 nF to ground\"},{\"id\":\"ROW1\",\"group\":\"row\",\"name\":\"I1\",\"chip\":\"IC654\",\"chip_part\":\"74LS148\",\"chip_pin\":\"11\",\"conn_pin\":\"8\",\"also_it\":\"pull-up R711 20 k\u03a9, C795 1 nF a massa\",\"also_en\":\"pull-up R711 20 k\u03a9, C795 1 nF to ground\"},{\"id\":\"ROW2\",\"group\":\"row\",\"name\":\"I2\",\"chip\":\"IC654\",\"chip_part\":\"74LS148\",\"chip_pin\":\"12\",\"conn_pin\":\"9\",\"also_it\":\"pull-up R710 20 k\u03a9, C796 1 nF a massa\",\"also_en\":\"pull-up R710 20 k\u03a9, C796 1 nF to ground\"},{\"id\":\"ROW3\",\"group\":\"row\",\"name\":\"I3\",\"chip\":\"IC654\",\"chip_part\":\"74LS148\",\"chip_pin\":\"13\",\"conn_pin\":\"10\",\"also_it\":\"pull-up R709 20 k\u03a9, C797 1 nF a massa\",\"also_en\":\"pull-up R709 20 k\u03a9, C797 1 nF to ground\"},{\"id\":\"ROW4\",\"group\":\"row\",\"name\":\"I4\",\"chip\":\"IC654\",\"chip_part\":\"74LS148\",\"chip_pin\":\"1\",\"conn_pin\":\"11\",\"also_it\":\"pull-up R708 20 k\u03a9, C798 1 nF a massa\",\"also_en\":\"pull-up R708 20 k\u03a9, C798 1 nF to ground\"},{\"id\":\"ROW5\",\"group\":\"row\",\"name\":\"I5\",\"chip\":\"IC654\",\"chip_part\":\"74LS148\",\"chip_pin\":\"2\",\"conn_pin\":\"12\",\"also_it\":\"pull-up R707 20 k\u03a9, C799 1 nF a massa\",\"also_en\":\"pull-up R707 20 k\u03a9, C799 1 nF to ground\"},{\"id\":\"ROW6\",\"group\":\"row\",\"name\":\"I6\",\"chip\":\"IC654\",\"chip_part\":\"74LS148\",\"chip_pin\":\"3\",\"conn_pin\":\"13\",\"also_it\":\"pull-up R706 20 k\u03a9, C800 1 nF a massa\",\"also_en\":\"pull-up R706 20 k\u03a9, C800 1 nF to ground\"},{\"id\":\"ROW7\",\"group\":\"row\",\"name\":\"I7\",\"chip\":\"IC654\",\"chip_part\":\"74LS148\",\"chip_pin\":\"4\",\"conn_pin\":\"14\",\"also_it\":\"pull-up R705 20 k\u03a9, C801 1 nF a massa\",\"also_en\":\"pull-up R705 20 k\u03a9, C801 1 nF to ground\"},{\"id\":\"RESET\",\"group\":\"extra\",\"name\":\"RESET\",\"chip\":\"IC651\",\"chip_part\":\"8048\",\"chip_pin\":\"4\",\"conn_pin\":\"15\",\"also_it\":\"R722 1 k\u03a9 verso \/RESET, C808 10 nF e C783 1 \u00b5F a massa\",\"also_en\":\"R722 1 k\u03a9 to \/RESET, C808 10 nF and C783 1 \u00b5F to ground\"}],\"connector\":{\"ref\":\"P5\",\"it\":\"Connettore tastiera P5, 16 contatti (coda della membrana)\",\"en\":\"Keyboard connector P5, 16 contacts (membrane tail)\",\"pins\":[{\"n\":\"1\",\"sig\":\"SEL0\",\"note_it\":\"colonna 0, anche abilitazione joystick destro\",\"note_en\":\"column 0, also right joystick enable\"},{\"n\":\"2\",\"sig\":\"SEL1\",\"note_it\":\"colonna 1, anche abilitazione joystick sinistro\",\"note_en\":\"column 1, also left joystick enable\"},{\"n\":\"3\",\"sig\":\"SEL2\"},{\"n\":\"4\",\"sig\":\"SEL3\"},{\"n\":\"5\",\"sig\":\"SEL4\"},{\"n\":\"6\",\"sig\":\"SEL5\"},{\"n\":\"7\",\"sig\":\"ROW0\"},{\"n\":\"8\",\"sig\":\"ROW1\"},{\"n\":\"9\",\"sig\":\"ROW2\"},{\"n\":\"10\",\"sig\":\"ROW3\"},{\"n\":\"11\",\"sig\":\"ROW4\"},{\"n\":\"12\",\"sig\":\"ROW5\"},{\"n\":\"13\",\"sig\":\"ROW6\"},{\"n\":\"14\",\"sig\":\"ROW7\"},{\"n\":\"15\",\"sig\":\"RESET\",\"note_it\":\"tasto RESET \u25b3, verso \/RESET dell'8048\",\"note_en\":\"RESET \u25b3 key, to 8048 \/RESET\"},{\"n\":\"16\",\"sig\":\"GND\",\"note_it\":\"massa, ritorno del tasto RESET\",\"note_en\":\"ground, RESET key return\"}]},\"layout\":[{\"id\":\"0\",\"t\":\"0\",\"x\":0,\"y\":0,\"w\":0.9,\"h\":0.75},{\"id\":\"1\",\"t\":\"1\",\"x\":1,\"y\":0,\"w\":0.9,\"h\":0.75},{\"id\":\"2\",\"t\":\"2\",\"x\":2,\"y\":0,\"w\":0.9,\"h\":0.75},{\"id\":\"3\",\"t\":\"3\",\"x\":3,\"y\":0,\"w\":0.9,\"h\":0.75},{\"id\":\"4\",\"t\":\"4\",\"x\":4,\"y\":0,\"w\":0.9,\"h\":0.75},{\"id\":\"5\",\"t\":\"5\",\"x\":5,\"y\":0,\"w\":0.9,\"h\":0.75},{\"id\":\"6\",\"t\":\"6\",\"x\":6,\"y\":0,\"w\":0.9,\"h\":0.75},{\"id\":\"7\",\"t\":\"7\",\"x\":7,\"y\":0,\"w\":0.9,\"h\":0.75},{\"id\":\"8\",\"t\":\"8\",\"x\":8,\"y\":0,\"w\":0.9,\"h\":0.75},{\"id\":\"9\",\"t\":\"9\",\"x\":9,\"y\":0,\"w\":0.9,\"h\":0.75},{\"id\":\"plus\",\"t\":\"+\",\"x\":0,\"y\":1.15,\"w\":0.9,\"h\":0.75},{\"id\":\"minus\",\"t\":\"\u2212\",\"x\":1,\"y\":1.15,\"w\":0.9,\"h\":0.75},{\"id\":\"times\",\"t\":\"\u00d7\",\"x\":2,\"y\":1.15,\"w\":0.9,\"h\":0.75},{\"id\":\"divide\",\"t\":\"\u00f7\",\"x\":3,\"y\":1.15,\"w\":0.9,\"h\":0.75},{\"id\":\"equals\",\"t\":\"=\",\"x\":4,\"y\":1.15,\"w\":0.9,\"h\":0.75},{\"id\":\"yes\",\"t\":\"YES\",\"x\":5,\"y\":1.15,\"w\":0.9,\"h\":0.75},{\"id\":\"no\",\"t\":\"NO\",\"x\":6,\"y\":1.15,\"w\":0.9,\"h\":0.75},{\"id\":\"clear\",\"t\":\"CLEAR\",\"x\":7,\"y\":1.15,\"w\":0.9,\"h\":0.75},{\"id\":\"enter\",\"t\":\"ENTER\",\"x\":8,\"y\":1.15,\"w\":0.9,\"h\":0.75},{\"id\":\"reset\",\"t\":\"\u25b3\",\"t2\":\"RESET\",\"x\":9,\"y\":1.15,\"w\":0.9,\"h\":0.75},{\"id\":\"q\",\"t\":\"Q\",\"x\":0,\"y\":2.7,\"w\":0.9,\"h\":0.75},{\"id\":\"w\",\"t\":\"W\",\"x\":1,\"y\":2.7,\"w\":0.9,\"h\":0.75},{\"id\":\"e\",\"t\":\"E\",\"x\":2,\"y\":2.7,\"w\":0.9,\"h\":0.75},{\"id\":\"r\",\"t\":\"R\",\"x\":3,\"y\":2.7,\"w\":0.9,\"h\":0.75},{\"id\":\"t\",\"t\":\"T\",\"x\":4,\"y\":2.7,\"w\":0.9,\"h\":0.75},{\"id\":\"y\",\"t\":\"Y\",\"x\":5,\"y\":2.7,\"w\":0.9,\"h\":0.75},{\"id\":\"u\",\"t\":\"U\",\"x\":6,\"y\":2.7,\"w\":0.9,\"h\":0.75},{\"id\":\"i\",\"t\":\"I\",\"x\":7,\"y\":2.7,\"w\":0.9,\"h\":0.75},{\"id\":\"o\",\"t\":\"O\",\"x\":8,\"y\":2.7,\"w\":0.9,\"h\":0.75},{\"id\":\"p\",\"t\":\"P\",\"x\":9,\"y\":2.7,\"w\":0.9,\"h\":0.75},{\"id\":\"a\",\"t\":\"A\",\"x\":0.45,\"y\":3.65,\"w\":0.9,\"h\":0.75},{\"id\":\"s\",\"t\":\"S\",\"x\":1.45,\"y\":3.65,\"w\":0.9,\"h\":0.75},{\"id\":\"d\",\"t\":\"D\",\"x\":2.45,\"y\":3.65,\"w\":0.9,\"h\":0.75},{\"id\":\"f\",\"t\":\"F\",\"x\":3.45,\"y\":3.65,\"w\":0.9,\"h\":0.75},{\"id\":\"g\",\"t\":\"G\",\"x\":4.45,\"y\":3.65,\"w\":0.9,\"h\":0.75},{\"id\":\"h\",\"t\":\"H\",\"x\":5.45,\"y\":3.65,\"w\":0.9,\"h\":0.75},{\"id\":\"j\",\"t\":\"J\",\"x\":6.45,\"y\":3.65,\"w\":0.9,\"h\":0.75},{\"id\":\"k\",\"t\":\"K\",\"x\":7.45,\"y\":3.65,\"w\":0.9,\"h\":0.75},{\"id\":\"l\",\"t\":\"L\",\"x\":8.45,\"y\":3.65,\"w\":0.9,\"h\":0.75},{\"id\":\"z\",\"t\":\"Z\",\"x\":0.95,\"y\":4.6,\"w\":0.9,\"h\":0.75},{\"id\":\"x\",\"t\":\"X\",\"x\":1.95,\"y\":4.6,\"w\":0.9,\"h\":0.75},{\"id\":\"c\",\"t\":\"C\",\"x\":2.95,\"y\":4.6,\"w\":0.9,\"h\":0.75},{\"id\":\"v\",\"t\":\"V\",\"x\":3.95,\"y\":4.6,\"w\":0.9,\"h\":0.75},{\"id\":\"b\",\"t\":\"B\",\"x\":4.95,\"y\":4.6,\"w\":0.9,\"h\":0.75},{\"id\":\"n\",\"t\":\"N\",\"x\":5.95,\"y\":4.6,\"w\":0.9,\"h\":0.75},{\"id\":\"m\",\"t\":\"M\",\"x\":6.95,\"y\":4.6,\"w\":0.9,\"h\":0.75},{\"id\":\"period\",\"t\":\".\",\"x\":7.95,\"y\":4.6,\"w\":0.9,\"h\":0.75},{\"id\":\"question\",\"t\":\"?\",\"x\":8.95,\"y\":4.6,\"w\":0.9,\"h\":0.75},{\"id\":\"space\",\"t\":\"SPACE\",\"x\":3.5,\"y\":5.6,\"w\":2.85,\"h\":0.75}],\"matrix\":{\"0\":[\"SEL0\",\"ROW0\"],\"1\":[\"SEL0\",\"ROW1\"],\"2\":[\"SEL0\",\"ROW2\"],\"3\":[\"SEL0\",\"ROW3\"],\"4\":[\"SEL0\",\"ROW4\"],\"5\":[\"SEL0\",\"ROW5\"],\"6\":[\"SEL0\",\"ROW6\"],\"7\":[\"SEL0\",\"ROW7\"],\"8\":[\"SEL1\",\"ROW0\"],\"9\":[\"SEL1\",\"ROW1\"],\"space\":[\"SEL1\",\"ROW4\"],\"question\":[\"SEL1\",\"ROW5\"],\"l\":[\"SEL1\",\"ROW6\"],\"p\":[\"SEL1\",\"ROW7\"],\"plus\":[\"SEL2\",\"ROW0\"],\"w\":[\"SEL2\",\"ROW1\"],\"e\":[\"SEL2\",\"ROW2\"],\"r\":[\"SEL2\",\"ROW3\"],\"t\":[\"SEL2\",\"ROW4\"],\"u\":[\"SEL2\",\"ROW5\"],\"i\":[\"SEL2\",\"ROW6\"],\"o\":[\"SEL2\",\"ROW7\"],\"q\":[\"SEL3\",\"ROW0\"],\"s\":[\"SEL3\",\"ROW1\"],\"d\":[\"SEL3\",\"ROW2\"],\"f\":[\"SEL3\",\"ROW3\"],\"g\":[\"SEL3\",\"ROW4\"],\"h\":[\"SEL3\",\"ROW5\"],\"j\":[\"SEL3\",\"ROW6\"],\"k\":[\"SEL3\",\"ROW7\"],\"a\":[\"SEL4\",\"ROW0\"],\"z\":[\"SEL4\",\"ROW1\"],\"x\":[\"SEL4\",\"ROW2\"],\"c\":[\"SEL4\",\"ROW3\"],\"v\":[\"SEL4\",\"ROW4\"],\"b\":[\"SEL4\",\"ROW5\"],\"m\":[\"SEL4\",\"ROW6\"],\"period\":[\"SEL4\",\"ROW7\"],\"minus\":[\"SEL5\",\"ROW0\"],\"times\":[\"SEL5\",\"ROW1\"],\"divide\":[\"SEL5\",\"ROW2\"],\"equals\":[\"SEL5\",\"ROW3\"],\"y\":[\"SEL5\",\"ROW4\"],\"n\":[\"SEL5\",\"ROW5\"],\"clear\":[\"SEL5\",\"ROW6\"],\"enter\":[\"SEL5\",\"ROW7\"],\"yes\":[\"SEL5\",\"ROW4\"],\"no\":[\"SEL5\",\"ROW5\"]},\"special\":{\"reset\":{\"lines\":[\"RESET\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: il tasto \u25b3 (RESET) chiude il pin 15 del connettore P5 verso massa (pin 16); il segnale passa per R722 da 1 k\u03a9 e arriva al pin 4 (\/RESET) dell'8048 IC651, che ha C783 da 1 \u00b5F per il reset all'accensione. Se il gioco si resetta da solo o non si resetta, controllare questa pista, R722, C808 e C783.\",\"en\":\"Not in the matrix: the \u25b3 (RESET) key shorts pin 15 of connector P5 to ground (pin 16); the signal goes through R722 (1 k\u03a9) to pin 4 (\/RESET) of the 8048 IC651, which also has C783 (1 \u00b5F) for power-on reset. If the console resets by itself or will not reset, check this track, R722, C808 and C783.\"},\"yes\":{\"lines\":[\"SEL5\",\"ROW4\"],\"it\":\"YES ha lo stesso contatto di matrice di Y (SEL5\/ROW4): lo schema riporta un solo punto \\\"Yes\\\" e nessun Y separato, e il software non pu\u00f2 distinguerli. Se YES non va ma Y s\u00ec (o viceversa) il guasto \u00e8 sulla membrana, non sulla scheda.\",\"en\":\"YES uses the same matrix contact as Y (SEL5\/ROW4): the schematic shows a single \\\"Yes\\\" point and no separate Y, and software cannot tell them apart. If YES fails but Y works (or the other way round) the fault is on the membrane, not on the board.\"},\"no\":{\"lines\":[\"SEL5\",\"ROW5\"],\"it\":\"NO ha lo stesso contatto di matrice di N (SEL5\/ROW5), come YES con Y. Se uno dei due funziona e l'altro no, il guasto \u00e8 sulla membrana.\",\"en\":\"NO uses the same matrix contact as N (SEL5\/ROW5), just as YES does with Y. If one works and the other does not, the fault is on the membrane.\"}},\"notes_it\":[\"I joystick non condividono le righe con la tastiera: ogni joystick ha un 74LS365 (IC677 per il sinistro P2, IC658 per il destro P3) che mette su\/gi\u00f9\/destra\/sinistra\/fuoco sul bus dati B0-B4. In comune ci sono solo le colonne SEL0 e SEL1, che fanno da abilitazione (\/G2, pin 15) dei due buffer; \/G1 (pin 1) \u00e8 collegato a \/RD (pin 8) dell'8048. Connettori joystick P2\/P3: pin 6 su, 5 destra, 4 gi\u00f9, 3 sinistra, 2 fuoco, 1-8-9 massa.\",\"Se un'intera colonna di tasti \u00e8 morta (per esempio 0-7, oppure Q S D F G H J K), controllare il relativo pin di P5, la resistenza in serie da 330 \u03a9 (R714-R719) e il pin di uscita del 74LS156 IC657. Se si guasta SEL0 o SEL1 smette di funzionare anche il joystick corrispondente.\",\"Se un'intera riga \u00e8 morta (per esempio 0, 8, +, Q, A, \u2212), controllare il pin di P5, la pull-up da 20 k\u03a9 (R705-R712) e l'ingresso del 74LS148 IC654. Una riga in corto verso massa \u00e8 pi\u00f9 grave: il 74LS148 d\u00e0 la precedenza alla riga col numero pi\u00f9 alto, quindi una riga bloccata bassa nasconde tutte le righe con numero pi\u00f9 basso e la tastiera sembra impazzita o morta.\",\"Il 74LS148 \u00e8 un codificatore di priorit\u00e0: due tasti premuti nella stessa colonna non vengono visti insieme, vince quello sulla riga pi\u00f9 alta. \u00c8 normale, non \u00e8 un guasto.\",\"Se non funziona nessun tasto ma i giochi partono, controllare P12 (pin 29 dell'8048) verso i pin 2 e 14 del 74LS156, e l'alimentazione di IC657 e IC654 (pin 16 a +5 V, pin 8 a massa; sul 74LS148 anche il pin 5 EI va a massa).\",\"Le posizioni SEL1\/ROW2 e SEL1\/ROW3 della matrice sono libere: la tastiera ha 48 tasti di matrice su 46 punti (YES e NO doppiano Y e N) pi\u00f9 il tasto RESET, in tutto 49 tasti.\",\"Odyssey\u00b2 (Magnavox BJ\/BK7600): stesso circuito con sigle diverse. Connettore tastiera J7 con la stessa numerazione (1-6 colonne dalle uscite 9, 10, 11, 12, 7, 6 del decodificatore, 7-14 righe, 15 RESET, 16 massa), decodificatore IC12 612230-1, codificatore IC13 612195-1, 8048 IC7, buffer joystick IC8\/IC14 612197-1. Le sigle dei componenti di questa scheda valgono solo per il G7000.\"],\"notes_en\":[\"The joysticks do not share rows with the keyboard: each joystick has a 74LS365 (IC677 for the left one, P2; IC658 for the right one, P3) that puts up\/down\/right\/left\/fire on data bus B0-B4. Only columns SEL0 and SEL1 are shared, as the enables (\/G2, pin 15) of the two buffers; \/G1 (pin 1) is tied to \/RD (pin 8) of the 8048. Joystick connectors P2\/P3: pin 6 up, 5 right, 4 down, 3 left, 2 fire, 1-8-9 ground.\",\"If a whole column of keys is dead (for example 0-7, or Q S D F G H J K), check that pin of P5, the 330 \u03a9 series resistor (R714-R719) and the output pin of the 74LS156 IC657. If SEL0 or SEL1 fails, the matching joystick stops working too.\",\"If a whole row is dead (for example 0, 8, +, Q, A, \u2212), check that pin of P5, the 20 k\u03a9 pull-up (R705-R712) and the 74LS148 IC654 input. A row shorted to ground is worse: the 74LS148 gives priority to the highest-numbered row, so a row stuck low hides every lower-numbered row and the keyboard looks mad or dead.\",\"The 74LS148 is a priority encoder: two keys pressed in the same column are not seen together; the one on the higher row wins. This is normal, not a fault.\",\"If no key works but games start, check P12 (8048 pin 29) to pins 2 and 14 of the 74LS156, and the supply of IC657 and IC654 (pin 16 to +5 V, pin 8 to ground; on the 74LS148 pin 5 EI is grounded too).\",\"Matrix positions SEL1\/ROW2 and SEL1\/ROW3 are unused: the keyboard has 48 matrix keys on 46 points (YES and NO double Y and N) plus the RESET key, 49 keys in all.\",\"Odyssey\u00b2 (Magnavox BJ\/BK7600): same circuit with different references. Keyboard connector J7 with the same numbering (1-6 columns from decoder outputs 9, 10, 11, 12, 7, 6; 7-14 rows; 15 RESET; 16 ground), decoder IC12 612230-1, encoder IC13 612195-1, 8048 IC7, joystick buffers IC8\/IC14 612197-1. The component references in this file are for the G7000 only.\"],\"board_it\":\"G7000\/20\/35\/53, schema CS 75 074 del manuale di servizio Philips\",\"board_en\":\"G7000\/20\/35\/53, schematic CS 75 074 in the Philips service manual\"},\"grillo\":{\"id\":\"grillo\",\"name\":\"Texas Instruments \/ Clementoni Grillo Parlante (Speak & Spell italiano)\",\"sources\":[{\"t\":\"MAME src\/mame\/ti\/snspell.cpp (INPUT_PORTS snspell \/ snspellit, read_k, write_r; driver snspellit \\\"Grillo Parlante (Italy)\\\")\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/mame\/ti\/snspell.cpp\"},{\"t\":\"MAME src\/devices\/cpu\/tms1000\/tms0270.cpp (read_k_input: the KF line asserts all K inputs)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/devices\/cpu\/tms1000\/tms0270.cpp\"},{\"t\":\"thinkl33t.co.uk: Speak and Spell keyboard matrix measured on the 13-way membrane tail (US unit, 2011)\",\"u\":\"https:\/\/thinkl33t.co.uk\/speak-and-spell\/\"},{\"t\":\"Facele TI Museum: Grillo Parlante (chips, photos, membrane keyboard repair)\",\"u\":\"https:\/\/facele.eu\/index.php\/ti-museum\/educational\/358-educational-6\"}],\"scan_it\":\"Il microcontrollore TMS0270 (CD2702) attiva una alla volta le uscite R0-R5 e R7 e legge gli ingressi K1, K2, K4, K8 e KF; un tasto premuto collega una linea R con una linea K. Una quinta \\\"colonna\\\" della tastiera \u00e8 collegata a Vss ed \u00e8 sempre attiva: per questo il tasto SCRIVI accende la macchina anche quando la scansione \u00e8 ferma. Quando KF \u00e8 attiva il micro la legge come K1, K2, K4 e K8 tutte insieme. La tastiera \u00e8 una membrana con coda flessibile a 13 piste (7 linee R, Vss, 5 linee K).\",\"scan_en\":\"The TMS0270 (CD2702) microcontroller energises outputs R0-R5 and R7 one at a time and reads inputs K1, K2, K4, K8 and KF; a pressed key connects one R line to one K line. A fifth keyboard \\\"column\\\" is tied to Vss and is always active, which is why SCRIVI can switch the unit on while scanning is stopped. When KF is asserted the MCU reads it as K1, K2, K4 and K8 all at once. The keyboard is a membrane with a 13-track flexible tail (7 R lines, Vss, 5 K lines).\",\"lines\":[{\"id\":\"R0\",\"group\":\"col\",\"name\":\"R0\",\"chip\":\"\",\"chip_part\":\"TMS0270 MCU (CD2702)\",\"chip_pin\":\"\",\"conn_pin\":\"\",\"also_it\":\"lettere A-E\",\"also_en\":\"letters A-E\"},{\"id\":\"R1\",\"group\":\"col\",\"name\":\"R1\",\"chip\":\"\",\"chip_part\":\"TMS0270 MCU (CD2702)\",\"chip_pin\":\"\",\"conn_pin\":\"\",\"also_it\":\"lettere F-J\",\"also_en\":\"letters F-J\"},{\"id\":\"R2\",\"group\":\"col\",\"name\":\"R2\",\"chip\":\"\",\"chip_part\":\"TMS0270 MCU (CD2702)\",\"chip_pin\":\"\",\"conn_pin\":\"\",\"also_it\":\"lettere K-O\",\"also_en\":\"letters K-O\"},{\"id\":\"R3\",\"group\":\"col\",\"name\":\"R3\",\"chip\":\"\",\"chip_part\":\"TMS0270 MCU (CD2702)\",\"chip_pin\":\"\",\"conn_pin\":\"\",\"also_it\":\"lettere P-T\",\"also_en\":\"letters P-T\"},{\"id\":\"R4\",\"group\":\"col\",\"name\":\"R4\",\"chip\":\"\",\"chip_part\":\"TMS0270 MCU (CD2702)\",\"chip_pin\":\"\",\"conn_pin\":\"\",\"also_it\":\"lettere U-Y\",\"also_en\":\"letters U-Y\"},{\"id\":\"R5\",\"group\":\"col\",\"name\":\"R5\",\"chip\":\"\",\"chip_part\":\"TMS0270 MCU (CD2702)\",\"chip_pin\":\"\",\"conn_pin\":\"\",\"also_it\":\"Z, ', Moduli, Cancella, Controllo\",\"also_en\":\"Z, ', Module, Erase, Enter\"},{\"id\":\"R7\",\"group\":\"col\",\"name\":\"R7\",\"chip\":\"\",\"chip_part\":\"TMS0270 MCU (CD2702)\",\"chip_pin\":\"\",\"conn_pin\":\"\",\"also_it\":\"tasti Stop, Via, Ritorno, Replica, Aiuto; R6 non usata dalla tastiera\",\"also_en\":\"Stop, Via, Ritorno, Replica, Aiuto keys; R6 not used by the keyboard\"},{\"id\":\"VSS\",\"group\":\"col\",\"name\":\"Vss\",\"chip\":\"\",\"chip_part\":\"Vss (alimentazione MCU \/ MCU supply rail)\",\"chip_pin\":\"\",\"conn_pin\":\"\",\"also_it\":\"sempre attiva, anche a macchina spenta: porta SCRIVI (accensione)\",\"also_en\":\"always active, even when off: carries SCRIVI (power on)\"},{\"id\":\"K1\",\"group\":\"row\",\"name\":\"K1\",\"chip\":\"\",\"chip_part\":\"TMS0270 MCU (CD2702)\",\"chip_pin\":\"\",\"conn_pin\":\"\",\"also_it\":\"tasti\",\"also_en\":\"keys A F K P U Z, Stop, Indovina\"},{\"id\":\"K2\",\"group\":\"row\",\"name\":\"K2\",\"chip\":\"\",\"chip_part\":\"TMS0270 MCU (CD2702)\",\"chip_pin\":\"\",\"conn_pin\":\"\",\"also_it\":\"tasti\",\"also_en\":\"keys B G L Q V ', Via, Codice\"},{\"id\":\"K4\",\"group\":\"row\",\"name\":\"K4\",\"chip\":\"\",\"chip_part\":\"TMS0270 MCU (CD2702)\",\"chip_pin\":\"\",\"conn_pin\":\"\",\"also_it\":\"tasti\",\"also_en\":\"keys C H M R W, Moduli, Ritorno, Alfabeto\"},{\"id\":\"K8\",\"group\":\"row\",\"name\":\"K8\",\"chip\":\"\",\"chip_part\":\"TMS0270 MCU (CD2702)\",\"chip_pin\":\"\",\"conn_pin\":\"\",\"also_it\":\"tasti\",\"also_en\":\"keys D I N S X, Cancella, Replica, Ripeti\"},{\"id\":\"KF\",\"group\":\"row\",\"name\":\"KF\",\"chip\":\"\",\"chip_part\":\"TMS0270 MCU (CD2702)\",\"chip_pin\":\"\",\"conn_pin\":\"\",\"also_it\":\"tasti\",\"also_en\":\"keys E J O T Y, Controllo, Aiuto, Scrivi; KF attiva tutti gli ingressi K insieme \/ KF asserts all K inputs at once\"}],\"connectors\":[],\"layout\":[{\"id\":\"stop\",\"t\":\"STOP\",\"x\":0,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"via\",\"t\":\"VIA\",\"x\":1,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"ritorno\",\"t\":\"RITORNO\",\"x\":2,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"replica\",\"t\":\"REPLICA\",\"x\":3,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"aiuto\",\"t\":\"AIUTO\",\"x\":4,\"y\":0,\"w\":1,\"h\":1,\"t2\":\"SOS\"},{\"id\":\"indovina\",\"t\":\"INDOVINA\",\"x\":5,\"y\":0,\"w\":1,\"h\":1,\"t2\":\"?\"},{\"id\":\"codice\",\"t\":\"CODICE\",\"x\":6,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"alfabeto\",\"t\":\"ALFABETO\",\"x\":7,\"y\":0,\"w\":1,\"h\":1,\"t2\":\"ABC\"},{\"id\":\"ripeti\",\"t\":\"RIPETI\",\"x\":8,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"scrivi\",\"t\":\"SCRIVI\",\"x\":9,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"a\",\"t\":\"A\",\"x\":0,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"b\",\"t\":\"B\",\"x\":1,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"c\",\"t\":\"C\",\"x\":2,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"d\",\"t\":\"D\",\"x\":3,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"e\",\"t\":\"E\",\"x\":4,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"f\",\"t\":\"F\",\"x\":5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"g\",\"t\":\"G\",\"x\":6,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"h\",\"t\":\"H\",\"x\":7,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"i\",\"t\":\"I\",\"x\":8,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"j\",\"t\":\"J\",\"x\":9,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"k\",\"t\":\"K\",\"x\":0,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"l\",\"t\":\"L\",\"x\":1,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"m\",\"t\":\"M\",\"x\":2,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"n\",\"t\":\"N\",\"x\":3,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"o\",\"t\":\"O\",\"x\":4,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"p\",\"t\":\"P\",\"x\":5,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"q\",\"t\":\"Q\",\"x\":6,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"r\",\"t\":\"R\",\"x\":7,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"s\",\"t\":\"S\",\"x\":8,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"t\",\"t\":\"T\",\"x\":9,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"u\",\"t\":\"U\",\"x\":0,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"v\",\"t\":\"V\",\"x\":1,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"w\",\"t\":\"W\",\"x\":2,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"x\",\"t\":\"X\",\"x\":3,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"y\",\"t\":\"Y\",\"x\":4,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"z\",\"t\":\"Z\",\"x\":5,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"apos\",\"t\":\"'\",\"x\":6,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"moduli\",\"t\":\"#\",\"x\":7,\"y\":3,\"w\":1,\"h\":1,\"t2\":\"MODULI\"},{\"id\":\"cancella\",\"t\":\"\u2715\",\"x\":8,\"y\":3,\"w\":1,\"h\":1,\"t2\":\"CANCELLA\"},{\"id\":\"controllo\",\"t\":\"\u25cf\",\"x\":9,\"y\":3,\"w\":1,\"h\":1,\"t2\":\"CONTROLLO\"}],\"matrix\":{\"stop\":[\"R7\",\"K1\"],\"via\":[\"R7\",\"K2\"],\"ritorno\":[\"R7\",\"K4\"],\"replica\":[\"R7\",\"K8\"],\"aiuto\":[\"R7\",\"KF\"],\"indovina\":[\"VSS\",\"K1\"],\"codice\":[\"VSS\",\"K2\"],\"alfabeto\":[\"VSS\",\"K4\"],\"ripeti\":[\"VSS\",\"K8\"],\"scrivi\":[\"VSS\",\"KF\"],\"a\":[\"R0\",\"K1\"],\"b\":[\"R0\",\"K2\"],\"c\":[\"R0\",\"K4\"],\"d\":[\"R0\",\"K8\"],\"e\":[\"R0\",\"KF\"],\"f\":[\"R1\",\"K1\"],\"g\":[\"R1\",\"K2\"],\"h\":[\"R1\",\"K4\"],\"i\":[\"R1\",\"K8\"],\"j\":[\"R1\",\"KF\"],\"k\":[\"R2\",\"K1\"],\"l\":[\"R2\",\"K2\"],\"m\":[\"R2\",\"K4\"],\"n\":[\"R2\",\"K8\"],\"o\":[\"R2\",\"KF\"],\"p\":[\"R3\",\"K1\"],\"q\":[\"R3\",\"K2\"],\"r\":[\"R3\",\"K4\"],\"s\":[\"R3\",\"K8\"],\"t\":[\"R3\",\"KF\"],\"u\":[\"R4\",\"K1\"],\"v\":[\"R4\",\"K2\"],\"w\":[\"R4\",\"K4\"],\"x\":[\"R4\",\"K8\"],\"y\":[\"R4\",\"KF\"],\"z\":[\"R5\",\"K1\"],\"apos\":[\"R5\",\"K2\"],\"moduli\":[\"R5\",\"K4\"],\"cancella\":[\"R5\",\"K8\"],\"controllo\":[\"R5\",\"KF\"]},\"special\":{\"scrivi\":{\"lines\":[\"VSS\",\"KF\"],\"it\":\"\u00c8 nella matrice, ma sulla linea Vss sempre attiva: \u00e8 il tasto di accensione (Spell\/On). Se la macchina non si accende, controllare questo contatto e i cortocircuiti sulla membrana.\",\"en\":\"It is in the matrix, but on the always-active Vss line: it is the power-on key (Spell\/On). If the unit will not switch on, check this contact and look for shorts on the membrane.\"},\"stop\":{\"lines\":[\"R7\",\"K1\"],\"it\":\"Normale tasto della matrice: lo spegnimento lo fa il programma (il micro abbassa R13), non un interruttore.\",\"en\":\"An ordinary matrix key: power-off is done by the firmware (the MCU drops R13), not by a switch.\"}},\"notes_it\":[\"Il Grillo Parlante \u00e8 lo Speak & Spell della Texas Instruments in versione italiana, distribuito da Clementoni: stessa elettronica della versione francese (MCU CD2702, sintesi CD2801) con ROM vocale italiana CD62190 e display come lo Speak & Math. La matrice \u00e8 quella dello Speak & Spell inglese, cambiano solo le scritte dei tasti.\",\"Corrispondenza tasti italiani \/ inglesi: STOP = Off, VIA = Go, RITORNO = Replay, REPLICA = Repeat, AIUTO = Clue, INDOVINA = Mystery Word, CODICE = Secret Code, ALFABETO = Letter, RIPETI = Say It, SCRIVI = Spell\/On, MODULI = Module Select, CANCELLA = Erase, CONTROLLO = Enter; il tasto rosso con l'apostrofo non ha scritta.\",\"La matrice \u00e8 ruotata di 90\u00b0 rispetto alla disposizione fisica: ogni linea R comprende cinque tasti consecutivi (A-E, F-J ecc.), cio\u00e8 mezza fila. Se non va un blocco di cinque lettere consecutive, sospettare la linea R; se non va un tasto ogni cinque (es. A F K P U Z), sospettare la linea K.\",\"Ordine delle piste misurato da thinkl33t su uno Speak & Spell USA, contando da un capo della coda a 13 vie: 1 K1, 2 K2, 3 R4, 4 R2, 5 R7, 6 R0, 7 R1, 8 Vss, 9 R3, 10 R5, 11 K4, 12 K8, 13 KF. Non verificato sul Grillo Parlante e non \u00e8 indicato da quale lato parte il pin 1: usarlo solo come traccia e controllare con il tester.\",\"Guasto tipico (Facele): la macchina non si accende perch\u00e9 la membrana ha alcuni tasti in corto; si stacca la membrana, si puliscono i contatti con alcool isopropilico e si rimonta.\"],\"notes_en\":[\"The Grillo Parlante is the Italian Texas Instruments Speak & Spell, distributed by Clementoni: same electronics as the French version (CD2702 MCU, CD2801 synthesiser) with the Italian CD62190 speech ROM and the Speak & Math display. The matrix is that of the English Speak & Spell; only the key legends differ.\",\"Italian \/ English key names: STOP = Off, VIA = Go, RITORNO = Replay, REPLICA = Repeat, AIUTO = Clue, INDOVINA = Mystery Word, CODICE = Secret Code, ALFABETO = Letter, RIPETI = Say It, SCRIVI = Spell\/On, MODULI = Module Select, CANCELLA = Erase, CONTROLLO = Enter; the red apostrophe key has no caption.\",\"The matrix is rotated 90 degrees from the physical layout: each R line covers five consecutive keys (A-E, F-J and so on), i.e. half a row. If a block of five consecutive letters is dead, suspect the R line; if every fifth key is dead (e.g. A F K P U Z), suspect the K line.\",\"Track order measured by thinkl33t on a US Speak & Spell, counting from one end of the 13-way tail: 1 K1, 2 K2, 3 R4, 4 R2, 5 R7, 6 R0, 7 R1, 8 Vss, 9 R3, 10 R5, 11 K4, 12 K8, 13 KF. Not verified on the Grillo Parlante, and which end is pin 1 is not stated: use it only as a lead and check with a meter.\",\"Typical fault (Facele): the unit will not switch on because some keys on the membrane are shorted; lift the membrane, clean the contacts with isopropyl alcohol and refit it.\"],\"board_it\":\"Speak & Spell italiano: MCU CD2702 (TMS0270), sintesi CD2801, ROM vocale CD62190\",\"board_en\":\"Italian Speak & Spell: CD2702 (TMS0270) MCU, CD2801 synthesiser, CD62190 speech ROM\"},\"laser500\":{\"id\":\"laser500\",\"name\":\"VTech Laser 500\",\"sources\":[{\"t\":\"VTech Laser 350\/500\/700 Main Unit Manual, Appendix L: Laser 500 (PAL) circuit diagram, sheet 5 (keyboard matrix) and sheet 6 (connector diagram, J4)\",\"u\":\"https:\/\/github.com\/nippur72\/laser500emu\/blob\/master\/docs\/main_unit_manual.pdf\"},{\"t\":\"MAME src\/mame\/vtech\/vtech2.cpp (INPUT_PORTS laser500) and vtech2_m.cpp (mmio_r)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/mame\/vtech\/vtech2.cpp\"},{\"t\":\"laser500emu src\/keys.ts (matrix KA x KD, LS138 decoding) and docs\/laser500.md (GA1 pinout)\",\"u\":\"https:\/\/github.com\/nippur72\/laser500emu\"},{\"t\":\"laser500emu docs\/reset_key.md\",\"u\":\"https:\/\/github.com\/nippur72\/laser500emu\/blob\/master\/docs\/reset_key.md\"}],\"scan_it\":\"Le righe sono le linee di indirizzo: quando la CPU legge l'area I\/O mappata in memoria, A0-A7 (direttamente, tramite un diodo per riga) e le uscite Q0-Q3 del 74LS138 (decodifica di A8-A10, righe A'-D') portano a 0 le righe KA da interrogare. Le colonne KD0-KD6, con pull-up da 4,7 k\u03a9, entrano nel buffer 74LS244 che il gate array GA1 abilita con \/IO: un tasto premuto su una riga attiva legge 0 sul bit corrispondente del bus dati.\",\"scan_en\":\"The rows are the address lines: when the CPU reads the memory-mapped I\/O area, A0-A7 (directly, through one diode per row) and outputs Q0-Q3 of the 74LS138 (decoding A8-A10, rows A'-D') pull low the KA rows being scanned. Columns KD0-KD6, with 4.7 k\u03a9 pull-ups, go into the 74LS244 buffer that gate array GA1 enables with \/IO: a pressed key on an active row reads 0 on the matching data bus bit.\",\"lines\":[{\"id\":\"KA0\",\"group\":\"col\",\"name\":\"KA0 (A0)\",\"chip\":\"Z80\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"30\",\"conn\":\"J4\",\"conn_pin\":\"6\",\"also_it\":\"diodo da A0; SHIFT, C, V, B, N\",\"also_en\":\"diode from A0; SHIFT, C, V, B, N\"},{\"id\":\"KA0B\",\"group\":\"col\",\"name\":\"KA0' (A0)\",\"chip\":\"Z80\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"30\",\"conn\":\"J4\",\"conn_pin\":\"7\",\"also_it\":\"secondo diodo da A0, solo Z\",\"also_en\":\"second diode from A0, Z only\"},{\"id\":\"KA0C\",\"group\":\"col\",\"name\":\"KA0'' (A0)\",\"chip\":\"Z80\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"30\",\"conn\":\"J4\",\"conn_pin\":\"8\",\"also_it\":\"terzo diodo da A0, solo X\",\"also_en\":\"third diode from A0, X only\"},{\"id\":\"KA1\",\"group\":\"col\",\"name\":\"KA1 (A1)\",\"chip\":\"Z80\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"31\",\"conn\":\"J4\",\"conn_pin\":\"11\",\"also_it\":\"diodo da A1; CTRL, D, F, G, H\",\"also_en\":\"diode from A1; CTRL, D, F, G, H\"},{\"id\":\"KA1B\",\"group\":\"col\",\"name\":\"KA1' (A1)\",\"chip\":\"Z80\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"31\",\"conn\":\"J4\",\"conn_pin\":\"9\",\"also_it\":\"secondo diodo da A1, solo A\",\"also_en\":\"second diode from A1, A only\"},{\"id\":\"KA1C\",\"group\":\"col\",\"name\":\"KA1'' (A1)\",\"chip\":\"Z80\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"31\",\"conn\":\"J4\",\"conn_pin\":\"10\",\"also_it\":\"terzo diodo da A1, solo S\",\"also_en\":\"third diode from A1, S only\"},{\"id\":\"KA2\",\"group\":\"col\",\"name\":\"KA2 (A2)\",\"chip\":\"Z80\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"32\",\"conn\":\"J4\",\"conn_pin\":\"14\",\"also_it\":\"diodo da A2\",\"also_en\":\"diode from A2\"},{\"id\":\"KA3\",\"group\":\"col\",\"name\":\"KA3 (A3)\",\"chip\":\"Z80\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"33\",\"conn\":\"J4\",\"conn_pin\":\"13\",\"also_it\":\"diodo da A3\",\"also_en\":\"diode from A3\"},{\"id\":\"KA4\",\"group\":\"col\",\"name\":\"KA4 (A4)\",\"chip\":\"Z80\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"34\",\"conn\":\"J4\",\"conn_pin\":\"21\",\"also_it\":\"diodo da A4\",\"also_en\":\"diode from A4\"},{\"id\":\"KA5\",\"group\":\"col\",\"name\":\"KA5 (A5)\",\"chip\":\"Z80\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"35\",\"conn\":\"J4\",\"conn_pin\":\"23\",\"also_it\":\"diodo da A5\",\"also_en\":\"diode from A5\"},{\"id\":\"KA6\",\"group\":\"col\",\"name\":\"KA6 (A6)\",\"chip\":\"Z80\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"36\",\"conn\":\"J4\",\"conn_pin\":\"25\",\"also_it\":\"diodo da A6\",\"also_en\":\"diode from A6\"},{\"id\":\"KA7\",\"group\":\"col\",\"name\":\"KA7 (A7)\",\"chip\":\"Z80\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"37\",\"conn\":\"J4\",\"conn_pin\":\"26\",\"also_it\":\"diodo da A7\",\"also_en\":\"diode from A7\"},{\"id\":\"KAA\",\"group\":\"col\",\"name\":\"A' (74LS138 Q0)\",\"chip\":\"74LS138\",\"chip_part\":\"74LS138 decoder (A8-A10)\",\"chip_pin\":\"15\",\"conn\":\"J4\",\"conn_pin\":\"12\",\"also_it\":\"uscita Q0 tramite diodo, bassa con A10=0, A9=0, A8=0\",\"also_en\":\"output Q0 through a diode, low when A10=0, A9=0, A8=0\"},{\"id\":\"KAB\",\"group\":\"col\",\"name\":\"B' (74LS138 Q1)\",\"chip\":\"74LS138\",\"chip_part\":\"74LS138 decoder (A8-A10)\",\"chip_pin\":\"14\",\"conn\":\"J4\",\"conn_pin\":\"20\",\"also_it\":\"uscita Q1 tramite diodo, bassa con A10=0, A9=0, A8=1\",\"also_en\":\"output Q1 through a diode, low when A10=0, A9=0, A8=1\"},{\"id\":\"KAC\",\"group\":\"col\",\"name\":\"C' (74LS138 Q2)\",\"chip\":\"74LS138\",\"chip_part\":\"74LS138 decoder (A8-A10)\",\"chip_pin\":\"13\",\"conn\":\"J4\",\"conn_pin\":\"27\",\"also_it\":\"uscita Q2 tramite diodo, bassa con A10=0, A9=1, A8=0\",\"also_en\":\"output Q2 through a diode, low when A10=0, A9=1, A8=0\"},{\"id\":\"KAD\",\"group\":\"col\",\"name\":\"D' (74LS138 Q3)\",\"chip\":\"74LS138\",\"chip_part\":\"74LS138 decoder (A8-A10)\",\"chip_pin\":\"12\",\"conn\":\"J4\",\"conn_pin\":\"28\",\"also_it\":\"uscita Q3 tramite diodo, bassa con A10=0, A9=1, A8=1\",\"also_en\":\"output Q3 through a diode, low when A10=0, A9=1, A8=1\"},{\"id\":\"KD0\",\"group\":\"row\",\"name\":\"KD0\",\"chip\":\"74LS244\",\"chip_part\":\"74LS244 buffer\",\"chip_pin\":\"6\",\"conn\":\"J4\",\"conn_pin\":\"15\",\"also_it\":\"pull-up 4,7 k\u03a9 a +5V; uscita sul pin 14 (D0 del bus dati)\",\"also_en\":\"4.7 k\u03a9 pull-up to +5V; output on pin 14 (data bus D0)\"},{\"id\":\"KD1\",\"group\":\"row\",\"name\":\"KD1\",\"chip\":\"74LS244\",\"chip_part\":\"74LS244 buffer\",\"chip_pin\":\"8\",\"conn\":\"J4\",\"conn_pin\":\"17\",\"also_it\":\"pull-up 4,7 k\u03a9 a +5V; uscita sul pin 12 (D1 del bus dati)\",\"also_en\":\"4.7 k\u03a9 pull-up to +5V; output on pin 12 (data bus D1)\"},{\"id\":\"KD2\",\"group\":\"row\",\"name\":\"KD2\",\"chip\":\"74LS244\",\"chip_part\":\"74LS244 buffer\",\"chip_pin\":\"2\",\"conn\":\"J4\",\"conn_pin\":\"18\",\"also_it\":\"pull-up 4,7 k\u03a9 a +5V; uscita sul pin 18 (D2 del bus dati)\",\"also_en\":\"4.7 k\u03a9 pull-up to +5V; output on pin 18 (data bus D2)\"},{\"id\":\"KD3\",\"group\":\"row\",\"name\":\"KD3\",\"chip\":\"74LS244\",\"chip_part\":\"74LS244 buffer\",\"chip_pin\":\"15\",\"conn\":\"J4\",\"conn_pin\":\"16\",\"also_it\":\"pull-up 4,7 k\u03a9 a +5V; uscita sul pin 5 (D3 del bus dati)\",\"also_en\":\"4.7 k\u03a9 pull-up to +5V; output on pin 5 (data bus D3)\"},{\"id\":\"KD4\",\"group\":\"row\",\"name\":\"KD4\",\"chip\":\"74LS244\",\"chip_part\":\"74LS244 buffer\",\"chip_pin\":\"17\",\"conn\":\"J4\",\"conn_pin\":\"19\",\"also_it\":\"pull-up 4,7 k\u03a9 a +5V; uscita sul pin 3 (D4 del bus dati)\",\"also_en\":\"4.7 k\u03a9 pull-up to +5V; output on pin 3 (data bus D4)\"},{\"id\":\"KD5\",\"group\":\"row\",\"name\":\"KD5\",\"chip\":\"74LS244\",\"chip_part\":\"74LS244 buffer\",\"chip_pin\":\"13\",\"conn\":\"J4\",\"conn_pin\":\"22\",\"also_it\":\"pull-up 4,7 k\u03a9 a +5V; uscita sul pin 7 (D5 del bus dati)\",\"also_en\":\"4.7 k\u03a9 pull-up to +5V; output on pin 7 (data bus D5)\"},{\"id\":\"KD6\",\"group\":\"row\",\"name\":\"KD6\",\"chip\":\"74LS244\",\"chip_part\":\"74LS244 buffer\",\"chip_pin\":\"11\",\"conn\":\"J4\",\"conn_pin\":\"24\",\"also_it\":\"pull-up 4,7 k\u03a9 a +5V; uscita sul pin 9 (D6 del bus dati)\",\"also_en\":\"4.7 k\u03a9 pull-up to +5V; output on pin 9 (data bus D6)\"},{\"id\":\"RESET\",\"group\":\"extra\",\"name\":\"RESET\",\"chip\":\"Z80\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"26\",\"conn\":\"J4\",\"conn_pin\":\"5\",\"also_it\":\"verso \/RESET della CPU\",\"also_en\":\"to the CPU \/RESET\"},{\"id\":\"CAPLK\",\"group\":\"extra\",\"name\":\"CAPLK\",\"chip\":\"GA1\",\"chip_part\":\"VTL-0390-00-00 gate array\",\"chip_pin\":\"41\",\"conn\":\"J4\",\"conn_pin\":\"4\",\"also_it\":\"pilota il LED CAPS LOCK\",\"also_en\":\"drives the CAPS LOCK LED\"}],\"connector\":{\"ref\":\"J4\",\"it\":\"Connettore tastiera J4, 28 pin (scheda madre)\",\"en\":\"J4 keyboard connector, 28 pins (main board)\",\"pins\":[{\"n\":\"1\",\"sig\":\"LED\",\"note_it\":\"LED di accensione, anodo (470 \u03a9 da +5V)\",\"note_en\":\"power LED, anode (470 \u03a9 from +5V)\"},{\"n\":\"2\",\"sig\":\"GND\",\"note_it\":\"massa (catodo LED, tasto RESET)\",\"note_en\":\"ground (LED cathode, RESET key)\"},{\"n\":\"3\",\"sig\":\"CAPLKPW\",\"note_it\":\"LED CAPS LOCK, anodo (470 \u03a9 da +5V)\",\"note_en\":\"CAPS LOCK LED, anode (470 \u03a9 from +5V)\"},{\"n\":\"4\",\"sig\":\"CAPLK\",\"note_it\":\"LED CAPS LOCK, catodo; da GA1 pin 41\",\"note_en\":\"CAPS LOCK LED, cathode; from GA1 pin 41\"},{\"n\":\"5\",\"sig\":\"RESET\"},{\"n\":\"6\",\"sig\":\"KA0\"},{\"n\":\"7\",\"sig\":\"KA0B\",\"note_it\":\"linea KA0' sullo schema\",\"note_en\":\"line KA0' on the schematic\"},{\"n\":\"8\",\"sig\":\"KA0C\",\"note_it\":\"linea KA0'' sullo schema\",\"note_en\":\"line KA0'' on the schematic\"},{\"n\":\"9\",\"sig\":\"KA1B\",\"note_it\":\"linea KA1' sullo schema\",\"note_en\":\"line KA1' on the schematic\"},{\"n\":\"10\",\"sig\":\"KA1C\",\"note_it\":\"linea KA1'' sullo schema\",\"note_en\":\"line KA1'' on the schematic\"},{\"n\":\"11\",\"sig\":\"KA1\"},{\"n\":\"12\",\"sig\":\"KAA\",\"note_it\":\"linea A' sullo schema\",\"note_en\":\"line A' on the schematic\"},{\"n\":\"13\",\"sig\":\"KA3\"},{\"n\":\"14\",\"sig\":\"KA2\"},{\"n\":\"15\",\"sig\":\"KD0\"},{\"n\":\"16\",\"sig\":\"KD3\"},{\"n\":\"17\",\"sig\":\"KD1\"},{\"n\":\"18\",\"sig\":\"KD2\"},{\"n\":\"19\",\"sig\":\"KD4\"},{\"n\":\"20\",\"sig\":\"KAB\",\"note_it\":\"linea B' sullo schema\",\"note_en\":\"line B' on the schematic\"},{\"n\":\"21\",\"sig\":\"KA4\"},{\"n\":\"22\",\"sig\":\"KD5\"},{\"n\":\"23\",\"sig\":\"KA5\"},{\"n\":\"24\",\"sig\":\"KD6\"},{\"n\":\"25\",\"sig\":\"KA6\"},{\"n\":\"26\",\"sig\":\"KA7\"},{\"n\":\"27\",\"sig\":\"KAC\",\"note_it\":\"linea C' sullo schema\",\"note_en\":\"line C' on the schematic\"},{\"n\":\"28\",\"sig\":\"KAD\",\"note_it\":\"linea D' sullo schema\",\"note_en\":\"line D' on the schematic\"}]},\"layout\":[{\"id\":\"f1\",\"t\":\"F1\",\"x\":0.0,\"y\":0,\"w\":1.5,\"h\":1},{\"id\":\"f2\",\"t\":\"F2\",\"x\":1.5,\"y\":0,\"w\":1.5,\"h\":1},{\"id\":\"f3\",\"t\":\"F3\",\"x\":3.0,\"y\":0,\"w\":1.5,\"h\":1},{\"id\":\"f4\",\"t\":\"F4\",\"x\":4.5,\"y\":0,\"w\":1.5,\"h\":1},{\"id\":\"f5\",\"t\":\"F5\",\"x\":6.0,\"y\":0,\"w\":1.5,\"h\":1},{\"id\":\"f6\",\"t\":\"F6\",\"x\":7.5,\"y\":0,\"w\":1.5,\"h\":1},{\"id\":\"f7\",\"t\":\"F7\",\"x\":9.0,\"y\":0,\"w\":1.5,\"h\":1},{\"id\":\"f8\",\"t\":\"F8\",\"x\":10.5,\"y\":0,\"w\":1.5,\"h\":1},{\"id\":\"f9\",\"t\":\"F9\",\"x\":12.0,\"y\":0,\"w\":1.5,\"h\":1},{\"id\":\"f10\",\"t\":\"F10\",\"x\":13.5,\"y\":0,\"w\":1.5,\"h\":1},{\"id\":\"ins\",\"t\":\"INS\",\"x\":16,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"del\",\"t\":\"DEL\",\"x\":17,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"esc\",\"t\":\"ESC\",\"x\":0,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"1\",\"t\":\"1\",\"t2\":\"!\",\"x\":1,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"2\",\"t\":\"2\",\"t2\":\"@\",\"x\":2,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"3\",\"t\":\"3\",\"t2\":\"#\",\"x\":3,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"4\",\"t\":\"4\",\"t2\":\"$\",\"x\":4,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"5\",\"t\":\"5\",\"t2\":\"%\",\"x\":5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"6\",\"t\":\"6\",\"t2\":\"^\",\"x\":6,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"7\",\"t\":\"7\",\"t2\":\"&\",\"x\":7,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"8\",\"t\":\"8\",\"t2\":\"*\",\"x\":8,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"9\",\"t\":\"9\",\"t2\":\"(\",\"x\":9,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"0\",\"t\":\"0\",\"t2\":\")\",\"x\":10,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"minus\",\"t\":\"-\",\"t2\":\"_\",\"x\":11,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"equal\",\"t\":\"=\",\"t2\":\"+\",\"x\":12,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"backslash\",\"t\":\"\\\\\",\"t2\":\"|\",\"x\":13,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"bs\",\"t\":\"BS\",\"x\":14,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"dline\",\"t\":\"DEL LINE\",\"x\":16,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"clshome\",\"t\":\"CLS HOME\",\"x\":17,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"tab\",\"t\":\"TAB\",\"x\":0,\"y\":2,\"w\":1.5,\"h\":1},{\"id\":\"q\",\"t\":\"Q\",\"x\":1.5,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"w\",\"t\":\"W\",\"x\":2.5,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"e\",\"t\":\"E\",\"x\":3.5,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"r\",\"t\":\"R\",\"x\":4.5,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"t\",\"t\":\"T\",\"x\":5.5,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"y\",\"t\":\"Y\",\"x\":6.5,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"u\",\"t\":\"U\",\"x\":7.5,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"i\",\"t\":\"I\",\"x\":8.5,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"o\",\"t\":\"O\",\"x\":9.5,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"p\",\"t\":\"P\",\"x\":10.5,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"lbracket\",\"t\":\"[\",\"t2\":\"{\",\"x\":11.5,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"rbracket\",\"t\":\"]\",\"t2\":\"}\",\"x\":12.5,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"return\",\"t\":\"RETURN\",\"x\":13.5,\"y\":2,\"w\":1.5,\"h\":1},{\"id\":\"ctrl\",\"t\":\"CTRL\",\"x\":0.25,\"y\":3,\"w\":1.5,\"h\":1},{\"id\":\"a\",\"t\":\"A\",\"x\":1.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"s\",\"t\":\"S\",\"x\":2.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"d\",\"t\":\"D\",\"x\":3.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"f\",\"t\":\"F\",\"x\":4.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"g\",\"t\":\"G\",\"x\":5.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"h\",\"t\":\"H\",\"x\":6.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"j\",\"t\":\"J\",\"x\":7.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"k\",\"t\":\"K\",\"x\":8.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"l\",\"t\":\"L\",\"x\":9.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"semicolon\",\"t\":\";\",\"t2\":\":\",\"x\":10.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"quote\",\"t\":\"'\",\"t2\":\"\\\"\",\"x\":11.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"backquote\",\"t\":\"`\",\"t2\":\"~\",\"x\":12.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"graph\",\"t\":\"GRAPH\",\"x\":13.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"up\",\"t\":\"\u2191\",\"x\":16.25,\"y\":3,\"w\":1.5,\"h\":1},{\"id\":\"lshift\",\"t\":\"SHIFT\",\"x\":0.6,\"y\":4,\"w\":1.5,\"h\":1},{\"id\":\"z\",\"t\":\"Z\",\"x\":2.1,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"x\",\"t\":\"X\",\"x\":3.1,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"c\",\"t\":\"C\",\"x\":4.1,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"v\",\"t\":\"V\",\"x\":5.1,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"b\",\"t\":\"B\",\"x\":6.1,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"n\",\"t\":\"N\",\"x\":7.1,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"m\",\"t\":\"M\",\"x\":8.1,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"comma\",\"t\":\",\",\"t2\":\"<\",\"x\":9.1,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"period\",\"t\":\".\",\"t2\":\">\",\"x\":10.1,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"slash\",\"t\":\"\/\",\"t2\":\"?\",\"x\":11.1,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"mu\",\"t\":\"\u00b5\",\"t2\":\"\u00a3\",\"x\":12.1,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"rshift\",\"t\":\"SHIFT\",\"x\":13.1,\"y\":4,\"w\":1.5,\"h\":1},{\"id\":\"left\",\"t\":\"\u2190\",\"x\":15.5,\"y\":4,\"w\":1.5,\"h\":1},{\"id\":\"right\",\"t\":\"\u2192\",\"x\":17,\"y\":4,\"w\":1.5,\"h\":1},{\"id\":\"reset\",\"t\":\"RESET\",\"x\":2.1,\"y\":5,\"w\":1,\"h\":1},{\"id\":\"caplock\",\"t\":\"CAP LOCK\",\"x\":3.1,\"y\":5,\"w\":1.5,\"h\":1},{\"id\":\"space\",\"t\":\"SPACE\",\"x\":4.6,\"y\":5,\"w\":7.1,\"h\":1},{\"id\":\"down\",\"t\":\"\u2193\",\"x\":16.25,\"y\":5,\"w\":1.5,\"h\":1}],\"matrix\":{\"lshift\":[\"KA0\",\"KD6\"],\"c\":[\"KA0\",\"KD3\"],\"v\":[\"KA0\",\"KD2\"],\"b\":[\"KA0\",\"KD1\"],\"n\":[\"KA0\",\"KD0\"],\"rshift\":[\"KA0\",\"KD6\"],\"z\":[\"KA0B\",\"KD5\"],\"x\":[\"KA0C\",\"KD4\"],\"ctrl\":[\"KA1\",\"KD6\"],\"d\":[\"KA1\",\"KD3\"],\"f\":[\"KA1\",\"KD2\"],\"g\":[\"KA1\",\"KD1\"],\"h\":[\"KA1\",\"KD0\"],\"a\":[\"KA1B\",\"KD5\"],\"s\":[\"KA1C\",\"KD4\"],\"tab\":[\"KA2\",\"KD6\"],\"q\":[\"KA2\",\"KD5\"],\"w\":[\"KA2\",\"KD4\"],\"e\":[\"KA2\",\"KD3\"],\"r\":[\"KA2\",\"KD2\"],\"t\":[\"KA2\",\"KD1\"],\"y\":[\"KA2\",\"KD0\"],\"esc\":[\"KA3\",\"KD6\"],\"1\":[\"KA3\",\"KD5\"],\"2\":[\"KA3\",\"KD4\"],\"3\":[\"KA3\",\"KD3\"],\"4\":[\"KA3\",\"KD2\"],\"5\":[\"KA3\",\"KD1\"],\"6\":[\"KA3\",\"KD0\"],\"equal\":[\"KA4\",\"KD5\"],\"minus\":[\"KA4\",\"KD4\"],\"0\":[\"KA4\",\"KD3\"],\"9\":[\"KA4\",\"KD2\"],\"8\":[\"KA4\",\"KD1\"],\"7\":[\"KA4\",\"KD0\"],\"bs\":[\"KA5\",\"KD6\"],\"p\":[\"KA5\",\"KD3\"],\"o\":[\"KA5\",\"KD2\"],\"i\":[\"KA5\",\"KD1\"],\"u\":[\"KA5\",\"KD0\"],\"return\":[\"KA6\",\"KD6\"],\"quote\":[\"KA6\",\"KD4\"],\"semicolon\":[\"KA6\",\"KD3\"],\"l\":[\"KA6\",\"KD2\"],\"k\":[\"KA6\",\"KD1\"],\"j\":[\"KA6\",\"KD0\"],\"graph\":[\"KA7\",\"KD6\"],\"backquote\":[\"KA7\",\"KD5\"],\"space\":[\"KA7\",\"KD4\"],\"slash\":[\"KA7\",\"KD3\"],\"period\":[\"KA7\",\"KD2\"],\"comma\":[\"KA7\",\"KD1\"],\"m\":[\"KA7\",\"KD0\"],\"f1\":[\"KAA\",\"KD5\"],\"f2\":[\"KAA\",\"KD4\"],\"f3\":[\"KAA\",\"KD3\"],\"f4\":[\"KAA\",\"KD2\"],\"f10\":[\"KAB\",\"KD5\"],\"f9\":[\"KAB\",\"KD4\"],\"f8\":[\"KAB\",\"KD3\"],\"f7\":[\"KAB\",\"KD2\"],\"f6\":[\"KAB\",\"KD1\"],\"f5\":[\"KAB\",\"KD0\"],\"caplock\":[\"KAC\",\"KD6\"],\"dline\":[\"KAC\",\"KD5\"],\"clshome\":[\"KAC\",\"KD4\"],\"up\":[\"KAC\",\"KD3\"],\"left\":[\"KAC\",\"KD2\"],\"right\":[\"KAC\",\"KD1\"],\"down\":[\"KAC\",\"KD0\"],\"backslash\":[\"KAD\",\"KD5\"],\"rbracket\":[\"KAD\",\"KD4\"],\"lbracket\":[\"KAD\",\"KD3\"],\"mu\":[\"KAD\",\"KD2\"],\"del\":[\"KAD\",\"KD1\"],\"ins\":[\"KAD\",\"KD0\"]},\"special\":{\"reset\":{\"lines\":[\"RESET\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: chiude il pin 5 di J4 (RESET) verso massa (pin 2) e porta direttamente basso il \/RESET della CPU. La ROM riconosce il reset a caldo e torna al prompt senza cancellare il programma BASIC.\",\"en\":\"Not in the matrix: it shorts J4 pin 5 (RESET) to ground (pin 2) and pulls the CPU \/RESET low directly. The ROM recognises the warm reset and returns to the prompt without clearing the BASIC program.\"},\"rshift\":{\"lines\":[\"KA0\",\"KD6\"],\"it\":\"Sullo schema c'\u00e8 un solo SHIFT (KA0\/KD6): i due tasti SHIFT sono in parallelo sulle stesse linee e il computer non li distingue.\",\"en\":\"The schematic shows a single SHIFT (KA0\/KD6): both SHIFT keys are wired in parallel on the same lines and the computer cannot tell them apart.\"}},\"notes_it\":[\"Non c'\u00e8 un chip dedicato alla tastiera: le righe sono le linee di indirizzo della CPU. Leggendo l'area I\/O mappata in memoria (banco 2, di solito 6800h-6FFFh) la ROM mette a 0 le linee A0-A7 da interrogare; A8-A10 vanno al 74LS138, che con A10=0 abilita una delle quattro righe extra A'-D' (tasti funzione, cursori e tasti di editing). Ogni riga passa per un diodo, cos\u00ec una riga attiva non cortocircuita le altre linee di indirizzo.\",\"Le colonne KD0-KD6 hanno un pull-up da 4,7 k\u03a9 ed entrano nel buffer 74LS244, abilitato dal segnale \/IO del gate array GA1 (VTL-0390); il bit 7 dello stesso buffer \u00e8 l'ingresso cassetta (CASIN). Se non va nessun tasto controllare il 74LS244, la sua abilitazione da GA1 e il cavo su J4.\",\"Un'intera colonna morta (per esempio C, D, E, 3, 0, P, ;, \/, F3, F8, \u2191, [) indica la linea KD3: pista, pull-up o pin 15 del 74LS244. Una riga morta indica il diodo di quella riga o la linea di indirizzo; se mancano insieme F1-F4, F5-F10, i cursori o INS\/DEL\/[ ] \\\\ \u00b5 guardare il 74LS138 e i diodi di A'-D'.\",\"Z\/X e A\/S hanno ciascuno un diodo proprio (KA0', KA0'', KA1', KA1'') pur essendo su A0 e A1: se smette di funzionare solo Z, solo X, solo A o solo S, il primo sospettato \u00e8 il diodo di quella linea o il relativo pin 7, 8, 9 o 10 di J4.\",\"La lingua della ROM si sceglie con un ponticello nella matrice: un collegamento fisso tra KA5 e KD5 seleziona il francese (AZERTY), tra KA5 e KD4 il tedesco (QWERTZ); senza ponticello inglese (QWERTY). Una macchina inglese che parte in francese o tedesco ha KD5 o KD4 in corto verso KA5 (J4 pin 23 con 22 o 19).\",\"La tastiera del Laser 700 \u00e8 la stessa del Laser 500; il Laser 350 usa una tastiera ridotta senza ESC, TAB, BS, GRAPH, tasti funzione, cursori e tasti di editing.\"],\"notes_en\":[\"There is no dedicated keyboard chip: the rows are the CPU address lines. When the ROM reads the memory-mapped I\/O area (bank 2, normally 6800h-6FFFh) it pulls low the A0-A7 lines it wants to scan; A8-A10 go to the 74LS138, which with A10=0 enables one of the four extra rows A'-D' (function keys, cursor keys and editing keys). Every row goes through a diode, so an active row does not short the other address lines.\",\"Columns KD0-KD6 have a 4.7 k\u03a9 pull-up and go into the 74LS244 buffer, enabled by the \/IO signal of gate array GA1 (VTL-0390); bit 7 of the same buffer is the cassette input (CASIN). If no key works at all, check the 74LS244, its enable from GA1 and the cable on J4.\",\"A whole dead column (for example C, D, E, 3, 0, P, ;, \/, F3, F8, \u2191, [) points to line KD3: track, pull-up or 74LS244 pin 15. A dead row points to that row's diode or address line; if F1-F4, F5-F10, the cursor keys or INS\/DEL\/[ ] \\\\ \u00b5 fail together, look at the 74LS138 and the A'-D' diodes.\",\"Z\/X and A\/S each have their own diode (KA0', KA0'', KA1', KA1'') even though they sit on A0 and A1: if only Z, only X, only A or only S stops working, the first suspect is that line's diode or the matching J4 pin 7, 8, 9 or 10.\",\"The ROM language is chosen by a link in the matrix: a fixed connection between KA5 and KD5 selects French (AZERTY), between KA5 and KD4 German (QWERTZ); with no link it is English (QWERTY). An English machine that starts up in French or German has KD5 or KD4 shorted to KA5 (J4 pin 23 to 22 or 19).\",\"The Laser 700 keyboard is the same as the Laser 500's; the Laser 350 uses a reduced keyboard without ESC, TAB, BS, GRAPH, function keys, cursor keys and editing keys.\"],\"board_it\":\"scheda madre del Laser 500 (PAL), schemi VTech fogli 1-6 (Main Unit Manual, appendice L); lo schema non riporta le sigle dei componenti\",\"board_en\":\"Laser 500 (PAL) main board, VTech circuit diagram sheets 1-6 (Main Unit Manual, Appendix L); the schematic gives no component references\"},\"msx1\":{\"id\":\"msx1\",\"name\":\"Philips VG-8020\/00 (MSX1) \/ Phonola VG-8020\",\"sources\":[{\"t\":\"Philips VG-8020\/00 service manual (scan by Hans Otten): keyboard matrix, JN1\/JN2, U18 8255A, U19 74LS145, U52 4050\",\"u\":\"https:\/\/hansotten.file-hunter.com\/uploads\/files\/philipsvg802000sm.pdf\"},{\"t\":\"MAME src\/mame\/msx\/msx_keyboard.cpp (INPUT_PORTS msx, KEY0-KEY8) and msx.cpp (ppi_port_c_w \/ ppi_port_b_r)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/mame\/msx\/msx_keyboard.cpp\"},{\"t\":\"MSX Resource Center wiki: Keyboard Matrices (international matrix)\",\"u\":\"https:\/\/www.msx.org\/wiki\/Keyboard_Matrices\"},{\"t\":\"MSX Resource Center wiki: Philips VG-8020 \/ Phonola VG-8020 (variants, photos used for the layout)\",\"u\":\"https:\/\/www.msx.org\/wiki\/Phonola_VG-8020\"}],\"scan_it\":\"L'8255A U18 (PPI) scrive il numero della riga da leggere su PC0-PC3 (pin 14-17). Il 74LS145 U19 (decodificatore BCD\/decimale, uscite open collector) lo riceve sui pin 15, 14, 13, 12 e porta bassa una sola delle uscite Y0-Y8. Le colonne X0-X7 tornano sulla porta B del PPI, PB0-PB7 (pin 18-25), tenute alte dalla rete di pull-up da 4k7 RA3; X0, X2 e X4 passano prima dai buffer 4050 U52-1\/2\/3. Un tasto premuto collega la riga selezionata (bassa) alla sua colonna, che viene letta a 0. Il BIOS legge le righe 0-8 una alla volta (porta I\/O AAh per scrivere la riga, A9h per leggere le colonne).\",\"scan_en\":\"The 8255A U18 (PPI) writes the number of the row to scan on PC0-PC3 (pins 14-17). The 74LS145 U19 (BCD-to-decimal decoder, open-collector outputs) takes it on pins 15, 14, 13, 12 and pulls exactly one of outputs Y0-Y8 low. Columns X0-X7 come back on PPI port B, PB0-PB7 (pins 18-25), held high by the 4k7 pull-up network RA3; X0, X2 and X4 go through 4050 buffers U52-1\/2\/3 first. A pressed key connects the selected (low) row to its column, which then reads 0. The BIOS scans rows 0-8 one at a time (I\/O port AAh to write the row, A9h to read the columns).\",\"lines\":[{\"id\":\"Y0\",\"group\":\"col\",\"name\":\"Y0\",\"chip\":\"U19\",\"chip_part\":\"74LS145\",\"chip_pin\":\"1\",\"conn_pin\":\"1\",\"also\":\"\"},{\"id\":\"Y1\",\"group\":\"col\",\"name\":\"Y1\",\"chip\":\"U19\",\"chip_part\":\"74LS145\",\"chip_pin\":\"2\",\"conn_pin\":\"2\",\"also\":\"\"},{\"id\":\"Y2\",\"group\":\"col\",\"name\":\"Y2\",\"chip\":\"U19\",\"chip_part\":\"74LS145\",\"chip_pin\":\"3\",\"conn_pin\":\"3\",\"also\":\"\"},{\"id\":\"Y3\",\"group\":\"col\",\"name\":\"Y3\",\"chip\":\"U19\",\"chip_part\":\"74LS145\",\"chip_pin\":\"4\",\"conn_pin\":\"4\",\"also\":\"\"},{\"id\":\"Y4\",\"group\":\"col\",\"name\":\"Y4\",\"chip\":\"U19\",\"chip_part\":\"74LS145\",\"chip_pin\":\"5\",\"conn_pin\":\"5\",\"also\":\"\"},{\"id\":\"Y5\",\"group\":\"col\",\"name\":\"Y5\",\"chip\":\"U19\",\"chip_part\":\"74LS145\",\"chip_pin\":\"6\",\"conn_pin\":\"6\",\"also\":\"\"},{\"id\":\"Y6\",\"group\":\"col\",\"name\":\"Y6\",\"chip\":\"U19\",\"chip_part\":\"74LS145\",\"chip_pin\":\"7\",\"conn_pin\":\"7\",\"also_it\":\"pilota anche, tramite il buffer 4050 U52-6 (pin 14 \u2192 15, pull-up R71 1k), le linee Y9-Y11\",\"also_en\":\"also drives lines Y9-Y11 through 4050 buffer U52-6 (pin 14 \u2192 15, R71 1k pull-up)\"},{\"id\":\"Y7\",\"group\":\"col\",\"name\":\"Y7\",\"chip\":\"U19\",\"chip_part\":\"74LS145\",\"chip_pin\":\"9\",\"conn_pin\":\"8\",\"also\":\"\"},{\"id\":\"Y8\",\"group\":\"col\",\"name\":\"Y8\",\"chip\":\"U19\",\"chip_part\":\"74LS145\",\"chip_pin\":\"10\",\"conn_pin\":\"9\",\"also\":\"\"},{\"id\":\"Y9\",\"group\":\"col\",\"name\":\"Y9\",\"chip\":\"U52\",\"chip_part\":\"4050 (U52-6)\",\"chip_pin\":\"15\",\"conn_pin\":\"10\",\"also_it\":\"diodo D1 (1S2076) verso U52-6 pin 15, copia di Y6; nessun tasto nella tabella del manuale\",\"also_en\":\"diode D1 (1S2076) to U52-6 pin 15, a copy of Y6; no key on it in the service manual table\"},{\"id\":\"Y10\",\"group\":\"col\",\"name\":\"Y10\",\"chip\":\"U52\",\"chip_part\":\"4050 (U52-6)\",\"chip_pin\":\"15\",\"conn_pin\":\"11\",\"also_it\":\"diodo D2 (1S2076) verso U52-6 pin 15, copia di Y6; nessun tasto nella tabella del manuale\",\"also_en\":\"diode D2 (1S2076) to U52-6 pin 15, a copy of Y6; no key on it in the service manual table\"},{\"id\":\"Y11\",\"group\":\"col\",\"name\":\"Y11\",\"chip\":\"U52\",\"chip_part\":\"4050 (U52-6)\",\"chip_pin\":\"15\",\"conn_pin\":\"12\",\"also_it\":\"diodo D3 (1S2076) verso U52-6 pin 15, copia di Y6; nessun tasto nella tabella del manuale\",\"also_en\":\"diode D3 (1S2076) to U52-6 pin 15, a copy of Y6; no key on it in the service manual table\"},{\"id\":\"X0\",\"group\":\"row\",\"name\":\"X0\",\"chip\":\"U18\",\"chip_part\":\"8255A PPI (PB0)\",\"chip_pin\":\"18\",\"conn_pin\":\"1\",\"also_it\":\"pull-up 4k7 RA3 pin 9; passa dal buffer 4050 U52-1 (pin 3 \u2192 2) prima del PPI\",\"also_en\":\"4k7 pull-up RA3 pin 9; goes through 4050 buffer U52-1 (pin 3 \u2192 2) before the PPI\"},{\"id\":\"X1\",\"group\":\"row\",\"name\":\"X1\",\"chip\":\"U18\",\"chip_part\":\"8255A PPI (PB1)\",\"chip_pin\":\"19\",\"conn_pin\":\"2\",\"also_it\":\"pull-up 4k7 RA3 pin 8, diretta al PPI\",\"also_en\":\"4k7 pull-up RA3 pin 8, straight to the PPI\"},{\"id\":\"X2\",\"group\":\"row\",\"name\":\"X2\",\"chip\":\"U18\",\"chip_part\":\"8255A PPI (PB2)\",\"chip_pin\":\"20\",\"conn_pin\":\"3\",\"also_it\":\"pull-up 4k7 RA3 pin 7; passa dal buffer 4050 U52-2 (pin 5 \u2192 4) prima del PPI\",\"also_en\":\"4k7 pull-up RA3 pin 7; goes through 4050 buffer U52-2 (pin 5 \u2192 4) before the PPI\"},{\"id\":\"X3\",\"group\":\"row\",\"name\":\"X3\",\"chip\":\"U18\",\"chip_part\":\"8255A PPI (PB3)\",\"chip_pin\":\"21\",\"conn_pin\":\"4\",\"also_it\":\"pull-up 4k7 RA3 pin 6, diretta al PPI\",\"also_en\":\"4k7 pull-up RA3 pin 6, straight to the PPI\"},{\"id\":\"X4\",\"group\":\"row\",\"name\":\"X4\",\"chip\":\"U18\",\"chip_part\":\"8255A PPI (PB4)\",\"chip_pin\":\"22\",\"conn_pin\":\"5\",\"also_it\":\"pull-up 4k7 RA3 pin 5; passa dal buffer 4050 U52-3 (pin 7 \u2192 6) prima del PPI\",\"also_en\":\"4k7 pull-up RA3 pin 5; goes through 4050 buffer U52-3 (pin 7 \u2192 6) before the PPI\"},{\"id\":\"X5\",\"group\":\"row\",\"name\":\"X5\",\"chip\":\"U18\",\"chip_part\":\"8255A PPI (PB5)\",\"chip_pin\":\"23\",\"conn_pin\":\"6\",\"also_it\":\"pull-up 4k7 RA3 pin 4, diretta al PPI\",\"also_en\":\"4k7 pull-up RA3 pin 4, straight to the PPI\"},{\"id\":\"X6\",\"group\":\"row\",\"name\":\"X6\",\"chip\":\"U18\",\"chip_part\":\"8255A PPI (PB6)\",\"chip_pin\":\"24\",\"conn_pin\":\"7\",\"also_it\":\"pull-up 4k7 RA3 pin 3, diretta al PPI\",\"also_en\":\"4k7 pull-up RA3 pin 3, straight to the PPI\"},{\"id\":\"X7\",\"group\":\"row\",\"name\":\"X7\",\"chip\":\"U18\",\"chip_part\":\"8255A PPI (PB7)\",\"chip_pin\":\"25\",\"conn_pin\":\"8\",\"also_it\":\"pull-up 4k7 RA3 pin 2, diretta al PPI\",\"also_en\":\"4k7 pull-up RA3 pin 2, straight to the PPI\"}],\"connectors\":[{\"ref\":\"JN1\",\"it\":\"Connettore tastiera righe Y0-Y11 (12 pin)\",\"en\":\"Keyboard connector, rows Y0-Y11 (12-pin)\",\"pins\":[{\"n\":\"1\",\"sig\":\"Y0\"},{\"n\":\"2\",\"sig\":\"Y1\"},{\"n\":\"3\",\"sig\":\"Y2\"},{\"n\":\"4\",\"sig\":\"Y3\"},{\"n\":\"5\",\"sig\":\"Y4\"},{\"n\":\"6\",\"sig\":\"Y5\"},{\"n\":\"7\",\"sig\":\"Y6\"},{\"n\":\"8\",\"sig\":\"Y7\"},{\"n\":\"9\",\"sig\":\"Y8\"},{\"n\":\"10\",\"sig\":\"Y9\",\"note_it\":\"tramite diodo, copia di Y6\",\"note_en\":\"through a diode, copy of Y6\"},{\"n\":\"11\",\"sig\":\"Y10\",\"note_it\":\"tramite diodo, copia di Y6\",\"note_en\":\"through a diode, copy of Y6\"},{\"n\":\"12\",\"sig\":\"Y11\",\"note_it\":\"tramite diodo, copia di Y6\",\"note_en\":\"through a diode, copy of Y6\"}]},{\"ref\":\"JN2\",\"it\":\"Connettore tastiera colonne X0-X7 (8 pin)\",\"en\":\"Keyboard connector, columns X0-X7 (8-pin)\",\"pins\":[{\"n\":\"1\",\"sig\":\"X0\"},{\"n\":\"2\",\"sig\":\"X1\"},{\"n\":\"3\",\"sig\":\"X2\"},{\"n\":\"4\",\"sig\":\"X3\"},{\"n\":\"5\",\"sig\":\"X4\"},{\"n\":\"6\",\"sig\":\"X5\"},{\"n\":\"7\",\"sig\":\"X6\"},{\"n\":\"8\",\"sig\":\"X7\"}]}],\"layout\":[{\"id\":\"f1\",\"t\":\"F1\",\"t2\":\"F6\",\"x\":0.41,\"y\":0.0,\"w\":1.33,\"h\":0.9},{\"id\":\"f2\",\"t\":\"F2\",\"t2\":\"F7\",\"x\":1.86,\"y\":0.0,\"w\":1.33,\"h\":0.9},{\"id\":\"f3\",\"t\":\"F3\",\"t2\":\"F8\",\"x\":3.31,\"y\":0.0,\"w\":1.33,\"h\":0.9},{\"id\":\"f4\",\"t\":\"F4\",\"t2\":\"F9\",\"x\":4.76,\"y\":0.0,\"w\":1.33,\"h\":0.9},{\"id\":\"f5\",\"t\":\"F5\",\"t2\":\"F10\",\"x\":6.21,\"y\":0.0,\"w\":1.33,\"h\":0.9},{\"id\":\"select\",\"t\":\"SELECT\",\"x\":7.66,\"y\":0.0,\"w\":1.33,\"h\":0.9},{\"id\":\"stop\",\"t\":\"STOP\",\"x\":9.11,\"y\":0.0,\"w\":1.33,\"h\":0.9},{\"id\":\"home\",\"t\":\"HOME\",\"t2\":\"CLR\",\"x\":15.74,\"y\":0.0,\"w\":0.95,\"h\":0.9},{\"id\":\"ins\",\"t\":\"INS\",\"x\":16.72,\"y\":0.0,\"w\":0.95,\"h\":0.9},{\"id\":\"del\",\"t\":\"DEL\",\"x\":17.7,\"y\":0.0,\"w\":0.95,\"h\":0.9},{\"id\":\"reset\",\"t\":\"RESET\",\"x\":19.1,\"y\":0.0,\"w\":0.9,\"h\":0.6},{\"id\":\"esc\",\"t\":\"ESC\",\"x\":0.24,\"y\":1,\"w\":0.89,\"h\":1},{\"id\":\"1\",\"t\":\"1\",\"t2\":\"!\",\"x\":1.13,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"2\",\"t\":\"2\",\"t2\":\"@\",\"x\":2.13,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"3\",\"t\":\"3\",\"t2\":\"#\",\"x\":3.13,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"4\",\"t\":\"4\",\"t2\":\"$\",\"x\":4.13,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"5\",\"t\":\"5\",\"t2\":\"%\",\"x\":5.13,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"6\",\"t\":\"6\",\"t2\":\"^\",\"x\":6.13,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"7\",\"t\":\"7\",\"t2\":\"&\",\"x\":7.13,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"8\",\"t\":\"8\",\"t2\":\"*\",\"x\":8.13,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"9\",\"t\":\"9\",\"t2\":\"(\",\"x\":9.13,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"0\",\"t\":\"0\",\"t2\":\")\",\"x\":10.13,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"minus\",\"t\":\"-\",\"t2\":\"_\",\"x\":11.13,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"equal\",\"t\":\"=\",\"t2\":\"+\",\"x\":12.13,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"bslash\",\"t\":\"\\\\\",\"t2\":\"|\",\"x\":13.13,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"bs\",\"t\":\"BS \u2190\",\"x\":14.13,\"y\":1,\"w\":0.95,\"h\":1},{\"id\":\"tab\",\"t\":\"TAB\",\"x\":0.13,\"y\":2,\"w\":1.36,\"h\":1},{\"id\":\"q\",\"t\":\"Q\",\"x\":1.52,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"w\",\"t\":\"W\",\"x\":2.52,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"e\",\"t\":\"E\",\"x\":3.52,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"r\",\"t\":\"R\",\"x\":4.52,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"t\",\"t\":\"T\",\"x\":5.52,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"y\",\"t\":\"Y\",\"x\":6.52,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"u\",\"t\":\"U\",\"x\":7.52,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"i\",\"t\":\"I\",\"x\":8.52,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"o\",\"t\":\"O\",\"x\":9.52,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"p\",\"t\":\"P\",\"x\":10.52,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"lbrack\",\"t\":\"[\",\"t2\":\"{\",\"x\":11.52,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"rbrack\",\"t\":\"]\",\"t2\":\"}\",\"x\":12.52,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"return\",\"t\":\"RETURN \u21b5\",\"x\":13.7,\"y\":2,\"w\":1.38,\"h\":2},{\"id\":\"ctrl\",\"t\":\"CTRL\",\"x\":0.02,\"y\":3,\"w\":1.64,\"h\":1},{\"id\":\"a\",\"t\":\"A\",\"x\":1.69,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"s\",\"t\":\"S\",\"x\":2.69,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"d\",\"t\":\"D\",\"x\":3.69,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"f\",\"t\":\"F\",\"x\":4.69,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"g\",\"t\":\"G\",\"x\":5.69,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"h\",\"t\":\"H\",\"x\":6.69,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"j\",\"t\":\"J\",\"x\":7.69,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"k\",\"t\":\"K\",\"x\":8.69,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"l\",\"t\":\"L\",\"x\":9.69,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"semicolon\",\"t\":\";\",\"t2\":\":\",\"x\":10.69,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"quote\",\"t\":\"'\",\"t2\":\"\\\"\",\"x\":11.69,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"bquote\",\"t\":\"`\",\"t2\":\"~\",\"x\":12.69,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"lshift\",\"t\":\"SHIFT \u2191\",\"x\":0,\"y\":4,\"w\":2.08,\"h\":1},{\"id\":\"z\",\"t\":\"Z\",\"x\":2.11,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"x\",\"t\":\"X\",\"x\":3.11,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"c\",\"t\":\"C\",\"x\":4.11,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"v\",\"t\":\"V\",\"x\":5.11,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"b\",\"t\":\"B\",\"x\":6.11,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"n\",\"t\":\"N\",\"x\":7.11,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"m\",\"t\":\"M\",\"x\":8.11,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"comma\",\"t\":\",\",\"t2\":\"<\",\"x\":9.11,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"period\",\"t\":\".\",\"t2\":\">\",\"x\":10.11,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"slash\",\"t\":\"\/\",\"t2\":\"?\",\"x\":11.11,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"rshift\",\"t\":\"SHIFT \u2191\",\"x\":12.36,\"y\":4,\"w\":1.7,\"h\":1},{\"id\":\"dead\",\"t\":\"` ^\",\"t2\":\"\u00b4 \u00a8\",\"x\":14.13,\"y\":4,\"w\":0.95,\"h\":1},{\"id\":\"caps\",\"t\":\"CAPS \u21e7\",\"x\":2.0,\"y\":5,\"w\":0.97,\"h\":1},{\"id\":\"graph\",\"t\":\"GRPH\",\"x\":3.02,\"y\":5,\"w\":0.97,\"h\":1},{\"id\":\"space\",\"t\":\"SPACE\",\"x\":4.02,\"y\":5,\"w\":8.3,\"h\":1},{\"id\":\"code\",\"t\":\"CODE\",\"x\":12.41,\"y\":5,\"w\":0.95,\"h\":1},{\"id\":\"up\",\"t\":\"\u2191\",\"x\":16.9,\"y\":1.9,\"w\":1.2,\"h\":0.8},{\"id\":\"left\",\"t\":\"\u2190\",\"x\":15.9,\"y\":2.7,\"w\":0.95,\"h\":1.3},{\"id\":\"right\",\"t\":\"\u2192\",\"x\":18.05,\"y\":2.7,\"w\":0.95,\"h\":1.3},{\"id\":\"down\",\"t\":\"\u2193\",\"x\":16.9,\"y\":4.0,\"w\":1.2,\"h\":0.8}],\"matrix\":{\"0\":[\"Y0\",\"X0\"],\"1\":[\"Y0\",\"X1\"],\"2\":[\"Y0\",\"X2\"],\"3\":[\"Y0\",\"X3\"],\"4\":[\"Y0\",\"X4\"],\"5\":[\"Y0\",\"X5\"],\"6\":[\"Y0\",\"X6\"],\"7\":[\"Y0\",\"X7\"],\"8\":[\"Y1\",\"X0\"],\"9\":[\"Y1\",\"X1\"],\"minus\":[\"Y1\",\"X2\"],\"equal\":[\"Y1\",\"X3\"],\"bslash\":[\"Y1\",\"X4\"],\"lbrack\":[\"Y1\",\"X5\"],\"rbrack\":[\"Y1\",\"X6\"],\"semicolon\":[\"Y1\",\"X7\"],\"quote\":[\"Y2\",\"X0\"],\"bquote\":[\"Y2\",\"X1\"],\"comma\":[\"Y2\",\"X2\"],\"period\":[\"Y2\",\"X3\"],\"slash\":[\"Y2\",\"X4\"],\"dead\":[\"Y2\",\"X5\"],\"a\":[\"Y2\",\"X6\"],\"b\":[\"Y2\",\"X7\"],\"c\":[\"Y3\",\"X0\"],\"d\":[\"Y3\",\"X1\"],\"e\":[\"Y3\",\"X2\"],\"f\":[\"Y3\",\"X3\"],\"g\":[\"Y3\",\"X4\"],\"h\":[\"Y3\",\"X5\"],\"i\":[\"Y3\",\"X6\"],\"j\":[\"Y3\",\"X7\"],\"k\":[\"Y4\",\"X0\"],\"l\":[\"Y4\",\"X1\"],\"m\":[\"Y4\",\"X2\"],\"n\":[\"Y4\",\"X3\"],\"o\":[\"Y4\",\"X4\"],\"p\":[\"Y4\",\"X5\"],\"q\":[\"Y4\",\"X6\"],\"r\":[\"Y4\",\"X7\"],\"s\":[\"Y5\",\"X0\"],\"t\":[\"Y5\",\"X1\"],\"u\":[\"Y5\",\"X2\"],\"v\":[\"Y5\",\"X3\"],\"w\":[\"Y5\",\"X4\"],\"x\":[\"Y5\",\"X5\"],\"y\":[\"Y5\",\"X6\"],\"z\":[\"Y5\",\"X7\"],\"ctrl\":[\"Y6\",\"X1\"],\"caps\":[\"Y6\",\"X3\"],\"f1\":[\"Y6\",\"X5\"],\"f2\":[\"Y6\",\"X6\"],\"f3\":[\"Y6\",\"X7\"],\"f4\":[\"Y7\",\"X0\"],\"f5\":[\"Y7\",\"X1\"],\"esc\":[\"Y7\",\"X2\"],\"tab\":[\"Y7\",\"X3\"],\"stop\":[\"Y7\",\"X4\"],\"bs\":[\"Y7\",\"X5\"],\"select\":[\"Y7\",\"X6\"],\"return\":[\"Y7\",\"X7\"],\"space\":[\"Y8\",\"X0\"],\"home\":[\"Y8\",\"X1\"],\"ins\":[\"Y8\",\"X2\"],\"del\":[\"Y8\",\"X3\"],\"left\":[\"Y8\",\"X4\"],\"up\":[\"Y8\",\"X5\"],\"down\":[\"Y8\",\"X6\"],\"right\":[\"Y8\",\"X7\"],\"lshift\":[\"Y6\",\"X0\"],\"rshift\":[\"Y6\",\"X0\"],\"graph\":[\"Y6\",\"X2\"],\"code\":[\"Y6\",\"X4\"]},\"special\":{\"reset\":{\"lines\":[],\"it\":\"Non \u00e8 nella matrice e non \u00e8 sulla tastiera: \u00e8 il pulsante RESET\/RESTART sul pannello posteriore, saldato sulla scheda madre (SW, pin 2-3). Chiude a massa la rete R73\/C36; Q3 (2SC2603) e U41-6 generano il \/RESET della Z80 (U3 pin 26) e degli slot.\",\"en\":\"Not in the matrix and not on the keyboard: it is the RESET\/RESTART button on the rear panel, soldered to the main board (SW, pins 2-3). It grounds the R73\/C36 network; Q3 (2SC2603) and U41-6 produce the \/RESET for the Z80 (U3 pin 26) and the slots.\"},\"caps\":{\"lines\":[\"Y6\",\"X3\"],\"it\":\"CAPS \u00e8 un tasto normale della matrice (Y6\/X3), non a ritenuta: il blocco maiuscole lo gestisce il BIOS. Il LED CAPS sul frontale \u00e8 comandato da PC6 dell'8255 (U18 pin 11) tramite il buffer U39-1 e R33 (220 \u03a9) e arriva al pannello LED su JN3 pin 2 (anodo a +5 V su JN3 pin 4): LED acceso = PC6 basso.\",\"en\":\"CAPS is an ordinary matrix key (Y6\/X3), not a latching one: caps lock is handled by the BIOS. The CAPS LED on the front is driven by 8255 PC6 (U18 pin 11) through buffer U39-1 and R33 (220 \u03a9) and reaches the LED board on JN3 pin 2 (anode at +5 V on JN3 pin 4): LED on = PC6 low.\"},\"rshift\":{\"lines\":[\"Y6\",\"X0\"],\"it\":\"I due SHIFT sono in parallelo sulla stessa coppia di linee (Y6\/X0): il BIOS non li distingue.\",\"en\":\"The two SHIFT keys are wired in parallel on the same pair of lines (Y6\/X0): the BIOS cannot tell them apart.\"}},\"notes_it\":[\"Su MSX il joystick NON \u00e8 nella matrice della tastiera: le due porte joystick vanno al PSG YM2149 U24 (porte I\/O A e B), quindi un joystick o una porta in corto non bloccano i tasti, e viceversa.\",\"Nella terminologia MSX le linee pilotate Y0-Y8 si chiamano \u00abrighe\u00bb (row) e le linee lette X0-X7 \u00abcolonne\u00bb\/bit: qui le Y sono le linee pilotate e le X quelle lette.\",\"Se non va nessun tasto: controllare U19 (74LS145), l'alimentazione di RA3 (pin 1 a +5 V) e U18. Se non va un'intera riga (8 tasti della stessa Y), controllare il pin di U19 e la pista fino a JN1. Se non va un'intera colonna (tasti della stessa X su tutte le righe), controllare JN2, RA3 e, per X0\/X2\/X4, il buffer U52.\",\"I tasti cursore sono nella riga 8 (Y8), insieme a SPACE, HOME, INS e DEL. Il VG-8020 non ha tastierino numerico (righe 9-10 dello standard non usate).\",\"PC4-PC7 dell'8255 non riguardano la tastiera ma vi passano accanto: PC4 motore del registratore (rel\u00e8 RY1), PC5 uscita dati cassetta, PC6 LED CAPS, PC7 click dei tasti (beep).\"],\"notes_en\":[\"On MSX the joystick is NOT in the keyboard matrix: both joystick ports go to the YM2149 PSG U24 (I\/O ports A and B), so a faulty joystick or shorted port does not lock keys, and vice versa.\",\"In MSX terminology the driven lines Y0-Y8 are called \\\"rows\\\" and the read lines X0-X7 \\\"columns\\\"\/bits: here Y are the driven lines and X the read ones.\",\"If no key works: check U19 (74LS145), the supply to RA3 (pin 1 at +5 V) and U18. If a whole row is dead (the 8 keys on one Y), check that U19 pin and the track to JN1. If a whole column is dead (keys on one X across all rows), check JN2, RA3 and, for X0\/X2\/X4, buffer U52.\",\"The cursor keys are on row 8 (Y8), together with SPACE, HOME, INS and DEL. The VG-8020 has no numeric keypad (standard rows 9-10 unused).\",\"PC4-PC7 of the 8255 are not keyboard lines but sit next to them: PC4 cassette motor (relay RY1), PC5 cassette data out, PC6 CAPS LED, PC7 key click (beep).\"],\"board_it\":\"scheda madre Philips VG-8020\/00 (manuale di servizio VG8020\/00); il Phonola VG-8020 italiano \u00e8 la stessa \/00. Non vale per VG-8020\/20 e \/40 (scheda MSX-Engine S-3527)\",\"board_en\":\"Philips VG-8020\/00 main board (service manual VG8020\/00); the Italian Phonola VG-8020 is the same \/00. Not valid for VG-8020\/20 and \/40 (S-3527 MSX-Engine board)\"},\"msx2\":{\"id\":\"msx2\",\"name\":\"Philips NMS 8245 (MSX2) \/ Phonola NMS 8245\",\"sources\":[{\"t\":\"Philips NMS 8245\/00\/16 service manual (scan by Hans Otten): keyboard matrix, CN13\/CN14, U11 S-3527, RA2, D3-D5, LED panel CN11\",\"u\":\"https:\/\/hansotten.file-hunter.com\/uploads\/files\/philipsnms8245sm.pdf\"},{\"t\":\"MAME src\/mame\/msx\/msx_keyboard.cpp (INPUT_PORTS msx) and msx2.cpp (nms8245 uses the international matrix without keypad)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/mame\/msx\/msx2.cpp\"},{\"t\":\"MSX Resource Center wiki: Keyboard Matrices (international matrix, \\\"confirmed on Philips NMS 8245\/00\\\")\",\"u\":\"https:\/\/www.msx.org\/wiki\/Keyboard_Matrices\"},{\"t\":\"MSX Resource Center wiki: Phonola NMS 8245 (Italian version, photo used for the layout)\",\"u\":\"https:\/\/www.msx.org\/wiki\/Phonola_NMS_8245\"}],\"scan_it\":\"Nella NMS 8245 non ci sono 8255 e 74LS145 separati: il PPI e il decodificatore delle righe sono dentro l'MSX-Engine Yamaha S-3527 (U11), che contiene anche il PSG. Il BIOS scrive il numero della riga nei bit 0-3 della porta C del PPI interno (I\/O AAh) e l'S-3527 porta bassa una sola delle uscite Y0-Y8 (pin 74-82; Y9 al pin 83 non \u00e8 collegato). Le colonne X0-X7 entrano sui pin 66-73, tenute alte dalla rete di pull-up da 4k7 RA2, e si leggono come porta B del PPI (I\/O A9h): un tasto premuto porta a 0 il bit della sua colonna. SHIFT, GRAPH e CODE hanno sulla tastiera linee proprie (Y9, Y10, Y11) che la scheda riporta su Y6 tramite i diodi D3, D4, D5.\",\"scan_en\":\"The NMS 8245 has no separate 8255 and 74LS145: the PPI and the row decoder are inside the Yamaha S-3527 MSX-Engine (U11), which also contains the PSG. The BIOS writes the row number to bits 0-3 of the internal PPI port C (I\/O AAh) and the S-3527 pulls exactly one of outputs Y0-Y8 low (pins 74-82; Y9 on pin 83 is not connected). Columns X0-X7 enter on pins 66-73, held high by the 4k7 pull-up network RA2, and are read as PPI port B (I\/O A9h): a pressed key reads 0 on its column bit. SHIFT, GRAPH and CODE have their own lines on the keyboard (Y9, Y10, Y11), which the board joins to Y6 through diodes D3, D4, D5.\",\"lines\":[{\"id\":\"Y0\",\"group\":\"col\",\"name\":\"Y0\",\"chip\":\"U11\",\"chip_part\":\"S-3527 MSX-Engine\",\"chip_pin\":\"74\",\"conn_pin\":\"2\",\"also\":\"\"},{\"id\":\"Y1\",\"group\":\"col\",\"name\":\"Y1\",\"chip\":\"U11\",\"chip_part\":\"S-3527 MSX-Engine\",\"chip_pin\":\"75\",\"conn_pin\":\"1\",\"also\":\"\"},{\"id\":\"Y2\",\"group\":\"col\",\"name\":\"Y2\",\"chip\":\"U11\",\"chip_part\":\"S-3527 MSX-Engine\",\"chip_pin\":\"76\",\"conn_pin\":\"12\",\"also\":\"\"},{\"id\":\"Y3\",\"group\":\"col\",\"name\":\"Y3\",\"chip\":\"U11\",\"chip_part\":\"S-3527 MSX-Engine\",\"chip_pin\":\"77\",\"conn_pin\":\"11\",\"also\":\"\"},{\"id\":\"Y4\",\"group\":\"col\",\"name\":\"Y4\",\"chip\":\"U11\",\"chip_part\":\"S-3527 MSX-Engine\",\"chip_pin\":\"78\",\"conn_pin\":\"10\",\"also\":\"\"},{\"id\":\"Y5\",\"group\":\"col\",\"name\":\"Y5\",\"chip\":\"U11\",\"chip_part\":\"S-3527 MSX-Engine\",\"chip_pin\":\"79\",\"conn_pin\":\"9\",\"also\":\"\"},{\"id\":\"Y6\",\"group\":\"col\",\"name\":\"Y6\",\"chip\":\"U11\",\"chip_part\":\"S-3527 MSX-Engine\",\"chip_pin\":\"80\",\"conn_pin\":\"8\",\"also_it\":\"pilota anche Y9, Y10, Y11 della tastiera tramite i diodi D3, D4, D5 (MA165)\",\"also_en\":\"also drives keyboard lines Y9, Y10, Y11 through diodes D3, D4, D5 (MA165)\"},{\"id\":\"Y7\",\"group\":\"col\",\"name\":\"Y7\",\"chip\":\"U11\",\"chip_part\":\"S-3527 MSX-Engine\",\"chip_pin\":\"81\",\"conn_pin\":\"7\",\"also\":\"\"},{\"id\":\"Y8\",\"group\":\"col\",\"name\":\"Y8\",\"chip\":\"U11\",\"chip_part\":\"S-3527 MSX-Engine\",\"chip_pin\":\"82\",\"conn_pin\":\"6\",\"also\":\"\"},{\"id\":\"Y9\",\"group\":\"col\",\"name\":\"Y9\",\"chip\":\"U11\",\"chip_part\":\"S-3527 (Y6, via diode D3)\",\"chip_pin\":\"80\",\"conn_pin\":\"5\",\"also_it\":\"linea separata per SHIFT: diodo D3 (MA165) verso Y6 (U11 pin 80)\",\"also_en\":\"separate line for SHIFT: diode D3 (MA165) to Y6 (U11 pin 80)\"},{\"id\":\"Y10\",\"group\":\"col\",\"name\":\"Y10\",\"chip\":\"U11\",\"chip_part\":\"S-3527 (Y6, via diode D4)\",\"chip_pin\":\"80\",\"conn_pin\":\"4\",\"also_it\":\"linea separata per GRAPH: diodo D4 (MA165) verso Y6 (U11 pin 80)\",\"also_en\":\"separate line for GRAPH: diode D4 (MA165) to Y6 (U11 pin 80)\"},{\"id\":\"Y11\",\"group\":\"col\",\"name\":\"Y11\",\"chip\":\"U11\",\"chip_part\":\"S-3527 (Y6, via diode D5)\",\"chip_pin\":\"80\",\"conn_pin\":\"3\",\"also_it\":\"linea separata per CODE: diodo D5 (MA165) verso Y6 (U11 pin 80)\",\"also_en\":\"separate line for CODE: diode D5 (MA165) to Y6 (U11 pin 80)\"},{\"id\":\"X0\",\"group\":\"row\",\"name\":\"X0\",\"chip\":\"U11\",\"chip_part\":\"S-3527 MSX-Engine\",\"chip_pin\":\"66\",\"conn_pin\":\"8\",\"also_it\":\"pull-up 4k7 RA2 pin 9\",\"also_en\":\"4k7 pull-up RA2 pin 9\"},{\"id\":\"X1\",\"group\":\"row\",\"name\":\"X1\",\"chip\":\"U11\",\"chip_part\":\"S-3527 MSX-Engine\",\"chip_pin\":\"67\",\"conn_pin\":\"7\",\"also_it\":\"pull-up 4k7 RA2 pin 8\",\"also_en\":\"4k7 pull-up RA2 pin 8\"},{\"id\":\"X2\",\"group\":\"row\",\"name\":\"X2\",\"chip\":\"U11\",\"chip_part\":\"S-3527 MSX-Engine\",\"chip_pin\":\"68\",\"conn_pin\":\"6\",\"also_it\":\"pull-up 4k7 RA2 pin 7\",\"also_en\":\"4k7 pull-up RA2 pin 7\"},{\"id\":\"X3\",\"group\":\"row\",\"name\":\"X3\",\"chip\":\"U11\",\"chip_part\":\"S-3527 MSX-Engine\",\"chip_pin\":\"69\",\"conn_pin\":\"5\",\"also_it\":\"pull-up 4k7 RA2 pin 6\",\"also_en\":\"4k7 pull-up RA2 pin 6\"},{\"id\":\"X4\",\"group\":\"row\",\"name\":\"X4\",\"chip\":\"U11\",\"chip_part\":\"S-3527 MSX-Engine\",\"chip_pin\":\"70\",\"conn_pin\":\"4\",\"also_it\":\"pull-up 4k7 RA2 pin 5\",\"also_en\":\"4k7 pull-up RA2 pin 5\"},{\"id\":\"X5\",\"group\":\"row\",\"name\":\"X5\",\"chip\":\"U11\",\"chip_part\":\"S-3527 MSX-Engine\",\"chip_pin\":\"71\",\"conn_pin\":\"3\",\"also_it\":\"pull-up 4k7 RA2 pin 4\",\"also_en\":\"4k7 pull-up RA2 pin 4\"},{\"id\":\"X6\",\"group\":\"row\",\"name\":\"X6\",\"chip\":\"U11\",\"chip_part\":\"S-3527 MSX-Engine\",\"chip_pin\":\"72\",\"conn_pin\":\"2\",\"also_it\":\"pull-up 4k7 RA2 pin 3\",\"also_en\":\"4k7 pull-up RA2 pin 3\"},{\"id\":\"X7\",\"group\":\"row\",\"name\":\"X7\",\"chip\":\"U11\",\"chip_part\":\"S-3527 MSX-Engine\",\"chip_pin\":\"73\",\"conn_pin\":\"1\",\"also_it\":\"pull-up 4k7 RA2 pin 2\",\"also_en\":\"4k7 pull-up RA2 pin 2\"}],\"connectors\":[{\"ref\":\"CN13\",\"it\":\"Connettore tastiera righe Y0-Y11 (12 pin)\",\"en\":\"Keyboard connector, rows Y0-Y11 (12-pin)\",\"pins\":[{\"n\":\"1\",\"sig\":\"Y1\"},{\"n\":\"2\",\"sig\":\"Y0\"},{\"n\":\"3\",\"sig\":\"Y11\",\"note_it\":\"tramite diodo verso Y6\",\"note_en\":\"through a diode to Y6\"},{\"n\":\"4\",\"sig\":\"Y10\",\"note_it\":\"tramite diodo verso Y6\",\"note_en\":\"through a diode to Y6\"},{\"n\":\"5\",\"sig\":\"Y9\",\"note_it\":\"tramite diodo verso Y6\",\"note_en\":\"through a diode to Y6\"},{\"n\":\"6\",\"sig\":\"Y8\"},{\"n\":\"7\",\"sig\":\"Y7\"},{\"n\":\"8\",\"sig\":\"Y6\"},{\"n\":\"9\",\"sig\":\"Y5\"},{\"n\":\"10\",\"sig\":\"Y4\"},{\"n\":\"11\",\"sig\":\"Y3\"},{\"n\":\"12\",\"sig\":\"Y2\"}]},{\"ref\":\"CN14\",\"it\":\"Connettore tastiera colonne X0-X7 (8 pin)\",\"en\":\"Keyboard connector, columns X0-X7 (8-pin)\",\"pins\":[{\"n\":\"1\",\"sig\":\"X7\"},{\"n\":\"2\",\"sig\":\"X6\"},{\"n\":\"3\",\"sig\":\"X5\"},{\"n\":\"4\",\"sig\":\"X4\"},{\"n\":\"5\",\"sig\":\"X3\"},{\"n\":\"6\",\"sig\":\"X2\"},{\"n\":\"7\",\"sig\":\"X1\"},{\"n\":\"8\",\"sig\":\"X0\"}]},{\"ref\":\"CN11\",\"it\":\"Connettore pannello LED e RESET U103 (6 pin)\",\"en\":\"LED and RESET panel U103 connector (6-pin)\",\"pins\":[{\"n\":\"1\",\"sig\":\"GND\",\"note_it\":\"lato massa del pulsante RESET\",\"note_en\":\"ground side of the RESET button\"},{\"n\":\"2\",\"sig\":\"RSTI\",\"note_it\":\"pulsante RESET \u2192 R21 \u2192 MN1280 U20\",\"note_en\":\"RESET button \u2192 R21 \u2192 MN1280 U20\"},{\"n\":\"3\",\"sig\":\"LED POWER\",\"note_it\":\"LD3 tramite R20 220 \u03a9 a massa\",\"note_en\":\"LD3 through R20 220 \u03a9 to ground\"},{\"n\":\"4\",\"sig\":\"LED CAPS\",\"note_it\":\"LD2 tramite R23 220 \u03a9 a \/CAPS, U11 pin 64\",\"note_en\":\"LD2 through R23 220 \u03a9 to \/CAPS, U11 pin 64\"},{\"n\":\"5\",\"sig\":\"LED FDD\",\"note_it\":\"LD1 tramite R24 220 \u03a9 a \/FDD ON\",\"note_en\":\"LD1 through R24 220 \u03a9 to \/FDD ON\"},{\"n\":\"6\",\"sig\":\"+5V\",\"note_it\":\"anodi dei LED\",\"note_en\":\"LED anodes\"}]}],\"layout\":[{\"id\":\"reset\",\"t\":\"RESET\",\"x\":1.0,\"y\":0,\"w\":1.1,\"h\":0.6},{\"id\":\"f1\",\"t\":\"F1\",\"t2\":\"F6\",\"x\":0.98,\"y\":1.5,\"w\":1.24,\"h\":0.8},{\"id\":\"f2\",\"t\":\"F2\",\"t2\":\"F7\",\"x\":2.26,\"y\":1.5,\"w\":1.24,\"h\":0.8},{\"id\":\"f3\",\"t\":\"F3\",\"t2\":\"F8\",\"x\":3.54,\"y\":1.5,\"w\":1.24,\"h\":0.8},{\"id\":\"f4\",\"t\":\"F4\",\"t2\":\"F9\",\"x\":4.82,\"y\":1.5,\"w\":1.24,\"h\":0.8},{\"id\":\"f5\",\"t\":\"F5\",\"t2\":\"F10\",\"x\":6.1,\"y\":1.5,\"w\":1.24,\"h\":0.8},{\"id\":\"select\",\"t\":\"SELECT\",\"x\":9.0,\"y\":1.5,\"w\":1.15,\"h\":0.8},{\"id\":\"stop\",\"t\":\"STOP\",\"x\":10.28,\"y\":1.5,\"w\":1.15,\"h\":0.8},{\"id\":\"home\",\"t\":\"HOME\",\"t2\":\"CLR\",\"x\":11.56,\"y\":1.5,\"w\":1.15,\"h\":0.8},{\"id\":\"ins\",\"t\":\"INS\",\"x\":12.84,\"y\":1.5,\"w\":1.15,\"h\":0.8},{\"id\":\"del\",\"t\":\"DEL\",\"x\":14.12,\"y\":1.5,\"w\":1.15,\"h\":0.8},{\"id\":\"esc\",\"t\":\"ESC\",\"x\":0.77,\"y\":2.5,\"w\":0.9,\"h\":1},{\"id\":\"1\",\"t\":\"1\",\"t2\":\"!\",\"x\":1.71,\"y\":2.5,\"w\":0.98,\"h\":1},{\"id\":\"2\",\"t\":\"2\",\"t2\":\"@\",\"x\":2.69,\"y\":2.5,\"w\":0.98,\"h\":1},{\"id\":\"3\",\"t\":\"3\",\"t2\":\"#\",\"x\":3.68,\"y\":2.5,\"w\":0.98,\"h\":1},{\"id\":\"4\",\"t\":\"4\",\"t2\":\"$\",\"x\":4.67,\"y\":2.5,\"w\":0.98,\"h\":1},{\"id\":\"5\",\"t\":\"5\",\"t2\":\"%\",\"x\":5.65,\"y\":2.5,\"w\":0.98,\"h\":1},{\"id\":\"6\",\"t\":\"6\",\"t2\":\"^\",\"x\":6.63,\"y\":2.5,\"w\":0.98,\"h\":1},{\"id\":\"7\",\"t\":\"7\",\"t2\":\"&\",\"x\":7.62,\"y\":2.5,\"w\":0.98,\"h\":1},{\"id\":\"8\",\"t\":\"8\",\"t2\":\"*\",\"x\":8.61,\"y\":2.5,\"w\":0.98,\"h\":1},{\"id\":\"9\",\"t\":\"9\",\"t2\":\"(\",\"x\":9.59,\"y\":2.5,\"w\":0.98,\"h\":1},{\"id\":\"0\",\"t\":\"0\",\"t2\":\")\",\"x\":10.57,\"y\":2.5,\"w\":0.98,\"h\":1},{\"id\":\"minus\",\"t\":\"-\",\"t2\":\"_\",\"x\":11.56,\"y\":2.5,\"w\":0.98,\"h\":1},{\"id\":\"equal\",\"t\":\"=\",\"t2\":\"+\",\"x\":12.54,\"y\":2.5,\"w\":0.98,\"h\":1},{\"id\":\"bslash\",\"t\":\"\\\\\",\"t2\":\"|\",\"x\":13.53,\"y\":2.5,\"w\":0.98,\"h\":1},{\"id\":\"bs\",\"t\":\"BS \u2190\",\"x\":14.53,\"y\":2.5,\"w\":0.95,\"h\":1},{\"id\":\"tab\",\"t\":\"TAB\",\"x\":0.51,\"y\":3.5,\"w\":1.42,\"h\":1},{\"id\":\"q\",\"t\":\"Q\",\"x\":1.97,\"y\":3.5,\"w\":1,\"h\":1},{\"id\":\"w\",\"t\":\"W\",\"x\":2.98,\"y\":3.5,\"w\":1,\"h\":1},{\"id\":\"e\",\"t\":\"E\",\"x\":3.99,\"y\":3.5,\"w\":1,\"h\":1},{\"id\":\"r\",\"t\":\"R\",\"x\":5.0,\"y\":3.5,\"w\":1,\"h\":1},{\"id\":\"t\",\"t\":\"T\",\"x\":6.01,\"y\":3.5,\"w\":1,\"h\":1},{\"id\":\"y\",\"t\":\"Y\",\"x\":7.02,\"y\":3.5,\"w\":1,\"h\":1},{\"id\":\"u\",\"t\":\"U\",\"x\":8.03,\"y\":3.5,\"w\":1,\"h\":1},{\"id\":\"i\",\"t\":\"I\",\"x\":9.04,\"y\":3.5,\"w\":1,\"h\":1},{\"id\":\"o\",\"t\":\"O\",\"x\":10.05,\"y\":3.5,\"w\":1,\"h\":1},{\"id\":\"p\",\"t\":\"P\",\"x\":11.06,\"y\":3.5,\"w\":1,\"h\":1},{\"id\":\"lbrack\",\"t\":\"[\",\"t2\":\"{\",\"x\":12.07,\"y\":3.5,\"w\":1,\"h\":1},{\"id\":\"rbrack\",\"t\":\"]\",\"t2\":\"}\",\"x\":13.08,\"y\":3.5,\"w\":1,\"h\":1},{\"id\":\"return\",\"t\":\"RETURN \u21b5\",\"x\":14.45,\"y\":3.5,\"w\":1.2,\"h\":2},{\"id\":\"ctrl\",\"t\":\"CTRL\",\"x\":0.26,\"y\":4.5,\"w\":1.7,\"h\":1},{\"id\":\"a\",\"t\":\"A\",\"x\":2.09,\"y\":4.5,\"w\":1,\"h\":1},{\"id\":\"s\",\"t\":\"S\",\"x\":3.12,\"y\":4.5,\"w\":1,\"h\":1},{\"id\":\"d\",\"t\":\"D\",\"x\":4.15,\"y\":4.5,\"w\":1,\"h\":1},{\"id\":\"f\",\"t\":\"F\",\"x\":5.18,\"y\":4.5,\"w\":1,\"h\":1},{\"id\":\"g\",\"t\":\"G\",\"x\":6.21,\"y\":4.5,\"w\":1,\"h\":1},{\"id\":\"h\",\"t\":\"H\",\"x\":7.24,\"y\":4.5,\"w\":1,\"h\":1},{\"id\":\"j\",\"t\":\"J\",\"x\":8.27,\"y\":4.5,\"w\":1,\"h\":1},{\"id\":\"k\",\"t\":\"K\",\"x\":9.3,\"y\":4.5,\"w\":1,\"h\":1},{\"id\":\"l\",\"t\":\"L\",\"x\":10.33,\"y\":4.5,\"w\":1,\"h\":1},{\"id\":\"semicolon\",\"t\":\";\",\"t2\":\":\",\"x\":11.36,\"y\":4.5,\"w\":1,\"h\":1},{\"id\":\"quote\",\"t\":\"'\",\"t2\":\"\\\"\",\"x\":12.39,\"y\":4.5,\"w\":1,\"h\":1},{\"id\":\"bquote\",\"t\":\"`\",\"t2\":\"~\",\"x\":13.42,\"y\":4.5,\"w\":1,\"h\":1},{\"id\":\"lshift\",\"t\":\"SHIFT \u2191\",\"x\":0,\"y\":5.5,\"w\":2.2,\"h\":1},{\"id\":\"z\",\"t\":\"Z\",\"x\":2.39,\"y\":5.5,\"w\":1,\"h\":1},{\"id\":\"x\",\"t\":\"X\",\"x\":3.45,\"y\":5.5,\"w\":1,\"h\":1},{\"id\":\"c\",\"t\":\"C\",\"x\":4.51,\"y\":5.5,\"w\":1,\"h\":1},{\"id\":\"v\",\"t\":\"V\",\"x\":5.57,\"y\":5.5,\"w\":1,\"h\":1},{\"id\":\"b\",\"t\":\"B\",\"x\":6.63,\"y\":5.5,\"w\":1,\"h\":1},{\"id\":\"n\",\"t\":\"N\",\"x\":7.69,\"y\":5.5,\"w\":1,\"h\":1},{\"id\":\"m\",\"t\":\"M\",\"x\":8.75,\"y\":5.5,\"w\":1,\"h\":1},{\"id\":\"comma\",\"t\":\",\",\"t2\":\"<\",\"x\":9.81,\"y\":5.5,\"w\":1,\"h\":1},{\"id\":\"period\",\"t\":\".\",\"t2\":\">\",\"x\":10.87,\"y\":5.5,\"w\":1,\"h\":1},{\"id\":\"slash\",\"t\":\"\/\",\"t2\":\"?\",\"x\":11.93,\"y\":5.5,\"w\":1,\"h\":1},{\"id\":\"rshift\",\"t\":\"SHIFT \u2191\",\"x\":13.08,\"y\":5.5,\"w\":1.65,\"h\":1},{\"id\":\"dead\",\"t\":\"` ^\",\"t2\":\"\u00b4 \u00a8\",\"x\":14.9,\"y\":5.5,\"w\":0.85,\"h\":1},{\"id\":\"caps\",\"t\":\"CAPS \u21e7\",\"x\":2.26,\"y\":6.5,\"w\":0.9,\"h\":1},{\"id\":\"graph\",\"t\":\"GRPH\",\"x\":3.29,\"y\":6.5,\"w\":0.9,\"h\":1},{\"id\":\"space\",\"t\":\"SPACE\",\"x\":4.44,\"y\":6.5,\"w\":8.5,\"h\":1},{\"id\":\"code\",\"t\":\"CODE\",\"x\":13.2,\"y\":6.5,\"w\":0.85,\"h\":1},{\"id\":\"up\",\"t\":\"\u2191\",\"x\":17.6,\"y\":3.6,\"w\":1.4,\"h\":0.8},{\"id\":\"left\",\"t\":\"\u2190\",\"x\":16.45,\"y\":4.4,\"w\":0.9,\"h\":1.4},{\"id\":\"right\",\"t\":\"\u2192\",\"x\":19.2,\"y\":4.4,\"w\":0.9,\"h\":1.4},{\"id\":\"down\",\"t\":\"\u2193\",\"x\":17.6,\"y\":5.75,\"w\":1.4,\"h\":0.8}],\"matrix\":{\"0\":[\"Y0\",\"X0\"],\"1\":[\"Y0\",\"X1\"],\"2\":[\"Y0\",\"X2\"],\"3\":[\"Y0\",\"X3\"],\"4\":[\"Y0\",\"X4\"],\"5\":[\"Y0\",\"X5\"],\"6\":[\"Y0\",\"X6\"],\"7\":[\"Y0\",\"X7\"],\"8\":[\"Y1\",\"X0\"],\"9\":[\"Y1\",\"X1\"],\"minus\":[\"Y1\",\"X2\"],\"equal\":[\"Y1\",\"X3\"],\"bslash\":[\"Y1\",\"X4\"],\"lbrack\":[\"Y1\",\"X5\"],\"rbrack\":[\"Y1\",\"X6\"],\"semicolon\":[\"Y1\",\"X7\"],\"quote\":[\"Y2\",\"X0\"],\"bquote\":[\"Y2\",\"X1\"],\"comma\":[\"Y2\",\"X2\"],\"period\":[\"Y2\",\"X3\"],\"slash\":[\"Y2\",\"X4\"],\"dead\":[\"Y2\",\"X5\"],\"a\":[\"Y2\",\"X6\"],\"b\":[\"Y2\",\"X7\"],\"c\":[\"Y3\",\"X0\"],\"d\":[\"Y3\",\"X1\"],\"e\":[\"Y3\",\"X2\"],\"f\":[\"Y3\",\"X3\"],\"g\":[\"Y3\",\"X4\"],\"h\":[\"Y3\",\"X5\"],\"i\":[\"Y3\",\"X6\"],\"j\":[\"Y3\",\"X7\"],\"k\":[\"Y4\",\"X0\"],\"l\":[\"Y4\",\"X1\"],\"m\":[\"Y4\",\"X2\"],\"n\":[\"Y4\",\"X3\"],\"o\":[\"Y4\",\"X4\"],\"p\":[\"Y4\",\"X5\"],\"q\":[\"Y4\",\"X6\"],\"r\":[\"Y4\",\"X7\"],\"s\":[\"Y5\",\"X0\"],\"t\":[\"Y5\",\"X1\"],\"u\":[\"Y5\",\"X2\"],\"v\":[\"Y5\",\"X3\"],\"w\":[\"Y5\",\"X4\"],\"x\":[\"Y5\",\"X5\"],\"y\":[\"Y5\",\"X6\"],\"z\":[\"Y5\",\"X7\"],\"ctrl\":[\"Y6\",\"X1\"],\"caps\":[\"Y6\",\"X3\"],\"f1\":[\"Y6\",\"X5\"],\"f2\":[\"Y6\",\"X6\"],\"f3\":[\"Y6\",\"X7\"],\"f4\":[\"Y7\",\"X0\"],\"f5\":[\"Y7\",\"X1\"],\"esc\":[\"Y7\",\"X2\"],\"tab\":[\"Y7\",\"X3\"],\"stop\":[\"Y7\",\"X4\"],\"bs\":[\"Y7\",\"X5\"],\"select\":[\"Y7\",\"X6\"],\"return\":[\"Y7\",\"X7\"],\"space\":[\"Y8\",\"X0\"],\"home\":[\"Y8\",\"X1\"],\"ins\":[\"Y8\",\"X2\"],\"del\":[\"Y8\",\"X3\"],\"left\":[\"Y8\",\"X4\"],\"up\":[\"Y8\",\"X5\"],\"down\":[\"Y8\",\"X6\"],\"right\":[\"Y8\",\"X7\"],\"lshift\":[\"Y9\",\"X0\"],\"rshift\":[\"Y9\",\"X0\"],\"graph\":[\"Y10\",\"X2\"],\"code\":[\"Y11\",\"X4\"]},\"special\":{\"reset\":{\"lines\":[],\"it\":\"Non \u00e8 nella matrice e non \u00e8 sulla tastiera: \u00e8 il pulsante RESET sul pannello superiore (pannello LED U103). Chiude CN11 pin 2 (RSTI) a massa (pin 1); tramite R21 il segnale va al generatore di reset MN1280 U20 (pin 2), la cui uscita (pin 1) entra nell'S-3527 U11 (pin 33), che produce il \/RESET (pin 32) per Z80 e slot.\",\"en\":\"Not in the matrix and not on the keyboard: it is the RESET button on the top panel (LED panel U103). It shorts CN11 pin 2 (RSTI) to ground (pin 1); through R21 the signal reaches the MN1280 reset generator U20 (pin 2), whose output (pin 1) goes into the S-3527 U11 (pin 33), which produces \/RESET (pin 32) for the Z80 and the slots.\"},\"caps\":{\"lines\":[\"Y6\",\"X3\"],\"it\":\"CAPS \u00e8 un tasto normale della matrice (Y6\/X3), non a ritenuta: il blocco maiuscole lo gestisce il BIOS. Il LED CAPS (LD2) \u00e8 sul pannello LED, non sulla tastiera: l'S-3527 U11 lo comanda dal pin 64 (\/CAPS, equivale a PC6 del PPI) tramite R23 da 220 \u03a9 e CN11 pin 4; LED acceso = \/CAPS basso.\",\"en\":\"CAPS is an ordinary matrix key (Y6\/X3), not a latching one: caps lock is handled by the BIOS. The CAPS LED (LD2) is on the LED panel, not on the keyboard: S-3527 U11 drives it from pin 64 (\/CAPS, the equivalent of PPI PC6) through 220 \u03a9 R23 and CN11 pin 4; LED on = \/CAPS low.\"},\"lshift\":{\"lines\":[\"Y9\",\"X0\"],\"it\":\"SHIFT non \u00e8 sulla riga Y6 come nello standard MSX ma su una linea a parte, Y9 (CN13 pin 5), che la scheda collega a Y6 tramite il diodo D3. Per il computer \u00e8 sempre riga 6 bit 0. Se SHIFT non va ma CTRL, CAPS e F1-F3 s\u00ec, controllare D3.\",\"en\":\"SHIFT is not on row Y6 as in the MSX standard but on a separate line, Y9 (CN13 pin 5), which the board connects to Y6 through diode D3. To the computer it is still row 6 bit 0. If SHIFT is dead but CTRL, CAPS and F1-F3 work, check D3.\"},\"rshift\":{\"lines\":[\"Y9\",\"X0\"],\"it\":\"I due SHIFT sono in parallelo sulla stessa coppia di linee (Y9\/X0, con diodo D3 verso Y6): il BIOS non li distingue.\",\"en\":\"The two SHIFT keys are wired in parallel on the same pair of lines (Y9\/X0, with diode D3 to Y6): the BIOS cannot tell them apart.\"},\"graph\":{\"lines\":[\"Y10\",\"X2\"],\"it\":\"GRAPH \u00e8 su una linea a parte, Y10 (CN13 pin 4), collegata a Y6 tramite il diodo D4: per il computer \u00e8 riga 6 bit 2.\",\"en\":\"GRAPH is on a separate line, Y10 (CN13 pin 4), connected to Y6 through diode D4: to the computer it is row 6 bit 2.\"},\"code\":{\"lines\":[\"Y11\",\"X4\"],\"it\":\"CODE \u00e8 su una linea a parte, Y11 (CN13 pin 3), collegata a Y6 tramite il diodo D5: per il computer \u00e8 riga 6 bit 4.\",\"en\":\"CODE is on a separate line, Y11 (CN13 pin 3), connected to Y6 through diode D5: to the computer it is row 6 bit 4.\"}},\"notes_it\":[\"Su MSX il joystick NON \u00e8 nella matrice della tastiera: le porte joystick CN5 e CN6 vanno all'interfaccia joystick dell'S-3527 U11 (pin 48-61, la parte PSG), quindi un joystick o una porta in corto non bloccano i tasti, e viceversa.\",\"Nella terminologia MSX le linee pilotate Y0-Y8 si chiamano \u00abrighe\u00bb (row) e le linee lette X0-X7 \u00abcolonne\u00bb\/bit: qui le Y sono le linee pilotate e le X quelle lette.\",\"La tastiera \u00e8 collegata con due cavi piatti: CN13 (12 pin, righe) e CN14 (8 pin, colonne). La numerazione dei pin di CN13 non segue l'ordine delle righe: Y1 \u00e8 al pin 1, Y0 al pin 2, poi Y11 ... Y2 dal pin 3 al pin 12.\",\"Se non va nessun tasto: controllare i due cavi piatti, RA2 (pin 1 a +5 V) e U11. Se non va un'intera riga, controllare il pin di U11 e CN13; se non va un'intera colonna, CN14 e RA2. Un diodo D3-D5 interrotto fa sparire solo SHIFT, GRAPH o CODE; un diodo in corto fa sembrare premuti tutti i tasti della colonna corrispondente quando \u00e8 selezionata la riga 6.\",\"I tasti cursore (la croce a destra) sono nella riga 8 (Y8), insieme a SPACE, HOME, INS e DEL. La NMS 8245 non ha tastierino numerico (righe 9-10 dello standard non usate). Il pin 63 di U11 (JIS\/50) \u00e8 a massa: tastiera non giapponese.\"],\"notes_en\":[\"On MSX the joystick is NOT in the keyboard matrix: joystick ports CN5 and CN6 go to the joystick interface of S-3527 U11 (pins 48-61, the PSG part), so a faulty joystick or shorted port does not lock keys, and vice versa.\",\"In MSX terminology the driven lines Y0-Y8 are called \\\"rows\\\" and the read lines X0-X7 \\\"columns\\\"\/bits: here Y are the driven lines and X the read ones.\",\"The keyboard plugs in with two flat cables: CN13 (12-pin, rows) and CN14 (8-pin, columns). CN13 pin numbering does not follow the row order: Y1 is on pin 1, Y0 on pin 2, then Y11 ... Y2 on pins 3 to 12.\",\"If no key works: check both flat cables, RA2 (pin 1 at +5 V) and U11. If a whole row is dead, check that U11 pin and CN13; if a whole column is dead, CN14 and RA2. An open diode D3-D5 kills only SHIFT, GRAPH or CODE; a shorted one makes every key on that column look pressed whenever row 6 is selected.\",\"The cursor keys (the cross on the right) are on row 8 (Y8), together with SPACE, HOME, INS and DEL. The NMS 8245 has no numeric keypad (standard rows 9-10 unused). U11 pin 63 (JIS\/50) is tied to ground: non-Japanese keyboard.\"],\"board_it\":\"scheda madre Philips NMS 8245\/00 U100 (manuale di servizio NMS8245\/00\/16); il Phonola NMS 8245 italiano \u00e8 la \/00 con un altro marchio. Tastiera QWERTY internazionale, senza tastierino numerico\",\"board_en\":\"Philips NMS 8245\/00 main board U100 (service manual NMS8245\/00\/16); the Italian Phonola NMS 8245 is the \/00 with another badge. International QWERTY keyboard, no numeric keypad\"},\"oric1\":{\"id\":\"oric1\",\"name\":\"Oric-1\",\"sources\":[{\"t\":\"MAME src\/mame\/tangerine\/oric.cpp (INPUT_PORTS oric\/orica, update_keyboard)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/mame\/tangerine\/oric.cpp\"},{\"t\":\"Oric Products International, Service Manual for the Oric-1 and Oric Atmos (1984), keyboard circuit diagram BN0138 iss. 2, parts lists BN0129\/BN0130\/BN0135\",\"u\":\"http:\/\/www.48katmos.freeuk.com\/servman.pdf\"},{\"t\":\"F. Franc\u00e8s (Euphoric), Hardware Programming on the Oric: VIA, PSG and keyboard chapters\",\"u\":\"http:\/\/oric.free.fr\/programming.html\"},{\"t\":\"kernelcrash: An Oric with a PS2 keyboard (14-pin connector pinout, Atmos)\",\"u\":\"https:\/\/www.kernelcrash.com\/blog\/an-oric-wth-a-ps2-keyboard\/2016\/09\/03\/\"}],\"scan_it\":\"Le righe non arrivano al connettore: sul PCB della tastiera c'\u00e8 un multiplexer analogico 4051B (IC1). La ROM scrive il numero di riga 0-7 su PB0-PB2 del VIA 6522 (IC6), che vanno agli ingressi A-B-C del 4051: il 4051 collega la riga scelta (X0-X7) alla sua uscita COM. Le colonne sono le 8 linee della porta I\/O A del PSG AY-3-8912 (IC4, registro 14), scritte in logica negativa: la colonna da provare \u00e8 a 0, le altre a 1 (11110111 = colonna 3). La linea COM torna in scheda madre attraverso il transistor TR2 e arriva su PB3 del VIA: PB3 letto a 1 significa tasto premuto. La ROM fa cos\u00ec 64 prove, una per ogni incrocio riga\/colonna.\",\"scan_en\":\"The rows do not reach the connector: the keyboard PCB carries a 4051B analogue multiplexer (IC1). The ROM writes the row number 0-7 on PB0-PB2 of the 6522 VIA (IC6), which go to the 4051's A-B-C inputs; the 4051 connects the selected row (X0-X7) to its COM output. The columns are the 8 lines of I\/O port A of the AY-3-8912 PSG (IC4, register 14), written in negative logic: the column under test is 0, the others 1 (11110111 = column 3). The COM line comes back to the main board through transistor TR2 and reaches VIA PB3: PB3 reading 1 means the key is pressed. The ROM therefore makes 64 tests, one per row\/column crossing.\",\"lines\":[{\"id\":\"IOA0\",\"group\":\"col\",\"name\":\"COL0\",\"chip\":\"IC4\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"14\",\"conn_pin\":\"1\",\"also_it\":\"solo tastiera (registro 14 del PSG)\",\"also_en\":\"keyboard only (PSG register 14)\"},{\"id\":\"IOA1\",\"group\":\"col\",\"name\":\"COL1\",\"chip\":\"IC4\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"13\",\"conn_pin\":\"2\",\"also_it\":\"solo tastiera (registro 14 del PSG)\",\"also_en\":\"keyboard only (PSG register 14)\"},{\"id\":\"IOA2\",\"group\":\"col\",\"name\":\"COL2\",\"chip\":\"IC4\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"12\",\"conn_pin\":\"3\",\"also_it\":\"solo tastiera (registro 14 del PSG)\",\"also_en\":\"keyboard only (PSG register 14)\"},{\"id\":\"IOA3\",\"group\":\"col\",\"name\":\"COL3\",\"chip\":\"IC4\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"11\",\"conn_pin\":\"4\",\"also_it\":\"solo tastiera (registro 14 del PSG)\",\"also_en\":\"keyboard only (PSG register 14)\"},{\"id\":\"IOA4\",\"group\":\"col\",\"name\":\"COL4\",\"chip\":\"IC4\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"10\",\"conn_pin\":\"12\",\"also_it\":\"solo tastiera (registro 14 del PSG)\",\"also_en\":\"keyboard only (PSG register 14)\"},{\"id\":\"IOA5\",\"group\":\"col\",\"name\":\"COL5\",\"chip\":\"IC4\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"9\",\"conn_pin\":\"11\",\"also_it\":\"solo tastiera (registro 14 del PSG)\",\"also_en\":\"keyboard only (PSG register 14)\"},{\"id\":\"IOA6\",\"group\":\"col\",\"name\":\"COL6\",\"chip\":\"IC4\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"8\",\"conn_pin\":\"9\",\"also_it\":\"solo tastiera (registro 14 del PSG)\",\"also_en\":\"keyboard only (PSG register 14)\"},{\"id\":\"IOA7\",\"group\":\"col\",\"name\":\"COL7\",\"chip\":\"IC4\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"7\",\"conn_pin\":\"5\",\"also_it\":\"solo tastiera (registro 14 del PSG)\",\"also_en\":\"keyboard only (PSG register 14)\"},{\"id\":\"ROW0\",\"group\":\"row\",\"name\":\"ROW0 (X0)\",\"chip\":\"IC1 (tastiera \/ keyboard)\",\"chip_part\":\"4051B\",\"chip_pin\":\"13\",\"conn_pin\":\"\",\"also_it\":\"solo sul PCB tastiera, selezionata con PB2-PB0 = 0\",\"also_en\":\"keyboard PCB only, selected when PB2-PB0 = 0\"},{\"id\":\"ROW1\",\"group\":\"row\",\"name\":\"ROW1 (X1)\",\"chip\":\"IC1 (tastiera \/ keyboard)\",\"chip_part\":\"4051B\",\"chip_pin\":\"14\",\"conn_pin\":\"\",\"also_it\":\"solo sul PCB tastiera, selezionata con PB2-PB0 = 1\",\"also_en\":\"keyboard PCB only, selected when PB2-PB0 = 1\"},{\"id\":\"ROW2\",\"group\":\"row\",\"name\":\"ROW2 (X2)\",\"chip\":\"IC1 (tastiera \/ keyboard)\",\"chip_part\":\"4051B\",\"chip_pin\":\"15\",\"conn_pin\":\"\",\"also_it\":\"solo sul PCB tastiera, selezionata con PB2-PB0 = 2\",\"also_en\":\"keyboard PCB only, selected when PB2-PB0 = 2\"},{\"id\":\"ROW3\",\"group\":\"row\",\"name\":\"ROW3 (X3)\",\"chip\":\"IC1 (tastiera \/ keyboard)\",\"chip_part\":\"4051B\",\"chip_pin\":\"12\",\"conn_pin\":\"\",\"also_it\":\"solo sul PCB tastiera, selezionata con PB2-PB0 = 3\",\"also_en\":\"keyboard PCB only, selected when PB2-PB0 = 3\"},{\"id\":\"ROW4\",\"group\":\"row\",\"name\":\"ROW4 (X4)\",\"chip\":\"IC1 (tastiera \/ keyboard)\",\"chip_part\":\"4051B\",\"chip_pin\":\"1\",\"conn_pin\":\"\",\"also_it\":\"solo sul PCB tastiera, selezionata con PB2-PB0 = 4\",\"also_en\":\"keyboard PCB only, selected when PB2-PB0 = 4\"},{\"id\":\"ROW5\",\"group\":\"row\",\"name\":\"ROW5 (X5)\",\"chip\":\"IC1 (tastiera \/ keyboard)\",\"chip_part\":\"4051B\",\"chip_pin\":\"5\",\"conn_pin\":\"\",\"also_it\":\"solo sul PCB tastiera, selezionata con PB2-PB0 = 5\",\"also_en\":\"keyboard PCB only, selected when PB2-PB0 = 5\"},{\"id\":\"ROW6\",\"group\":\"row\",\"name\":\"ROW6 (X6)\",\"chip\":\"IC1 (tastiera \/ keyboard)\",\"chip_part\":\"4051B\",\"chip_pin\":\"2\",\"conn_pin\":\"\",\"also_it\":\"solo sul PCB tastiera, selezionata con PB2-PB0 = 6\",\"also_en\":\"keyboard PCB only, selected when PB2-PB0 = 6\"},{\"id\":\"ROW7\",\"group\":\"row\",\"name\":\"ROW7 (X7)\",\"chip\":\"IC1 (tastiera \/ keyboard)\",\"chip_part\":\"4051B\",\"chip_pin\":\"4\",\"conn_pin\":\"\",\"also_it\":\"solo sul PCB tastiera, selezionata con PB2-PB0 = 7\",\"also_en\":\"keyboard PCB only, selected when PB2-PB0 = 7\"},{\"id\":\"PB0\",\"group\":\"extra\",\"name\":\"ROW SEL A\",\"chip\":\"IC6\",\"chip_part\":\"6522 VIA\",\"chip_pin\":\"10\",\"conn_pin\":\"8\",\"also_it\":\"ingresso A del 4051 IC1 (pin 11) sulla tastiera\",\"also_en\":\"4051 IC1 input A (pin 11) on the keyboard\"},{\"id\":\"PB1\",\"group\":\"extra\",\"name\":\"ROW SEL B\",\"chip\":\"IC6\",\"chip_part\":\"6522 VIA\",\"chip_pin\":\"11\",\"conn_pin\":\"7\",\"also_it\":\"ingresso B del 4051 IC1 (pin 10) sulla tastiera\",\"also_en\":\"4051 IC1 input B (pin 10) on the keyboard\"},{\"id\":\"PB2\",\"group\":\"extra\",\"name\":\"ROW SEL C\",\"chip\":\"IC6\",\"chip_part\":\"6522 VIA\",\"chip_pin\":\"12\",\"conn_pin\":\"6\",\"also_it\":\"ingresso C del 4051 IC1 (pin 9) sulla tastiera\",\"also_en\":\"4051 IC1 input C (pin 9) on the keyboard\"},{\"id\":\"COM\",\"group\":\"extra\",\"name\":\"SENSE (PB3)\",\"chip\":\"IC6\",\"chip_part\":\"6522 VIA\",\"chip_pin\":\"13\",\"conn_pin\":\"13\",\"also_it\":\"COM del 4051 (pin 3) -> TR2 -> PB3 del VIA\",\"also_en\":\"4051 COM (pin 3) -> TR2 -> VIA PB3\"},{\"id\":\"NMI\",\"group\":\"extra\",\"name\":\"NMI\",\"chip\":\"IC5\",\"chip_part\":\"6502\",\"chip_pin\":\"6\",\"conn_pin\":\"\",\"also_it\":\"pulsante SW1 sulla scheda madre, non passa dal connettore tastiera\",\"also_en\":\"button SW1 on the main board, not on the keyboard connector\"}],\"connector\":{\"ref\":\"PL3\",\"it\":\"Connettore tastiera PL3, 14 vie (innesto rigido spina\/presa tra scheda madre e PCB tastiera)\",\"en\":\"Keyboard connector PL3, 14-way (rigid plug\/socket between main board and keyboard PCB)\",\"pins\":[{\"n\":\"1\",\"sig\":\"IOA0\"},{\"n\":\"2\",\"sig\":\"IOA1\"},{\"n\":\"3\",\"sig\":\"IOA2\"},{\"n\":\"4\",\"sig\":\"IOA3\"},{\"n\":\"5\",\"sig\":\"IOA7\"},{\"n\":\"6\",\"sig\":\"PB2\",\"note_it\":\"selezione riga C, 4051 pin 9\",\"note_en\":\"row select C, 4051 pin 9\"},{\"n\":\"7\",\"sig\":\"PB1\",\"note_it\":\"selezione riga B, 4051 pin 10\",\"note_en\":\"row select B, 4051 pin 10\"},{\"n\":\"8\",\"sig\":\"PB0\",\"note_it\":\"selezione riga A, 4051 pin 11\",\"note_en\":\"row select A, 4051 pin 11\"},{\"n\":\"9\",\"sig\":\"IOA6\"},{\"n\":\"10\",\"sig\":\"GND\",\"note_it\":\"0 V: 4051 pin 8 (VSS), 7 (VEE) e 6 (INH)\",\"note_en\":\"0 V: 4051 pin 8 (VSS), 7 (VEE) and 6 (INH)\"},{\"n\":\"11\",\"sig\":\"IOA5\"},{\"n\":\"12\",\"sig\":\"IOA4\"},{\"n\":\"13\",\"sig\":\"COM\",\"note_it\":\"uscita COM del 4051 (pin 3), va a TR2\",\"note_en\":\"4051 COM output (pin 3), goes to TR2\"},{\"n\":\"14\",\"sig\":\"+5V\",\"note_it\":\"alimentazione 4051 pin 16 (VDD)\",\"note_en\":\"4051 supply pin 16 (VDD)\"}]},\"layout\":[{\"id\":\"1\",\"t\":\"1\",\"t2\":\"!\",\"x\":0.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"2\",\"t\":\"2\",\"t2\":\"@\",\"x\":1.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"3\",\"t\":\"3\",\"t2\":\"#\",\"x\":2.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"4\",\"t\":\"4\",\"t2\":\"$\",\"x\":3.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"5\",\"t\":\"5\",\"t2\":\"%\",\"x\":4.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"6\",\"t\":\"6\",\"t2\":\"^\",\"x\":5.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"7\",\"t\":\"7\",\"t2\":\"&\",\"x\":6.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"8\",\"t\":\"8\",\"t2\":\"*\",\"x\":7.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"9\",\"t\":\"9\",\"t2\":\"(\",\"x\":8.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"0\",\"t\":\"0\",\"t2\":\")\",\"x\":9.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"minus\",\"t\":\"-\",\"t2\":\"\u00a3\",\"x\":10.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"equal\",\"t\":\"=\",\"t2\":\"+\",\"x\":11.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"backslash\",\"t\":\"\\\\\",\"t2\":\"|\",\"x\":12.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"esc\",\"t\":\"ESC\",\"x\":0,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"q\",\"t\":\"Q\",\"x\":1,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"w\",\"t\":\"W\",\"x\":2,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"e\",\"t\":\"E\",\"x\":3,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"r\",\"t\":\"R\",\"x\":4,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"t\",\"t\":\"T\",\"x\":5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"y\",\"t\":\"Y\",\"x\":6,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"u\",\"t\":\"U\",\"x\":7,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"i\",\"t\":\"I\",\"x\":8,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"o\",\"t\":\"O\",\"x\":9,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"p\",\"t\":\"P\",\"x\":10,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"lbracket\",\"t\":\"[\",\"t2\":\"{\",\"x\":11,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"rbracket\",\"t\":\"]\",\"t2\":\"}\",\"x\":12,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"del\",\"t\":\"DEL\",\"x\":13,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"ctrl\",\"t\":\"CTRL\",\"x\":0.25,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"a\",\"t\":\"A\",\"x\":1.25,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"s\",\"t\":\"S\",\"x\":2.25,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"d\",\"t\":\"D\",\"x\":3.25,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"f\",\"t\":\"F\",\"x\":4.25,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"g\",\"t\":\"G\",\"x\":5.25,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"h\",\"t\":\"H\",\"x\":6.25,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"j\",\"t\":\"J\",\"x\":7.25,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"k\",\"t\":\"K\",\"x\":8.25,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"l\",\"t\":\"L\",\"x\":9.25,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"semicolon\",\"t\":\";\",\"t2\":\":\",\"x\":10.25,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"quote\",\"t\":\"'\",\"t2\":\"\\\"\",\"x\":11.25,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"return\",\"t\":\"RETURN\",\"x\":12.25,\"y\":2,\"w\":1.75,\"h\":1},{\"id\":\"lshift\",\"t\":\"SHIFT\",\"x\":0.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"z\",\"t\":\"Z\",\"x\":1.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"x\",\"t\":\"X\",\"x\":2.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"c\",\"t\":\"C\",\"x\":3.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"v\",\"t\":\"V\",\"x\":4.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"b\",\"t\":\"B\",\"x\":5.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"n\",\"t\":\"N\",\"x\":6.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"m\",\"t\":\"M\",\"x\":7.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"comma\",\"t\":\",\",\"t2\":\"<\",\"x\":8.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"period\",\"t\":\".\",\"t2\":\">\",\"x\":9.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"slash\",\"t\":\"\/\",\"t2\":\"?\",\"x\":10.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"rshift\",\"t\":\"SHIFT\",\"x\":11.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"left\",\"t\":\"\u2190\",\"x\":2.75,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"down\",\"t\":\"\u2193\",\"x\":3.75,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"space\",\"t\":\"SPACE\",\"x\":4.75,\"y\":4,\"w\":4.75,\"h\":1},{\"id\":\"up\",\"t\":\"\u2191\",\"x\":9.75,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"right\",\"t\":\"\u2192\",\"x\":10.75,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"reset\",\"t\":\"RESET\",\"x\":12.75,\"y\":5.5,\"w\":1,\"h\":1}],\"matrix\":{\"3\":[\"IOA7\",\"ROW0\"],\"x\":[\"IOA6\",\"ROW0\"],\"1\":[\"IOA5\",\"ROW0\"],\"v\":[\"IOA3\",\"ROW0\"],\"5\":[\"IOA2\",\"ROW0\"],\"n\":[\"IOA1\",\"ROW0\"],\"7\":[\"IOA0\",\"ROW0\"],\"d\":[\"IOA7\",\"ROW1\"],\"q\":[\"IOA6\",\"ROW1\"],\"esc\":[\"IOA5\",\"ROW1\"],\"f\":[\"IOA3\",\"ROW1\"],\"r\":[\"IOA2\",\"ROW1\"],\"t\":[\"IOA1\",\"ROW1\"],\"j\":[\"IOA0\",\"ROW1\"],\"c\":[\"IOA7\",\"ROW2\"],\"2\":[\"IOA6\",\"ROW2\"],\"z\":[\"IOA5\",\"ROW2\"],\"ctrl\":[\"IOA4\",\"ROW2\"],\"4\":[\"IOA3\",\"ROW2\"],\"b\":[\"IOA2\",\"ROW2\"],\"6\":[\"IOA1\",\"ROW2\"],\"m\":[\"IOA0\",\"ROW2\"],\"quote\":[\"IOA7\",\"ROW3\"],\"backslash\":[\"IOA6\",\"ROW3\"],\"minus\":[\"IOA3\",\"ROW3\"],\"semicolon\":[\"IOA2\",\"ROW3\"],\"9\":[\"IOA1\",\"ROW3\"],\"k\":[\"IOA0\",\"ROW3\"],\"right\":[\"IOA7\",\"ROW4\"],\"down\":[\"IOA6\",\"ROW4\"],\"left\":[\"IOA5\",\"ROW4\"],\"lshift\":[\"IOA4\",\"ROW4\"],\"up\":[\"IOA3\",\"ROW4\"],\"period\":[\"IOA2\",\"ROW4\"],\"comma\":[\"IOA1\",\"ROW4\"],\"space\":[\"IOA0\",\"ROW4\"],\"lbracket\":[\"IOA7\",\"ROW5\"],\"rbracket\":[\"IOA6\",\"ROW5\"],\"del\":[\"IOA5\",\"ROW5\"],\"p\":[\"IOA3\",\"ROW5\"],\"o\":[\"IOA2\",\"ROW5\"],\"i\":[\"IOA1\",\"ROW5\"],\"u\":[\"IOA0\",\"ROW5\"],\"w\":[\"IOA7\",\"ROW6\"],\"s\":[\"IOA6\",\"ROW6\"],\"a\":[\"IOA5\",\"ROW6\"],\"e\":[\"IOA3\",\"ROW6\"],\"g\":[\"IOA2\",\"ROW6\"],\"h\":[\"IOA1\",\"ROW6\"],\"y\":[\"IOA0\",\"ROW6\"],\"equal\":[\"IOA7\",\"ROW7\"],\"return\":[\"IOA5\",\"ROW7\"],\"rshift\":[\"IOA4\",\"ROW7\"],\"slash\":[\"IOA3\",\"ROW7\"],\"0\":[\"IOA2\",\"ROW7\"],\"l\":[\"IOA1\",\"ROW7\"],\"8\":[\"IOA0\",\"ROW7\"]},\"special\":{\"reset\":{\"lines\":[\"NMI\",\"GND\"],\"it\":\"Non \u00e8 un tasto della tastiera: \u00e8 il pulsante SW1 sulla scheda madre, raggiungibile dal foro sotto il case. Non \u00e8 nella matrice e non passa dal connettore tastiera; secondo MAME ed Euphoric agisce sulla linea NMI del 6502 (IC5 pin 6), cio\u00e8 fa un reset \\\"a caldo\\\" via software. Il reset all'accensione \u00e8 un'altra cosa (C21 e RP1).\",\"en\":\"Not a keyboard key: it is push button SW1 on the main board, reached through the hole under the case. It is not in the matrix and does not use the keyboard connector; according to MAME and Euphoric it acts on the 6502 NMI line (IC5 pin 6), i.e. a software \\\"warm\\\" reset. The power-up reset is separate (C21 and RP1).\"}},\"notes_it\":[\"Il 4051B non \u00e8 un 4028 e non c'\u00e8 un comparatore: secondo il manuale di servizio la riga selezionata dal 4051 torna al VIA (IC6) tramite il transistor TR2.\",\"Un'intera riga di tasti muta o intermittente (es. tutti quelli della riga 4: SHIFT sinistro, frecce, spazio, virgola, punto) fa pensare al 4051 IC1 della tastiera o alle sue saldature; il VIA IC6 \u00e8 possibile ma poco probabile. Le righe non sono sul connettore: si misurano ai pin del 4051 (X0=13, X1=14, X2=15, X3=12, X4=1, X5=5, X6=2, X7=4).\",\"Un'intera colonna muta fa pensare a un cattivo contatto su PL3 o al PSG AY-3-8912 IC4. Un AY guasto pu\u00f2 dare insieme niente audio e niente tastiera.\",\"Caratteri sbagliati o tasti che si \\\"premono\\\" da soli: corti tra righe e colonne sul PCB tastiera, oppure IC4 o IC6 in scheda madre.\",\"Con l'oscilloscopio su PL3: i pin colonna (1, 2, 3, 4, 5, 9, 11, 12) mostrano gli impulsi di scansione, i pin 6, 7, 8 il conteggio binario a 3 bit della riga, il pin 13 il ritorno COM.\",\"Oric-1: se la tastiera peggiora col tempo fino a non funzionare pi\u00f9, insieme a un audio che degrada, controllare il Service Bulletin n. 1: l'impulso BDIR troppo lungo (IC4 pin 18) surriscalda l'AY-3-8912. La correzione prevede di tagliare la pista tra IC4 pin 18 e IC6 pin 19 e montare 1 nF in serie e 22 k\u03a9 tra IC4 pin 6 e 18. Sull'Atmos il problema \u00e8 stato risolto nella ROM V1.1.\",\"Sull'Oric-1 la tastiera si innesta direttamente sulla scheda madre (spina\/presa rigida, niente cavo): un contatto ossidato su PL3 d\u00e0 colonne intere mute.\",\"L'Oric-1 non ha il tasto FUNCT: la posizione riga 5 \/ IOA4 della matrice \u00e8 vuota.\"],\"notes_en\":[\"The 4051B is not a 4028 and there is no comparator: according to the service manual the row selected by the 4051 returns to the VIA (IC6) through transistor TR2.\",\"A whole row of dead or intermittent keys (e.g. everything on row 4: left SHIFT, arrows, space, comma, full stop) points to keyboard 4051 IC1 or its solder joints; VIA IC6 is possible but unlikely. The rows are not on the connector: measure them on the 4051 pins (X0=13, X1=14, X2=15, X3=12, X4=1, X5=5, X6=2, X7=4).\",\"A whole dead column points to a bad contact on PL3 or to the AY-3-8912 PSG IC4. A faulty AY can give no sound and no keyboard at the same time.\",\"Wrong characters or keys that \\\"press\\\" themselves: row-to-column shorts on the keyboard PCB, or IC4 or IC6 on the main board.\",\"With a scope on PL3: the column pins (1, 2, 3, 4, 5, 9, 11, 12) show the scan pulses, pins 6, 7, 8 the 3-bit binary row count, pin 13 the COM return.\",\"Oric-1: if the keyboard gets worse over time until it stops, together with degrading sound, check Service Bulletin no. 1: the over-long BDIR pulse (IC4 pin 18) overheats the AY-3-8912. The fix is to cut the track between IC4 pin 18 and IC6 pin 19, fit 1 nF in series and 22 k\u03a9 between IC4 pins 6 and 18. On the Atmos the problem was fixed in ROM V1.1.\",\"On the Oric-1 the keyboard plugs straight onto the main board (rigid plug\/socket, no cable): an oxidised contact on PL3 gives whole dead columns.\",\"The Oric-1 has no FUNCT key: matrix position row 5 \/ IOA4 is empty.\"],\"board_it\":\"scheda madre BN0130 (Oric-1 48K, circuit issue 7 \/ C\/N63; l'Oric-1 16K BN0135 ha le stesse sigle); tastiera BN0129\",\"board_en\":\"BN0130 main board (Oric-1 48K, circuit issue 7 \/ C\/N63; the Oric-1 16K BN0135 has the same references); BN0129 keyboard\"},\"oricatmos\":{\"id\":\"oricatmos\",\"name\":\"Oric Atmos\",\"sources\":[{\"t\":\"MAME src\/mame\/tangerine\/oric.cpp (INPUT_PORTS oric\/orica, update_keyboard)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/mame\/tangerine\/oric.cpp\"},{\"t\":\"Oric Products International, Service Manual for the Oric-1 and Oric Atmos (1984), keyboard circuit diagram BN0138 iss. 2, parts lists BN0129\/BN0130\/BN0135\",\"u\":\"http:\/\/www.48katmos.freeuk.com\/servman.pdf\"},{\"t\":\"F. Franc\u00e8s (Euphoric), Hardware Programming on the Oric: VIA, PSG and keyboard chapters\",\"u\":\"http:\/\/oric.free.fr\/programming.html\"},{\"t\":\"kernelcrash: An Oric with a PS2 keyboard (14-pin connector pinout, Atmos)\",\"u\":\"https:\/\/www.kernelcrash.com\/blog\/an-oric-wth-a-ps2-keyboard\/2016\/09\/03\/\"}],\"scan_it\":\"Le righe non arrivano al connettore: sul PCB della tastiera c'\u00e8 un multiplexer analogico 4051B (IC1). La ROM scrive il numero di riga 0-7 su PB0-PB2 del VIA 6522 (IC6), che vanno agli ingressi A-B-C del 4051: il 4051 collega la riga scelta (X0-X7) alla sua uscita COM. Le colonne sono le 8 linee della porta I\/O A del PSG AY-3-8912 (IC4, registro 14), scritte in logica negativa: la colonna da provare \u00e8 a 0, le altre a 1 (11110111 = colonna 3). La linea COM torna in scheda madre attraverso il transistor TR2 e arriva su PB3 del VIA: PB3 letto a 1 significa tasto premuto. La ROM fa cos\u00ec 64 prove, una per ogni incrocio riga\/colonna.\",\"scan_en\":\"The rows do not reach the connector: the keyboard PCB carries a 4051B analogue multiplexer (IC1). The ROM writes the row number 0-7 on PB0-PB2 of the 6522 VIA (IC6), which go to the 4051's A-B-C inputs; the 4051 connects the selected row (X0-X7) to its COM output. The columns are the 8 lines of I\/O port A of the AY-3-8912 PSG (IC4, register 14), written in negative logic: the column under test is 0, the others 1 (11110111 = column 3). The COM line comes back to the main board through transistor TR2 and reaches VIA PB3: PB3 reading 1 means the key is pressed. The ROM therefore makes 64 tests, one per row\/column crossing.\",\"lines\":[{\"id\":\"IOA0\",\"group\":\"col\",\"name\":\"COL0\",\"chip\":\"IC4\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"14\",\"conn_pin\":\"1\",\"also_it\":\"solo tastiera (registro 14 del PSG)\",\"also_en\":\"keyboard only (PSG register 14)\"},{\"id\":\"IOA1\",\"group\":\"col\",\"name\":\"COL1\",\"chip\":\"IC4\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"13\",\"conn_pin\":\"2\",\"also_it\":\"solo tastiera (registro 14 del PSG)\",\"also_en\":\"keyboard only (PSG register 14)\"},{\"id\":\"IOA2\",\"group\":\"col\",\"name\":\"COL2\",\"chip\":\"IC4\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"12\",\"conn_pin\":\"3\",\"also_it\":\"solo tastiera (registro 14 del PSG)\",\"also_en\":\"keyboard only (PSG register 14)\"},{\"id\":\"IOA3\",\"group\":\"col\",\"name\":\"COL3\",\"chip\":\"IC4\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"11\",\"conn_pin\":\"4\",\"also_it\":\"solo tastiera (registro 14 del PSG)\",\"also_en\":\"keyboard only (PSG register 14)\"},{\"id\":\"IOA4\",\"group\":\"col\",\"name\":\"COL4\",\"chip\":\"IC4\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"10\",\"conn_pin\":\"12\",\"also_it\":\"solo tastiera (registro 14 del PSG)\",\"also_en\":\"keyboard only (PSG register 14)\"},{\"id\":\"IOA5\",\"group\":\"col\",\"name\":\"COL5\",\"chip\":\"IC4\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"9\",\"conn_pin\":\"11\",\"also_it\":\"solo tastiera (registro 14 del PSG)\",\"also_en\":\"keyboard only (PSG register 14)\"},{\"id\":\"IOA6\",\"group\":\"col\",\"name\":\"COL6\",\"chip\":\"IC4\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"8\",\"conn_pin\":\"9\",\"also_it\":\"solo tastiera (registro 14 del PSG)\",\"also_en\":\"keyboard only (PSG register 14)\"},{\"id\":\"IOA7\",\"group\":\"col\",\"name\":\"COL7\",\"chip\":\"IC4\",\"chip_part\":\"AY-3-8912\",\"chip_pin\":\"7\",\"conn_pin\":\"5\",\"also_it\":\"solo tastiera (registro 14 del PSG)\",\"also_en\":\"keyboard only (PSG register 14)\"},{\"id\":\"ROW0\",\"group\":\"row\",\"name\":\"ROW0 (X0)\",\"chip\":\"IC1 (tastiera \/ keyboard)\",\"chip_part\":\"4051B\",\"chip_pin\":\"13\",\"conn_pin\":\"\",\"also_it\":\"solo sul PCB tastiera, selezionata con PB2-PB0 = 0\",\"also_en\":\"keyboard PCB only, selected when PB2-PB0 = 0\"},{\"id\":\"ROW1\",\"group\":\"row\",\"name\":\"ROW1 (X1)\",\"chip\":\"IC1 (tastiera \/ keyboard)\",\"chip_part\":\"4051B\",\"chip_pin\":\"14\",\"conn_pin\":\"\",\"also_it\":\"solo sul PCB tastiera, selezionata con PB2-PB0 = 1\",\"also_en\":\"keyboard PCB only, selected when PB2-PB0 = 1\"},{\"id\":\"ROW2\",\"group\":\"row\",\"name\":\"ROW2 (X2)\",\"chip\":\"IC1 (tastiera \/ keyboard)\",\"chip_part\":\"4051B\",\"chip_pin\":\"15\",\"conn_pin\":\"\",\"also_it\":\"solo sul PCB tastiera, selezionata con PB2-PB0 = 2\",\"also_en\":\"keyboard PCB only, selected when PB2-PB0 = 2\"},{\"id\":\"ROW3\",\"group\":\"row\",\"name\":\"ROW3 (X3)\",\"chip\":\"IC1 (tastiera \/ keyboard)\",\"chip_part\":\"4051B\",\"chip_pin\":\"12\",\"conn_pin\":\"\",\"also_it\":\"solo sul PCB tastiera, selezionata con PB2-PB0 = 3\",\"also_en\":\"keyboard PCB only, selected when PB2-PB0 = 3\"},{\"id\":\"ROW4\",\"group\":\"row\",\"name\":\"ROW4 (X4)\",\"chip\":\"IC1 (tastiera \/ keyboard)\",\"chip_part\":\"4051B\",\"chip_pin\":\"1\",\"conn_pin\":\"\",\"also_it\":\"solo sul PCB tastiera, selezionata con PB2-PB0 = 4\",\"also_en\":\"keyboard PCB only, selected when PB2-PB0 = 4\"},{\"id\":\"ROW5\",\"group\":\"row\",\"name\":\"ROW5 (X5)\",\"chip\":\"IC1 (tastiera \/ keyboard)\",\"chip_part\":\"4051B\",\"chip_pin\":\"5\",\"conn_pin\":\"\",\"also_it\":\"solo sul PCB tastiera, selezionata con PB2-PB0 = 5\",\"also_en\":\"keyboard PCB only, selected when PB2-PB0 = 5\"},{\"id\":\"ROW6\",\"group\":\"row\",\"name\":\"ROW6 (X6)\",\"chip\":\"IC1 (tastiera \/ keyboard)\",\"chip_part\":\"4051B\",\"chip_pin\":\"2\",\"conn_pin\":\"\",\"also_it\":\"solo sul PCB tastiera, selezionata con PB2-PB0 = 6\",\"also_en\":\"keyboard PCB only, selected when PB2-PB0 = 6\"},{\"id\":\"ROW7\",\"group\":\"row\",\"name\":\"ROW7 (X7)\",\"chip\":\"IC1 (tastiera \/ keyboard)\",\"chip_part\":\"4051B\",\"chip_pin\":\"4\",\"conn_pin\":\"\",\"also_it\":\"solo sul PCB tastiera, selezionata con PB2-PB0 = 7\",\"also_en\":\"keyboard PCB only, selected when PB2-PB0 = 7\"},{\"id\":\"PB0\",\"group\":\"extra\",\"name\":\"ROW SEL A\",\"chip\":\"IC6\",\"chip_part\":\"6522 VIA\",\"chip_pin\":\"10\",\"conn_pin\":\"8\",\"also_it\":\"ingresso A del 4051 IC1 (pin 11) sulla tastiera\",\"also_en\":\"4051 IC1 input A (pin 11) on the keyboard\"},{\"id\":\"PB1\",\"group\":\"extra\",\"name\":\"ROW SEL B\",\"chip\":\"IC6\",\"chip_part\":\"6522 VIA\",\"chip_pin\":\"11\",\"conn_pin\":\"7\",\"also_it\":\"ingresso B del 4051 IC1 (pin 10) sulla tastiera\",\"also_en\":\"4051 IC1 input B (pin 10) on the keyboard\"},{\"id\":\"PB2\",\"group\":\"extra\",\"name\":\"ROW SEL C\",\"chip\":\"IC6\",\"chip_part\":\"6522 VIA\",\"chip_pin\":\"12\",\"conn_pin\":\"6\",\"also_it\":\"ingresso C del 4051 IC1 (pin 9) sulla tastiera\",\"also_en\":\"4051 IC1 input C (pin 9) on the keyboard\"},{\"id\":\"COM\",\"group\":\"extra\",\"name\":\"SENSE (PB3)\",\"chip\":\"IC6\",\"chip_part\":\"6522 VIA\",\"chip_pin\":\"13\",\"conn_pin\":\"13\",\"also_it\":\"COM del 4051 (pin 3) -> TR2 -> PB3 del VIA\",\"also_en\":\"4051 COM (pin 3) -> TR2 -> VIA PB3\"},{\"id\":\"NMI\",\"group\":\"extra\",\"name\":\"NMI\",\"chip\":\"IC5\",\"chip_part\":\"6502\",\"chip_pin\":\"6\",\"conn_pin\":\"\",\"also_it\":\"pulsante SW1 sulla scheda madre, non passa dal connettore tastiera\",\"also_en\":\"button SW1 on the main board, not on the keyboard connector\"}],\"connector\":{\"ref\":\"PL3\",\"it\":\"Connettore tastiera PL3, 14 vie (cavo piatto con presa sui pin della scheda madre)\",\"en\":\"Keyboard connector PL3, 14-way (ribbon cable with socket onto the main board pins)\",\"pins\":[{\"n\":\"1\",\"sig\":\"IOA0\"},{\"n\":\"2\",\"sig\":\"IOA1\"},{\"n\":\"3\",\"sig\":\"IOA2\"},{\"n\":\"4\",\"sig\":\"IOA3\"},{\"n\":\"5\",\"sig\":\"IOA7\"},{\"n\":\"6\",\"sig\":\"PB2\",\"note_it\":\"selezione riga C, 4051 pin 9\",\"note_en\":\"row select C, 4051 pin 9\"},{\"n\":\"7\",\"sig\":\"PB1\",\"note_it\":\"selezione riga B, 4051 pin 10\",\"note_en\":\"row select B, 4051 pin 10\"},{\"n\":\"8\",\"sig\":\"PB0\",\"note_it\":\"selezione riga A, 4051 pin 11\",\"note_en\":\"row select A, 4051 pin 11\"},{\"n\":\"9\",\"sig\":\"IOA6\"},{\"n\":\"10\",\"sig\":\"GND\",\"note_it\":\"0 V: 4051 pin 8 (VSS), 7 (VEE) e 6 (INH)\",\"note_en\":\"0 V: 4051 pin 8 (VSS), 7 (VEE) and 6 (INH)\"},{\"n\":\"11\",\"sig\":\"IOA5\"},{\"n\":\"12\",\"sig\":\"IOA4\"},{\"n\":\"13\",\"sig\":\"COM\",\"note_it\":\"uscita COM del 4051 (pin 3), va a TR2\",\"note_en\":\"4051 COM output (pin 3), goes to TR2\"},{\"n\":\"14\",\"sig\":\"+5V\",\"note_it\":\"alimentazione 4051 pin 16 (VDD)\",\"note_en\":\"4051 supply pin 16 (VDD)\"}]},\"layout\":[{\"id\":\"1\",\"t\":\"1\",\"t2\":\"!\",\"x\":0.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"2\",\"t\":\"2\",\"t2\":\"@\",\"x\":1.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"3\",\"t\":\"3\",\"t2\":\"#\",\"x\":2.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"4\",\"t\":\"4\",\"t2\":\"$\",\"x\":3.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"5\",\"t\":\"5\",\"t2\":\"%\",\"x\":4.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"6\",\"t\":\"6\",\"t2\":\"^\",\"x\":5.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"7\",\"t\":\"7\",\"t2\":\"&\",\"x\":6.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"8\",\"t\":\"8\",\"t2\":\"*\",\"x\":7.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"9\",\"t\":\"9\",\"t2\":\"(\",\"x\":8.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"0\",\"t\":\"0\",\"t2\":\")\",\"x\":9.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"minus\",\"t\":\"-\",\"t2\":\"\u00a3\",\"x\":10.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"equal\",\"t\":\"=\",\"t2\":\"+\",\"x\":11.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"backslash\",\"t\":\"\\\\\",\"t2\":\"|\",\"x\":12.5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"esc\",\"t\":\"ESC\",\"x\":0,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"q\",\"t\":\"Q\",\"x\":1,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"w\",\"t\":\"W\",\"x\":2,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"e\",\"t\":\"E\",\"x\":3,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"r\",\"t\":\"R\",\"x\":4,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"t\",\"t\":\"T\",\"x\":5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"y\",\"t\":\"Y\",\"x\":6,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"u\",\"t\":\"U\",\"x\":7,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"i\",\"t\":\"I\",\"x\":8,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"o\",\"t\":\"O\",\"x\":9,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"p\",\"t\":\"P\",\"x\":10,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"lbracket\",\"t\":\"[\",\"t2\":\"{\",\"x\":11,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"rbracket\",\"t\":\"]\",\"t2\":\"}\",\"x\":12,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"del\",\"t\":\"DEL\",\"x\":13,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"ctrl\",\"t\":\"CTRL\",\"x\":0.25,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"a\",\"t\":\"A\",\"x\":1.25,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"s\",\"t\":\"S\",\"x\":2.25,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"d\",\"t\":\"D\",\"x\":3.25,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"f\",\"t\":\"F\",\"x\":4.25,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"g\",\"t\":\"G\",\"x\":5.25,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"h\",\"t\":\"H\",\"x\":6.25,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"j\",\"t\":\"J\",\"x\":7.25,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"k\",\"t\":\"K\",\"x\":8.25,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"l\",\"t\":\"L\",\"x\":9.25,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"semicolon\",\"t\":\";\",\"t2\":\":\",\"x\":10.25,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"quote\",\"t\":\"'\",\"t2\":\"\\\"\",\"x\":11.25,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"return\",\"t\":\"RETURN\",\"x\":12.25,\"y\":2,\"w\":1.5,\"h\":1},{\"id\":\"lshift\",\"t\":\"SHIFT\",\"x\":0.25,\"y\":3,\"w\":1.5,\"h\":1},{\"id\":\"z\",\"t\":\"Z\",\"x\":1.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"x\",\"t\":\"X\",\"x\":2.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"c\",\"t\":\"C\",\"x\":3.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"v\",\"t\":\"V\",\"x\":4.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"b\",\"t\":\"B\",\"x\":5.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"n\",\"t\":\"N\",\"x\":6.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"m\",\"t\":\"M\",\"x\":7.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"comma\",\"t\":\",\",\"t2\":\"<\",\"x\":8.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"period\",\"t\":\".\",\"t2\":\">\",\"x\":9.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"slash\",\"t\":\"\/\",\"t2\":\"?\",\"x\":10.75,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"rshift\",\"t\":\"SHIFT\",\"x\":11.75,\"y\":3,\"w\":1.5,\"h\":1},{\"id\":\"left\",\"t\":\"\u2190\",\"x\":0.75,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"down\",\"t\":\"\u2193\",\"x\":1.75,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"space\",\"t\":\"SPACE\",\"x\":2.875,\"y\":4,\"w\":7.875,\"h\":1},{\"id\":\"up\",\"t\":\"\u2191\",\"x\":10.75,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"right\",\"t\":\"\u2192\",\"x\":11.75,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"funct\",\"t\":\"FUNCT\",\"x\":12.75,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"reset\",\"t\":\"RESET\",\"x\":12.75,\"y\":5.5,\"w\":1,\"h\":1}],\"matrix\":{\"3\":[\"IOA7\",\"ROW0\"],\"x\":[\"IOA6\",\"ROW0\"],\"1\":[\"IOA5\",\"ROW0\"],\"v\":[\"IOA3\",\"ROW0\"],\"5\":[\"IOA2\",\"ROW0\"],\"n\":[\"IOA1\",\"ROW0\"],\"7\":[\"IOA0\",\"ROW0\"],\"d\":[\"IOA7\",\"ROW1\"],\"q\":[\"IOA6\",\"ROW1\"],\"esc\":[\"IOA5\",\"ROW1\"],\"f\":[\"IOA3\",\"ROW1\"],\"r\":[\"IOA2\",\"ROW1\"],\"t\":[\"IOA1\",\"ROW1\"],\"j\":[\"IOA0\",\"ROW1\"],\"c\":[\"IOA7\",\"ROW2\"],\"2\":[\"IOA6\",\"ROW2\"],\"z\":[\"IOA5\",\"ROW2\"],\"ctrl\":[\"IOA4\",\"ROW2\"],\"4\":[\"IOA3\",\"ROW2\"],\"b\":[\"IOA2\",\"ROW2\"],\"6\":[\"IOA1\",\"ROW2\"],\"m\":[\"IOA0\",\"ROW2\"],\"quote\":[\"IOA7\",\"ROW3\"],\"backslash\":[\"IOA6\",\"ROW3\"],\"minus\":[\"IOA3\",\"ROW3\"],\"semicolon\":[\"IOA2\",\"ROW3\"],\"9\":[\"IOA1\",\"ROW3\"],\"k\":[\"IOA0\",\"ROW3\"],\"right\":[\"IOA7\",\"ROW4\"],\"down\":[\"IOA6\",\"ROW4\"],\"left\":[\"IOA5\",\"ROW4\"],\"lshift\":[\"IOA4\",\"ROW4\"],\"up\":[\"IOA3\",\"ROW4\"],\"period\":[\"IOA2\",\"ROW4\"],\"comma\":[\"IOA1\",\"ROW4\"],\"space\":[\"IOA0\",\"ROW4\"],\"lbracket\":[\"IOA7\",\"ROW5\"],\"rbracket\":[\"IOA6\",\"ROW5\"],\"del\":[\"IOA5\",\"ROW5\"],\"funct\":[\"IOA4\",\"ROW5\"],\"p\":[\"IOA3\",\"ROW5\"],\"o\":[\"IOA2\",\"ROW5\"],\"i\":[\"IOA1\",\"ROW5\"],\"u\":[\"IOA0\",\"ROW5\"],\"w\":[\"IOA7\",\"ROW6\"],\"s\":[\"IOA6\",\"ROW6\"],\"a\":[\"IOA5\",\"ROW6\"],\"e\":[\"IOA3\",\"ROW6\"],\"g\":[\"IOA2\",\"ROW6\"],\"h\":[\"IOA1\",\"ROW6\"],\"y\":[\"IOA0\",\"ROW6\"],\"equal\":[\"IOA7\",\"ROW7\"],\"return\":[\"IOA5\",\"ROW7\"],\"rshift\":[\"IOA4\",\"ROW7\"],\"slash\":[\"IOA3\",\"ROW7\"],\"0\":[\"IOA2\",\"ROW7\"],\"l\":[\"IOA1\",\"ROW7\"],\"8\":[\"IOA0\",\"ROW7\"]},\"special\":{\"reset\":{\"lines\":[\"NMI\",\"GND\"],\"it\":\"Non \u00e8 un tasto della tastiera: \u00e8 il pulsante SW1 sulla scheda madre, raggiungibile dal foro sotto il case. Non \u00e8 nella matrice e non passa dal connettore tastiera; secondo MAME ed Euphoric agisce sulla linea NMI del 6502 (IC5 pin 6), cio\u00e8 fa un reset \\\"a caldo\\\" via software. Il reset all'accensione \u00e8 un'altra cosa (C21 e RP1).\",\"en\":\"Not a keyboard key: it is push button SW1 on the main board, reached through the hole under the case. It is not in the matrix and does not use the keyboard connector; according to MAME and Euphoric it acts on the 6502 NMI line (IC5 pin 6), i.e. a software \\\"warm\\\" reset. The power-up reset is separate (C21 and RP1).\"}},\"notes_it\":[\"Il 4051B non \u00e8 un 4028 e non c'\u00e8 un comparatore: secondo il manuale di servizio la riga selezionata dal 4051 torna al VIA (IC6) tramite il transistor TR2.\",\"Un'intera riga di tasti muta o intermittente (es. tutti quelli della riga 4: SHIFT sinistro, frecce, spazio, virgola, punto) fa pensare al 4051 IC1 della tastiera o alle sue saldature; il VIA IC6 \u00e8 possibile ma poco probabile. Le righe non sono sul connettore: si misurano ai pin del 4051 (X0=13, X1=14, X2=15, X3=12, X4=1, X5=5, X6=2, X7=4).\",\"Un'intera colonna muta fa pensare a un cattivo contatto su PL3 o al PSG AY-3-8912 IC4. Un AY guasto pu\u00f2 dare insieme niente audio e niente tastiera.\",\"Caratteri sbagliati o tasti che si \\\"premono\\\" da soli: corti tra righe e colonne sul PCB tastiera, oppure IC4 o IC6 in scheda madre.\",\"Con l'oscilloscopio su PL3: i pin colonna (1, 2, 3, 4, 5, 9, 11, 12) mostrano gli impulsi di scansione, i pin 6, 7, 8 il conteggio binario a 3 bit della riga, il pin 13 il ritorno COM.\",\"FUNCT \u00e8 un tasto normale della matrice (riga 5, IOA4); sull'Oric-1 quella posizione \u00e8 vuota.\",\"Sull'Atmos la tastiera \u00e8 collegata con un cavo piatto: il filo di colore diverso indica il pin 1, che sulla scheda madre \u00e8 il pi\u00f9 vicino all'altoparlante. Tutti i 14 pin sporgono anche sul lato superiore della scheda e si possono misurare l\u00ec.\",\"La tastiera dell'Atmos era un componente acquistato gi\u00e0 montato: Oric prevedeva come ricambio solo IC1 (4051B).\"],\"notes_en\":[\"The 4051B is not a 4028 and there is no comparator: according to the service manual the row selected by the 4051 returns to the VIA (IC6) through transistor TR2.\",\"A whole row of dead or intermittent keys (e.g. everything on row 4: left SHIFT, arrows, space, comma, full stop) points to keyboard 4051 IC1 or its solder joints; VIA IC6 is possible but unlikely. The rows are not on the connector: measure them on the 4051 pins (X0=13, X1=14, X2=15, X3=12, X4=1, X5=5, X6=2, X7=4).\",\"A whole dead column points to a bad contact on PL3 or to the AY-3-8912 PSG IC4. A faulty AY can give no sound and no keyboard at the same time.\",\"Wrong characters or keys that \\\"press\\\" themselves: row-to-column shorts on the keyboard PCB, or IC4 or IC6 on the main board.\",\"With a scope on PL3: the column pins (1, 2, 3, 4, 5, 9, 11, 12) show the scan pulses, pins 6, 7, 8 the 3-bit binary row count, pin 13 the COM return.\",\"FUNCT is an ordinary matrix key (row 5, IOA4); on the Oric-1 that position is empty.\",\"On the Atmos the keyboard is connected by a ribbon cable: the odd-coloured wire marks pin 1, which on the main board is the one nearest the loudspeaker. All 14 pins also stick out on the top side of the board and can be probed there.\",\"The Atmos keyboard was a bought-in assembly: Oric only listed IC1 (4051B) as a spare part.\"],\"board_it\":\"scheda madre BN0130 (la stessa dell'Oric-1 48K, circuit issue 7 \/ C\/N63); tastiera BN0138 issue 2 (9-11-83)\",\"board_en\":\"BN0130 main board (same as the Oric-1 48K, circuit issue 7 \/ C\/N63); BN0138 issue 2 keyboard (9-11-83)\"},\"pet\":{\"id\":\"pet\",\"name\":\"Commodore PET (graphics keyboard)\",\"sources\":[{\"t\":\"MAME src\/mame\/commodore\/pet.cpp (INPUT_PORTS pet, pia1_pb_r)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/mame\/commodore\/pet.cpp\"},{\"t\":\"VICE data\/PET\/gtk3_grus_pos.vkm (graphics keyboard matrix and layout sketch)\",\"u\":\"https:\/\/sourceforge.net\/p\/vice-emu\/code\/HEAD\/tree\/trunk\/vice\/data\/PET\/gtk3_grus_pos.vkm\"},{\"t\":\"6502.org PET index: keyboards (graphics keyboard decode table)\",\"u\":\"http:\/\/www.6502.org\/users\/andre\/petindex\/keyboards.html\"},{\"t\":\"Commodore schematic 8032029 sheet 3 'Cassette & Keyboard' (zimmers.net)\",\"u\":\"http:\/\/www.zimmers.net\/anonftp\/pub\/cbm\/schematics\/computers\/pet\/8032\/8032029-03.gif\"},{\"t\":\"Commodore schematic 320349 sheet 3 'Cassette & Keyboard' (zimmers.net)\",\"u\":\"http:\/\/www.zimmers.net\/anonftp\/pub\/cbm\/schematics\/computers\/pet\/2001N\/320349-3.gif\"},{\"t\":\"CBM 3032 graphic keyboard PCB photo (zimmers.net), used for key positions\",\"u\":\"http:\/\/www.zimmers.net\/anonftp\/pub\/cbm\/schematics\/computers\/pet\/2001N\/cbm3032keyboardPCB.jpg\"},{\"t\":\"6502.org PET index: pinouts (8296 J5 keyboard connector, same signal order)\",\"u\":\"https:\/\/6502.org\/users\/andre\/petindex\/pinouts.html\"},{\"t\":\"TexElec Petskey documentation (key sizes)\",\"u\":\"https:\/\/texelec.com\/wp-content\/uploads\/2020\/08\/Petskey-Keyboard-PCB-Documentation.pdf\"}],\"scan_it\":\"Il PIA 6520 UB12 ($E810) scrive il numero di riga (0-9) su PA0-PA3; il decodificatore 74LS145 UC11 porta bassa una sola delle 10 uscite (righe 0-9). Il PIA legge le 8 linee KIN0-KIN7 su PB0-PB7 ($E812), con pull-up da 10k nella rete UB11. Un tasto premuto collega una riga a una linea KIN.\",\"scan_en\":\"PIA 6520 UB12 ($E810) writes the row number (0-9) on PA0-PA3; the 74LS145 decoder UC11 pulls exactly one of its 10 outputs (rows 0-9) low. The PIA reads the eight KIN0-KIN7 lines on PB0-PB7 ($E812), pulled up by 10k resistors in network UB11. A pressed key connects one row to one KIN line.\",\"lines\":[{\"id\":\"R0\",\"group\":\"col\",\"name\":\"ROW 0 (74145 out 0)\",\"chip\":\"UC11\",\"chip_part\":\"74LS145 BCD-to-decimal decoder\",\"chip_pin\":\"1\",\"conn_pin\":\"1\",\"also\":\"\"},{\"id\":\"R1\",\"group\":\"col\",\"name\":\"ROW 1 (74145 out 1)\",\"chip\":\"UC11\",\"chip_part\":\"74LS145 BCD-to-decimal decoder\",\"chip_pin\":\"2\",\"conn_pin\":\"2\",\"also\":\"\"},{\"id\":\"R2\",\"group\":\"col\",\"name\":\"ROW 2 (74145 out 2)\",\"chip\":\"UC11\",\"chip_part\":\"74LS145 BCD-to-decimal decoder\",\"chip_pin\":\"3\",\"conn_pin\":\"3\",\"also\":\"\"},{\"id\":\"R3\",\"group\":\"col\",\"name\":\"ROW 3 (74145 out 3)\",\"chip\":\"UC11\",\"chip_part\":\"74LS145 BCD-to-decimal decoder\",\"chip_pin\":\"4\",\"conn_pin\":\"4\",\"also\":\"\"},{\"id\":\"R4\",\"group\":\"col\",\"name\":\"ROW 4 (74145 out 4)\",\"chip\":\"UC11\",\"chip_part\":\"74LS145 BCD-to-decimal decoder\",\"chip_pin\":\"5\",\"conn_pin\":\"5\",\"also\":\"\"},{\"id\":\"R5\",\"group\":\"col\",\"name\":\"ROW 5 (74145 out 5)\",\"chip\":\"UC11\",\"chip_part\":\"74LS145 BCD-to-decimal decoder\",\"chip_pin\":\"6\",\"conn_pin\":\"6\",\"also\":\"\"},{\"id\":\"R6\",\"group\":\"col\",\"name\":\"ROW 6 (74145 out 6)\",\"chip\":\"UC11\",\"chip_part\":\"74LS145 BCD-to-decimal decoder\",\"chip_pin\":\"7\",\"conn_pin\":\"7\",\"also\":\"\"},{\"id\":\"R7\",\"group\":\"col\",\"name\":\"ROW 7 (74145 out 7)\",\"chip\":\"UC11\",\"chip_part\":\"74LS145 BCD-to-decimal decoder\",\"chip_pin\":\"9\",\"conn_pin\":\"8\",\"also\":\"\"},{\"id\":\"R8\",\"group\":\"col\",\"name\":\"ROW 8 (74145 out 8)\",\"chip\":\"UC11\",\"chip_part\":\"74LS145 BCD-to-decimal decoder\",\"chip_pin\":\"10\",\"conn_pin\":\"9\",\"also\":\"\"},{\"id\":\"R9\",\"group\":\"col\",\"name\":\"ROW 9 (74145 out 9)\",\"chip\":\"UC11\",\"chip_part\":\"74LS145 BCD-to-decimal decoder\",\"chip_pin\":\"11\",\"conn_pin\":\"10\",\"also\":\"\"},{\"id\":\"PB0\",\"group\":\"row\",\"name\":\"KIN0\",\"chip\":\"UB12\",\"chip_part\":\"6520 PIA ($E812)\",\"chip_pin\":\"10\",\"conn_pin\":\"A\",\"also_it\":\"pull-up da 10k nella rete UB11\",\"also_en\":\"10k pull-up in network UB11\"},{\"id\":\"PB1\",\"group\":\"row\",\"name\":\"KIN1\",\"chip\":\"UB12\",\"chip_part\":\"6520 PIA ($E812)\",\"chip_pin\":\"11\",\"conn_pin\":\"B\",\"also_it\":\"pull-up da 10k nella rete UB11\",\"also_en\":\"10k pull-up in network UB11\"},{\"id\":\"PB2\",\"group\":\"row\",\"name\":\"KIN2\",\"chip\":\"UB12\",\"chip_part\":\"6520 PIA ($E812)\",\"chip_pin\":\"12\",\"conn_pin\":\"C\",\"also_it\":\"pull-up da 10k nella rete UB11\",\"also_en\":\"10k pull-up in network UB11\"},{\"id\":\"PB3\",\"group\":\"row\",\"name\":\"KIN3\",\"chip\":\"UB12\",\"chip_part\":\"6520 PIA ($E812)\",\"chip_pin\":\"13\",\"conn_pin\":\"D\",\"also_it\":\"pull-up da 10k nella rete UB11\",\"also_en\":\"10k pull-up in network UB11\"},{\"id\":\"PB4\",\"group\":\"row\",\"name\":\"KIN4\",\"chip\":\"UB12\",\"chip_part\":\"6520 PIA ($E812)\",\"chip_pin\":\"14\",\"conn_pin\":\"E\",\"also_it\":\"pull-up da 10k nella rete UB11\",\"also_en\":\"10k pull-up in network UB11\"},{\"id\":\"PB5\",\"group\":\"row\",\"name\":\"KIN5\",\"chip\":\"UB12\",\"chip_part\":\"6520 PIA ($E812)\",\"chip_pin\":\"15\",\"conn_pin\":\"F\",\"also_it\":\"pull-up da 10k nella rete UB11\",\"also_en\":\"10k pull-up in network UB11\"},{\"id\":\"PB6\",\"group\":\"row\",\"name\":\"KIN6\",\"chip\":\"UB12\",\"chip_part\":\"6520 PIA ($E812)\",\"chip_pin\":\"16\",\"conn_pin\":\"H\",\"also_it\":\"pull-up da 10k nella rete UB11\",\"also_en\":\"10k pull-up in network UB11\"},{\"id\":\"PB7\",\"group\":\"row\",\"name\":\"KIN7\",\"chip\":\"UB12\",\"chip_part\":\"6520 PIA ($E812)\",\"chip_pin\":\"17\",\"conn_pin\":\"J\",\"also_it\":\"pull-up da 10k nella rete UB11\",\"also_en\":\"10k pull-up in network UB11\"},{\"id\":\"PA0\",\"group\":\"extra\",\"name\":\"KEY A\",\"chip\":\"UB12\",\"chip_part\":\"6520 PIA ($E810)\",\"chip_pin\":\"2\",\"conn_pin\":\"\",\"also_it\":\"all'ingresso A del 74LS145 UC11 (pin 15)\",\"also_en\":\"to 74LS145 UC11 input A (pin 15)\"},{\"id\":\"PA1\",\"group\":\"extra\",\"name\":\"KEY B\",\"chip\":\"UB12\",\"chip_part\":\"6520 PIA ($E810)\",\"chip_pin\":\"3\",\"conn_pin\":\"\",\"also_it\":\"all'ingresso B del 74LS145 UC11 (pin 14)\",\"also_en\":\"to 74LS145 UC11 input B (pin 14)\"},{\"id\":\"PA2\",\"group\":\"extra\",\"name\":\"KEY C\",\"chip\":\"UB12\",\"chip_part\":\"6520 PIA ($E810)\",\"chip_pin\":\"4\",\"conn_pin\":\"\",\"also_it\":\"all'ingresso C del 74LS145 UC11 (pin 13)\",\"also_en\":\"to 74LS145 UC11 input C (pin 13)\"},{\"id\":\"PA3\",\"group\":\"extra\",\"name\":\"KEY D\",\"chip\":\"UB12\",\"chip_part\":\"6520 PIA ($E810)\",\"chip_pin\":\"5\",\"conn_pin\":\"\",\"also_it\":\"all'ingresso D del 74LS145 UC11 (pin 12)\",\"also_en\":\"to 74LS145 UC11 input D (pin 12)\"}],\"connector\":{\"ref\":\"J5\",\"it\":\"Connettore tastiera J5 sulla scheda madre (1-12 \/ A-J)\",\"en\":\"Keyboard connector J5 on the motherboard (1-12 \/ A-J)\",\"pins\":[{\"n\":\"1\",\"sig\":\"R0\"},{\"n\":\"2\",\"sig\":\"R1\"},{\"n\":\"3\",\"sig\":\"R2\"},{\"n\":\"4\",\"sig\":\"R3\"},{\"n\":\"5\",\"sig\":\"R4\"},{\"n\":\"6\",\"sig\":\"R5\"},{\"n\":\"7\",\"sig\":\"R6\"},{\"n\":\"8\",\"sig\":\"R7\"},{\"n\":\"9\",\"sig\":\"R8\"},{\"n\":\"10\",\"sig\":\"R9\"},{\"n\":\"11\",\"sig\":\"KEY\",\"note_it\":\"non disegnato sugli schemi 8032029\/320349; posizione della chiave (come documentato per il J5 dell'8296)\",\"note_en\":\"not drawn on 8032029\/320349; keying position (as documented for the 8296 J5)\"},{\"n\":\"12\",\"sig\":\"GND\"},{\"n\":\"A\",\"sig\":\"PB0\"},{\"n\":\"B\",\"sig\":\"PB1\"},{\"n\":\"C\",\"sig\":\"PB2\"},{\"n\":\"D\",\"sig\":\"PB3\"},{\"n\":\"E\",\"sig\":\"PB4\"},{\"n\":\"F\",\"sig\":\"PB5\"},{\"n\":\"H\",\"sig\":\"PB6\"},{\"n\":\"J\",\"sig\":\"PB7\"}]},\"layout\":[{\"id\":\"at\",\"t\":\"@\",\"x\":0,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"excl\",\"t\":\"!\",\"x\":1,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"quote\",\"t\":\"\\\"\",\"x\":2,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"hash\",\"t\":\"#\",\"x\":3,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"dollar\",\"t\":\"$\",\"x\":4,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"pct\",\"t\":\"%\",\"x\":5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"apos\",\"t\":\"'\",\"x\":6,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"amp\",\"t\":\"&\",\"x\":7,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"bslash\",\"t\":\"\\\\\",\"x\":8,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"lpar\",\"t\":\"(\",\"x\":9,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"rpar\",\"t\":\")\",\"x\":10,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"larrow\",\"t\":\"\u2190\",\"x\":11,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"lbrack\",\"t\":\"[\",\"x\":12,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"rbrack\",\"t\":\"]\",\"x\":13,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"rvs\",\"t\":\"OFF RVS\",\"x\":0,\"y\":1,\"w\":1.5,\"h\":1},{\"id\":\"q\",\"t\":\"Q\",\"x\":1.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"w\",\"t\":\"W\",\"x\":2.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"e\",\"t\":\"E\",\"x\":3.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"r\",\"t\":\"R\",\"x\":4.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"t\",\"t\":\"T\",\"x\":5.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"y\",\"t\":\"Y\",\"x\":6.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"u\",\"t\":\"U\",\"x\":7.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"i\",\"t\":\"I\",\"x\":8.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"o\",\"t\":\"O\",\"x\":9.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"p\",\"t\":\"P\",\"x\":10.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"uparrow\",\"t\":\"\u2191\",\"x\":11.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"lt\",\"t\":\"<\",\"x\":12.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"gt\",\"t\":\">\",\"x\":13.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"shlock\",\"t\":\"SHIFT LOCK\",\"x\":0.25,\"y\":2,\"w\":1.5,\"h\":1},{\"id\":\"a\",\"t\":\"A\",\"x\":1.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"s\",\"t\":\"S\",\"x\":2.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"d\",\"t\":\"D\",\"x\":3.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"f\",\"t\":\"F\",\"x\":4.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"g\",\"t\":\"G\",\"x\":5.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"h\",\"t\":\"H\",\"x\":6.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"j\",\"t\":\"J\",\"x\":7.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"k\",\"t\":\"K\",\"x\":8.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"l\",\"t\":\"L\",\"x\":9.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"colon\",\"t\":\":\",\"x\":10.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"stop\",\"t\":\"STOP\",\"t2\":\"RUN\",\"x\":11.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"return\",\"t\":\"RETURN\",\"x\":12.75,\"y\":2,\"w\":1.5,\"h\":1},{\"id\":\"lshift\",\"t\":\"SHIFT\",\"x\":0.25,\"y\":3,\"w\":2,\"h\":1},{\"id\":\"z\",\"t\":\"Z\",\"x\":2.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"x\",\"t\":\"X\",\"x\":3.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"c\",\"t\":\"C\",\"x\":4.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"v\",\"t\":\"V\",\"x\":5.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"b\",\"t\":\"B\",\"x\":6.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"n\",\"t\":\"N\",\"x\":7.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"m\",\"t\":\"M\",\"x\":8.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"comma\",\"t\":\",\",\"x\":9.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"semicolon\",\"t\":\";\",\"x\":10.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"quest\",\"t\":\"?\",\"x\":11.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"rshift\",\"t\":\"SHIFT\",\"x\":12.25,\"y\":3,\"w\":2,\"h\":1},{\"id\":\"space\",\"t\":\"SPACE\",\"x\":2.75,\"y\":4,\"w\":9,\"h\":1},{\"id\":\"home\",\"t\":\"HOME\",\"t2\":\"CLR\",\"x\":15.33,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"down\",\"t\":\"CRSR \u2193\",\"t2\":\"\u2191\",\"x\":16.33,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"right\",\"t\":\"CRSR \u2192\",\"t2\":\"\u2190\",\"x\":17.33,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"del\",\"t\":\"DEL\",\"t2\":\"INST\",\"x\":18.33,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"kp7\",\"t\":\"7\",\"x\":15.33,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"kp8\",\"t\":\"8\",\"x\":16.33,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"kp9\",\"t\":\"9\",\"x\":17.33,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"kpslash\",\"t\":\"\/\",\"x\":18.33,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"kp4\",\"t\":\"4\",\"x\":15.33,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"kp5\",\"t\":\"5\",\"x\":16.33,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"kp6\",\"t\":\"6\",\"x\":17.33,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"kpstar\",\"t\":\"*\",\"x\":18.33,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"kp1\",\"t\":\"1\",\"x\":15.33,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"kp2\",\"t\":\"2\",\"x\":16.33,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"kp3\",\"t\":\"3\",\"x\":17.33,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"kpplus\",\"t\":\"+\",\"x\":18.33,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"kp0\",\"t\":\"0\",\"x\":15.33,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"kpdot\",\"t\":\".\",\"x\":16.33,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"kpminus\",\"t\":\"-\",\"x\":17.33,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"kpequal\",\"t\":\"=\",\"x\":18.33,\"y\":4,\"w\":1,\"h\":1}],\"matrix\":{\"excl\":[\"R0\",\"PB0\"],\"hash\":[\"R0\",\"PB1\"],\"pct\":[\"R0\",\"PB2\"],\"amp\":[\"R0\",\"PB3\"],\"lpar\":[\"R0\",\"PB4\"],\"larrow\":[\"R0\",\"PB5\"],\"home\":[\"R0\",\"PB6\"],\"right\":[\"R0\",\"PB7\"],\"quote\":[\"R1\",\"PB0\"],\"dollar\":[\"R1\",\"PB1\"],\"apos\":[\"R1\",\"PB2\"],\"bslash\":[\"R1\",\"PB3\"],\"rpar\":[\"R1\",\"PB4\"],\"down\":[\"R1\",\"PB6\"],\"del\":[\"R1\",\"PB7\"],\"q\":[\"R2\",\"PB0\"],\"e\":[\"R2\",\"PB1\"],\"t\":[\"R2\",\"PB2\"],\"u\":[\"R2\",\"PB3\"],\"o\":[\"R2\",\"PB4\"],\"uparrow\":[\"R2\",\"PB5\"],\"kp7\":[\"R2\",\"PB6\"],\"kp9\":[\"R2\",\"PB7\"],\"w\":[\"R3\",\"PB0\"],\"r\":[\"R3\",\"PB1\"],\"y\":[\"R3\",\"PB2\"],\"i\":[\"R3\",\"PB3\"],\"p\":[\"R3\",\"PB4\"],\"kp8\":[\"R3\",\"PB6\"],\"kpslash\":[\"R3\",\"PB7\"],\"a\":[\"R4\",\"PB0\"],\"d\":[\"R4\",\"PB1\"],\"g\":[\"R4\",\"PB2\"],\"j\":[\"R4\",\"PB3\"],\"l\":[\"R4\",\"PB4\"],\"kp4\":[\"R4\",\"PB6\"],\"kp6\":[\"R4\",\"PB7\"],\"s\":[\"R5\",\"PB0\"],\"f\":[\"R5\",\"PB1\"],\"h\":[\"R5\",\"PB2\"],\"k\":[\"R5\",\"PB3\"],\"colon\":[\"R5\",\"PB4\"],\"kp5\":[\"R5\",\"PB6\"],\"kpstar\":[\"R5\",\"PB7\"],\"z\":[\"R6\",\"PB0\"],\"c\":[\"R6\",\"PB1\"],\"b\":[\"R6\",\"PB2\"],\"m\":[\"R6\",\"PB3\"],\"semicolon\":[\"R6\",\"PB4\"],\"return\":[\"R6\",\"PB5\"],\"kp1\":[\"R6\",\"PB6\"],\"kp3\":[\"R6\",\"PB7\"],\"x\":[\"R7\",\"PB0\"],\"v\":[\"R7\",\"PB1\"],\"n\":[\"R7\",\"PB2\"],\"comma\":[\"R7\",\"PB3\"],\"quest\":[\"R7\",\"PB4\"],\"kp2\":[\"R7\",\"PB6\"],\"kpplus\":[\"R7\",\"PB7\"],\"lshift\":[\"R8\",\"PB0\"],\"at\":[\"R8\",\"PB1\"],\"rbrack\":[\"R8\",\"PB2\"],\"gt\":[\"R8\",\"PB4\"],\"rshift\":[\"R8\",\"PB5\"],\"kp0\":[\"R8\",\"PB6\"],\"kpminus\":[\"R8\",\"PB7\"],\"rvs\":[\"R9\",\"PB0\"],\"lbrack\":[\"R9\",\"PB1\"],\"space\":[\"R9\",\"PB2\"],\"lt\":[\"R9\",\"PB3\"],\"stop\":[\"R9\",\"PB4\"],\"kpdot\":[\"R9\",\"PB6\"],\"kpequal\":[\"R9\",\"PB7\"],\"shlock\":[\"R8\",\"PB0\"]},\"special\":{\"shlock\":{\"lines\":[\"R8\",\"PB0\"],\"it\":\"SHIFT LOCK \u00e8 un tasto meccanico a ritenuta collegato in parallelo allo SHIFT sinistro (riga 8 \/ KIN0): se resta bloccato gi\u00f9, il PET vede SHIFT sempre premuto e stampa grafica al posto delle lettere.\",\"en\":\"SHIFT LOCK is a mechanically latching key wired in parallel with left SHIFT (row 8 \/ KIN0): if it stays latched down, the PET sees SHIFT held and prints graphics instead of letters.\"}},\"notes_it\":[\"Le uscite del 74LS145 sono pin 1-7 per le righe 0-6 e pin 9-11 per le righe 7-9 (pin 8 \u00e8 massa). Se non funziona un'intera riga, controllare quell'uscita di UC11; se non funzionano pi\u00f9 righe in modo strano, controllare PA0-PA3 di UB12 (ingressi A-D, pin 15-12 di UC11).\",\"Se non funziona una linea KIN (tasti sparsi su tutta la tastiera), controllare il pin PB del PIA UB12 e la resistenza di pull-up nella rete UB11.\",\"Sulla tastiera grafica le coppie di colonne fisiche seguono la matrice: nella fila alta si alternano riga 0 e riga 1, nella seconda riga 2 e 3, e cos\u00ec via.\",\"Sulla scheda 320349 (2001N\/3032\/primi 4016-4032) il PIA \u00e8 C7 e il 74LS145 \u00e8 C9, con gli stessi numeri di pin.\"],\"notes_en\":[\"The 74LS145 outputs are pins 1-7 for rows 0-6 and pins 9-11 for rows 7-9 (pin 8 is ground). If a whole row is dead, check that UC11 output; if several rows misbehave, check UB12 PA0-PA3 (UC11 inputs A-D, pins 15-12).\",\"If one KIN line is dead (scattered keys all over the keyboard), check the PIA UB12 PB pin and its pull-up in resistor network UB11.\",\"On the graphics keyboard the physical column pairs follow the matrix: the top row alternates rows 0 and 1, the second row rows 2 and 3, and so on.\",\"On board 320349 (2001N\/3032\/early 4016-4032) the PIA is C7 and the 74LS145 is C9, with the same pin numbers.\"],\"board_it\":\"scheda 8032029 (4032\/8032); la 320349 del 2001N\/3032 \u00e8 uguale con altre sigle (PIA C7, 74LS145 C9)\",\"board_en\":\"8032029 board (4032\/8032); the 2001N\/3032 board 320349 is the same with other references (PIA C7, 74LS145 C9)\",\"name_it\":\"Commodore PET (tastiera grafica)\"},\"plus4\":{\"id\":\"plus4\",\"name\":\"Commodore Plus\/4\",\"sources\":[{\"t\":\"MAME src\/mame\/commodore\/plus4.cpp (INPUT_PORTS plus4, ted_k_r)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/mame\/commodore\/plus4.cpp\"},{\"t\":\"Commodore Plus\/4 schematic 310164 rev C, sheet 1 of 4 (zimmers.net)\",\"u\":\"http:\/\/www.zimmers.net\/anonftp\/pub\/cbm\/schematics\/computers\/plus4\/plus4-310164-1of4.gif\"},{\"t\":\"Commodore Service Manual Model Plus\/4, PN 314001-04 (Oct 1984): keyboard matrix p.8, schematic p.7, parts list, 7360 pinout\",\"u\":\"http:\/\/www.zimmers.net\/anonftp\/pub\/cbm\/schematics\/computers\/plus4\/Plus_4_Service_Manual_314001-04_(1984_Oct).pdf\"},{\"t\":\"zimmers.net C16 & Plus\/4 parts cross-reference (parts.txt)\",\"u\":\"http:\/\/www.zimmers.net\/anonftp\/pub\/cbm\/schematics\/computers\/plus4\/parts.txt\"},{\"t\":\"Top-down photo of a Plus\/4 (Wikimedia Commons, Commodore_Plus-4.jpg) for key positions\",\"u\":\"https:\/\/commons.wikimedia.org\/wiki\/File:Commodore_Plus-4.jpg\"}],\"scan_it\":\"La CPU 7501\/8501 scrive la colonna da selezionare (bit a 0) nel latch tastiera U27 6529B all'indirizzo $FD30; le 8 uscite P0-P7 di U27 vanno al connettore tastiera CN8 tramite le ferriti FB41-FB48. Le righe tornano dal connettore tramite FB49-FB56 agli ingressi K0-K7 del TED U1 (piedini 15-22), con pull-up interni al TED: il KERNAL scrive $FF in $FF08 (cos\u00ec nessun joystick \u00e8 selezionato), il TED memorizza lo stato di K0-K7 e la CPU lo rilegge da $FF08. Tasto premuto = riga a livello basso. Attenzione: sul Plus\/4 il bus dati arriva a U27 'rimescolato' (D0 entra su DB1, D6 su DB0, ecc.), per cui la colonna software KBn non esce dal piedino Pn: la tabella delle linee riporta il piedino reale.\",\"scan_en\":\"The 7501\/8501 CPU writes the column to select (bit at 0) into the U27 6529B keyboard latch at $FD30; U27's eight outputs P0-P7 reach keyboard connector CN8 through ferrite beads FB41-FB48. The rows come back through FB49-FB56 to the TED U1 K0-K7 inputs (pins 15-22), which have internal pull-ups: the KERNAL writes $FF to $FF08 (so neither joystick is selected), the TED latches K0-K7 and the CPU reads them back from $FF08. Key pressed = row pulled low. Note: on the Plus\/4 the data bus reaches U27 scrambled (D0 enters on DB1, D6 on DB0, etc.), so software column KBn does not come out of pin Pn: the lines table gives the real pin.\",\"lines\":[{\"id\":\"KB0\",\"group\":\"col\",\"name\":\"KB0 ($FD30 bit 0) = U27 P1\",\"chip\":\"U27\",\"chip_part\":\"6529B SPI (keyboard latch)\",\"chip_pin\":\"3\",\"conn_pin\":\"18\",\"also_it\":\"il D0 della CPU entra in U27 su DB1 (pin 17); uscita P1 pin 3, ferrite FB41\",\"also_en\":\"CPU D0 enters U27 on DB1 (pin 17); output P1 pin 3, ferrite FB41\"},{\"id\":\"KB1\",\"group\":\"col\",\"name\":\"KB1 ($FD30 bit 1) = U27 P2\",\"chip\":\"U27\",\"chip_part\":\"6529B SPI (keyboard latch)\",\"chip_pin\":\"4\",\"conn_pin\":\"7\",\"also_it\":\"il D1 della CPU entra in U27 su DB2 (pin 16); uscita P2 pin 4, ferrite FB42\",\"also_en\":\"CPU D1 enters U27 on DB2 (pin 16); output P2 pin 4, ferrite FB42\"},{\"id\":\"KB2\",\"group\":\"col\",\"name\":\"KB2 ($FD30 bit 2) = U27 P4\",\"chip\":\"U27\",\"chip_part\":\"6529B SPI (keyboard latch)\",\"chip_pin\":\"6\",\"conn_pin\":\"11\",\"also_it\":\"il D2 della CPU entra in U27 su DB4 (pin 14); uscita P4 pin 6, ferrite FB43\",\"also_en\":\"CPU D2 enters U27 on DB4 (pin 14); output P4 pin 6, ferrite FB43\"},{\"id\":\"KB3\",\"group\":\"col\",\"name\":\"KB3 ($FD30 bit 3) = U27 P5\",\"chip\":\"U27\",\"chip_part\":\"6529B SPI (keyboard latch)\",\"chip_pin\":\"7\",\"conn_pin\":\"10\",\"also_it\":\"il D3 della CPU entra in U27 su DB5 (pin 13); uscita P5 pin 7, ferrite FB44\",\"also_en\":\"CPU D3 enters U27 on DB5 (pin 13); output P5 pin 7, ferrite FB44\"},{\"id\":\"KB4\",\"group\":\"col\",\"name\":\"KB4 ($FD30 bit 4) = U27 P3\",\"chip\":\"U27\",\"chip_part\":\"6529B SPI (keyboard latch)\",\"chip_pin\":\"5\",\"conn_pin\":\"12\",\"also_it\":\"il D4 della CPU entra in U27 su DB3 (pin 15); uscita P3 pin 5, ferrite FB45\",\"also_en\":\"CPU D4 enters U27 on DB3 (pin 15); output P3 pin 5, ferrite FB45\"},{\"id\":\"KB5\",\"group\":\"col\",\"name\":\"KB5 ($FD30 bit 5) = U27 P7\",\"chip\":\"U27\",\"chip_part\":\"6529B SPI (keyboard latch)\",\"chip_pin\":\"9\",\"conn_pin\":\"1\",\"also_it\":\"il D5 della CPU entra in U27 su DB7 (pin 11); uscita P7 pin 9, ferrite FB46\",\"also_en\":\"CPU D5 enters U27 on DB7 (pin 11); output P7 pin 9, ferrite FB46\"},{\"id\":\"KB6\",\"group\":\"col\",\"name\":\"KB6 ($FD30 bit 6) = U27 P0\",\"chip\":\"U27\",\"chip_part\":\"6529B SPI (keyboard latch)\",\"chip_pin\":\"2\",\"conn_pin\":\"15\",\"also_it\":\"il D6 della CPU entra in U27 su DB0 (pin 18); uscita P0 pin 2, ferrite FB47\",\"also_en\":\"CPU D6 enters U27 on DB0 (pin 18); output P0 pin 2, ferrite FB47\"},{\"id\":\"KB7\",\"group\":\"col\",\"name\":\"KB7 ($FD30 bit 7) = U27 P6\",\"chip\":\"U27\",\"chip_part\":\"6529B SPI (keyboard latch)\",\"chip_pin\":\"8\",\"conn_pin\":\"5\",\"also_it\":\"il D7 della CPU entra in U27 su DB6 (pin 12); uscita P6 pin 8, ferrite FB48\",\"also_en\":\"CPU D7 enters U27 on DB6 (pin 12); output P6 pin 8, ferrite FB48\"},{\"id\":\"K0\",\"group\":\"row\",\"name\":\"K0\",\"chip\":\"U1\",\"chip_part\":\"TED 7360\/8360\",\"chip_pin\":\"15\",\"conn_pin\":\"17\",\"also_it\":\"JOY0 CN5 pin 1 (su) tramite CR11, JOY1 CN6 pin 1 (su) tramite CR16; ferrite FB49\",\"also_en\":\"JOY0 CN5 pin 1 (up) via CR11, JOY1 CN6 pin 1 (up) via CR16; ferrite FB49\"},{\"id\":\"K1\",\"group\":\"row\",\"name\":\"K1\",\"chip\":\"U1\",\"chip_part\":\"TED 7360\/8360\",\"chip_pin\":\"16\",\"conn_pin\":\"14\",\"also_it\":\"JOY0 CN5 pin 2 (gi\u00f9) tramite CR12, JOY1 CN6 pin 2 (gi\u00f9) tramite CR17; ferrite FB50\",\"also_en\":\"JOY0 CN5 pin 2 (down) via CR12, JOY1 CN6 pin 2 (down) via CR17; ferrite FB50\"},{\"id\":\"K2\",\"group\":\"row\",\"name\":\"K2\",\"chip\":\"U1\",\"chip_part\":\"TED 7360\/8360\",\"chip_pin\":\"17\",\"conn_pin\":\"13\",\"also_it\":\"JOY0 CN5 pin 3 (sinistra) tramite CR13, JOY1 CN6 pin 3 (sinistra) tramite CR18; ferrite FB51\",\"also_en\":\"JOY0 CN5 pin 3 (left) via CR13, JOY1 CN6 pin 3 (left) via CR18; ferrite FB51\"},{\"id\":\"K3\",\"group\":\"row\",\"name\":\"K3\",\"chip\":\"U1\",\"chip_part\":\"TED 7360\/8360\",\"chip_pin\":\"18\",\"conn_pin\":\"16\",\"also_it\":\"JOY0 CN5 pin 4 (destra) tramite CR14, JOY1 CN6 pin 4 (destra) tramite CR19; ferrite FB52\",\"also_en\":\"JOY0 CN5 pin 4 (right) via CR14, JOY1 CN6 pin 4 (right) via CR19; ferrite FB52\"},{\"id\":\"K4\",\"group\":\"row\",\"name\":\"K4\",\"chip\":\"U1\",\"chip_part\":\"TED 7360\/8360\",\"chip_pin\":\"19\",\"conn_pin\":\"6\",\"also_it\":\"ferrite FB53\",\"also_en\":\"ferrite FB53\"},{\"id\":\"K5\",\"group\":\"row\",\"name\":\"K5\",\"chip\":\"U1\",\"chip_part\":\"TED 7360\/8360\",\"chip_pin\":\"20\",\"conn_pin\":\"8\",\"also_it\":\"ferrite FB54\",\"also_en\":\"ferrite FB54\"},{\"id\":\"K6\",\"group\":\"row\",\"name\":\"K6\",\"chip\":\"U1\",\"chip_part\":\"TED 7360\/8360\",\"chip_pin\":\"21\",\"conn_pin\":\"9\",\"also_it\":\"JOY0 CN5 pin 6 (fuoco) tramite CR15; ferrite FB55\",\"also_en\":\"JOY0 CN5 pin 6 (fire) via CR15; ferrite FB55\"},{\"id\":\"K7\",\"group\":\"row\",\"name\":\"K7\",\"chip\":\"U1\",\"chip_part\":\"TED 7360\/8360\",\"chip_pin\":\"22\",\"conn_pin\":\"2\",\"also_it\":\"JOY1 CN6 pin 6 (fuoco) tramite CR20; ferrite FB56\",\"also_en\":\"JOY1 CN6 pin 6 (fire) via CR20; ferrite FB56\"}],\"connector\":{\"ref\":\"CN8\",\"it\":\"Connettore matrice tastiera 18 pin (femmina, sulla scheda madre)\",\"en\":\"18-pin keyboard matrix connector (female, on the main board)\",\"pins\":[{\"n\":\"1\",\"sig\":\"KB5\"},{\"n\":\"2\",\"sig\":\"K7\"},{\"n\":\"3\",\"sig\":\"GND\"},{\"n\":\"4\",\"sig\":\"+5V\",\"note_it\":\"tramite la ferrite FB57; probabilmente alimenta il LED di accensione sulla tastiera\",\"note_en\":\"through ferrite FB57; most likely feeds the power LED on the keyboard assembly\"},{\"n\":\"5\",\"sig\":\"KB7\"},{\"n\":\"6\",\"sig\":\"K4\"},{\"n\":\"7\",\"sig\":\"KB1\"},{\"n\":\"8\",\"sig\":\"K5\"},{\"n\":\"9\",\"sig\":\"K6\"},{\"n\":\"10\",\"sig\":\"KB3\"},{\"n\":\"11\",\"sig\":\"KB2\"},{\"n\":\"12\",\"sig\":\"KB4\"},{\"n\":\"13\",\"sig\":\"K2\"},{\"n\":\"14\",\"sig\":\"K1\"},{\"n\":\"15\",\"sig\":\"KB6\"},{\"n\":\"16\",\"sig\":\"K3\"},{\"n\":\"17\",\"sig\":\"K0\"},{\"n\":\"18\",\"sig\":\"KB0\"}]},\"layout\":[{\"id\":\"f1\",\"t\":\"F1\",\"t2\":\"F4\",\"x\":0.95,\"y\":0.25,\"w\":1.7,\"h\":0.5},{\"id\":\"f2\",\"t\":\"F2\",\"t2\":\"F5\",\"x\":2.9,\"y\":0.25,\"w\":1.7,\"h\":0.5},{\"id\":\"f3\",\"t\":\"F3\",\"t2\":\"F6\",\"x\":4.85,\"y\":0.25,\"w\":1.7,\"h\":0.5},{\"id\":\"help\",\"t\":\"HELP\",\"t2\":\"F7\",\"x\":6.85,\"y\":0.25,\"w\":1.7,\"h\":0.5},{\"id\":\"esc\",\"t\":\"ESC\",\"x\":0,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"1\",\"t\":\"1\",\"t2\":\"!\",\"x\":1,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"2\",\"t\":\"2\",\"t2\":\"\\\"\",\"x\":2,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"3\",\"t\":\"3\",\"t2\":\"#\",\"x\":3,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"4\",\"t\":\"4\",\"t2\":\"$\",\"x\":4,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"5\",\"t\":\"5\",\"t2\":\"%\",\"x\":5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"6\",\"t\":\"6\",\"t2\":\"&\",\"x\":6,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"7\",\"t\":\"7\",\"t2\":\"'\",\"x\":7,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"8\",\"t\":\"8\",\"t2\":\"(\",\"x\":8,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"9\",\"t\":\"9\",\"t2\":\")\",\"x\":9,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"0\",\"t\":\"0\",\"t2\":\"\u2191\",\"x\":10,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"plus\",\"t\":\"+\",\"x\":11,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"minus\",\"t\":\"\u2212\",\"x\":12,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"equal\",\"t\":\"=\",\"x\":13,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"home\",\"t\":\"CLEAR\",\"t2\":\"HOME\",\"x\":14,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"del\",\"t\":\"INST\",\"t2\":\"DEL\",\"x\":15,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"ctrl\",\"t\":\"CONTROL\",\"x\":0,\"y\":2,\"w\":1.5,\"h\":1},{\"id\":\"q\",\"t\":\"Q\",\"x\":1.5,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"w\",\"t\":\"W\",\"x\":2.5,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"e\",\"t\":\"E\",\"x\":3.5,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"r\",\"t\":\"R\",\"x\":4.5,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"t\",\"t\":\"T\",\"x\":5.5,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"y\",\"t\":\"Y\",\"x\":6.5,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"u\",\"t\":\"U\",\"x\":7.5,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"i\",\"t\":\"I\",\"x\":8.5,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"o\",\"t\":\"O\",\"x\":9.5,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"p\",\"t\":\"P\",\"x\":10.5,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"at\",\"t\":\"@\",\"x\":11.5,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"pound\",\"t\":\"\u00a3\",\"x\":12.5,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"star\",\"t\":\"*\",\"x\":13.5,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"rctrl\",\"t\":\"CONTROL\",\"x\":14.5,\"y\":2,\"w\":1.5,\"h\":1},{\"id\":\"stop\",\"t\":\"RUN\",\"t2\":\"STOP\",\"x\":0,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"lock\",\"t\":\"SHIFT\",\"t2\":\"LOCK\",\"x\":1,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"a\",\"t\":\"A\",\"x\":2,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"s\",\"t\":\"S\",\"x\":3,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"d\",\"t\":\"D\",\"x\":4,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"f\",\"t\":\"F\",\"x\":5,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"g\",\"t\":\"G\",\"x\":6,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"h\",\"t\":\"H\",\"x\":7,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"j\",\"t\":\"J\",\"x\":8,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"k\",\"t\":\"K\",\"x\":9,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"l\",\"t\":\"L\",\"x\":10,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"colon\",\"t\":\":\",\"t2\":\"[\",\"x\":11,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"semi\",\"t\":\";\",\"t2\":\"]\",\"x\":12,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"ret\",\"t\":\"RETURN\",\"x\":13,\"y\":3,\"w\":2,\"h\":1},{\"id\":\"cbm\",\"t\":\"C=\",\"x\":0,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"lshift\",\"t\":\"SHIFT\",\"x\":1,\"y\":4,\"w\":1.5,\"h\":1},{\"id\":\"z\",\"t\":\"Z\",\"x\":2.5,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"x\",\"t\":\"X\",\"x\":3.5,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"c\",\"t\":\"C\",\"x\":4.5,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"v\",\"t\":\"V\",\"x\":5.5,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"b\",\"t\":\"B\",\"x\":6.5,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"n\",\"t\":\"N\",\"x\":7.5,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"m\",\"t\":\"M\",\"x\":8.5,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"comma\",\"t\":\",\",\"t2\":\"<\",\"x\":9.5,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"period\",\"t\":\".\",\"t2\":\">\",\"x\":10.5,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"slash\",\"t\":\"\/\",\"t2\":\"?\",\"x\":11.5,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"rshift\",\"t\":\"SHIFT\",\"x\":12.5,\"y\":4,\"w\":1.5,\"h\":1},{\"id\":\"space\",\"t\":\"SPACE\",\"x\":3.5,\"y\":5,\"w\":9,\"h\":1},{\"id\":\"up\",\"t\":\"\u2191\",\"x\":14.8,\"y\":4.1,\"w\":0.6,\"h\":0.6},{\"id\":\"left\",\"t\":\"\u2190\",\"x\":14.2,\"y\":4.7,\"w\":0.6,\"h\":0.6},{\"id\":\"right\",\"t\":\"\u2192\",\"x\":15.4,\"y\":4.7,\"w\":0.6,\"h\":0.6},{\"id\":\"down\",\"t\":\"\u2193\",\"x\":14.8,\"y\":5.3,\"w\":0.6,\"h\":0.6}],\"matrix\":{\"del\":[\"KB0\",\"K0\"],\"ret\":[\"KB0\",\"K1\"],\"pound\":[\"KB0\",\"K2\"],\"help\":[\"KB0\",\"K3\"],\"f1\":[\"KB0\",\"K4\"],\"f2\":[\"KB0\",\"K5\"],\"f3\":[\"KB0\",\"K6\"],\"at\":[\"KB0\",\"K7\"],\"3\":[\"KB1\",\"K0\"],\"w\":[\"KB1\",\"K1\"],\"a\":[\"KB1\",\"K2\"],\"4\":[\"KB1\",\"K3\"],\"z\":[\"KB1\",\"K4\"],\"s\":[\"KB1\",\"K5\"],\"e\":[\"KB1\",\"K6\"],\"lshift\":[\"KB1\",\"K7\"],\"5\":[\"KB2\",\"K0\"],\"r\":[\"KB2\",\"K1\"],\"d\":[\"KB2\",\"K2\"],\"6\":[\"KB2\",\"K3\"],\"c\":[\"KB2\",\"K4\"],\"f\":[\"KB2\",\"K5\"],\"t\":[\"KB2\",\"K6\"],\"x\":[\"KB2\",\"K7\"],\"7\":[\"KB3\",\"K0\"],\"y\":[\"KB3\",\"K1\"],\"g\":[\"KB3\",\"K2\"],\"8\":[\"KB3\",\"K3\"],\"b\":[\"KB3\",\"K4\"],\"h\":[\"KB3\",\"K5\"],\"u\":[\"KB3\",\"K6\"],\"v\":[\"KB3\",\"K7\"],\"9\":[\"KB4\",\"K0\"],\"i\":[\"KB4\",\"K1\"],\"j\":[\"KB4\",\"K2\"],\"0\":[\"KB4\",\"K3\"],\"m\":[\"KB4\",\"K4\"],\"k\":[\"KB4\",\"K5\"],\"o\":[\"KB4\",\"K6\"],\"n\":[\"KB4\",\"K7\"],\"down\":[\"KB5\",\"K0\"],\"p\":[\"KB5\",\"K1\"],\"l\":[\"KB5\",\"K2\"],\"up\":[\"KB5\",\"K3\"],\"period\":[\"KB5\",\"K4\"],\"colon\":[\"KB5\",\"K5\"],\"minus\":[\"KB5\",\"K6\"],\"comma\":[\"KB5\",\"K7\"],\"left\":[\"KB6\",\"K0\"],\"star\":[\"KB6\",\"K1\"],\"semi\":[\"KB6\",\"K2\"],\"right\":[\"KB6\",\"K3\"],\"esc\":[\"KB6\",\"K4\"],\"equal\":[\"KB6\",\"K5\"],\"plus\":[\"KB6\",\"K6\"],\"slash\":[\"KB6\",\"K7\"],\"1\":[\"KB7\",\"K0\"],\"home\":[\"KB7\",\"K1\"],\"ctrl\":[\"KB7\",\"K2\"],\"2\":[\"KB7\",\"K3\"],\"space\":[\"KB7\",\"K4\"],\"cbm\":[\"KB7\",\"K5\"],\"q\":[\"KB7\",\"K6\"],\"stop\":[\"KB7\",\"K7\"],\"rshift\":[\"KB1\",\"K7\"],\"lock\":[\"KB1\",\"K7\"],\"rctrl\":[\"KB7\",\"K2\"]},\"special\":{\"lock\":{\"lines\":[\"KB1\",\"K7\"],\"it\":\"SHIFT LOCK \u00e8 un tasto a ritenuta (meccanico) collegato in parallelo allo SHIFT sinistro: chiude KB1 (CN8-7) con K7 (CN8-2). Se resta incastrato abbassato, la tastiera sembra avere SHIFT sempre premuto.\",\"en\":\"SHIFT LOCK is a mechanically latching key wired in parallel with left SHIFT: it shorts KB1 (CN8-7) to K7 (CN8-2). If it is stuck down the machine behaves as if SHIFT were held.\"},\"rshift\":{\"lines\":[\"KB1\",\"K7\"],\"it\":\"I due SHIFT sono in parallelo sulla stessa posizione di matrice (KB1\/K7): il software non li distingue.\",\"en\":\"Both SHIFT keys are wired in parallel on the same matrix position (KB1\/K7): software cannot tell them apart.\"},\"rctrl\":{\"lines\":[\"KB7\",\"K2\"],\"it\":\"Il Plus\/4 ha due tasti CONTROL (ai due lati della fila Q-P), in parallelo sulla stessa posizione di matrice KB7\/K2.\",\"en\":\"The Plus\/4 has two CONTROL keys (at both ends of the Q-P row), wired in parallel on the same matrix position KB7\/K2.\"},\"reset\":{\"lines\":[],\"it\":\"Il pulsante RESET (laterale) non passa dalla tastiera: \u00e8 SW2 sulla scheda madre, che innesca il 555 U8; l'uscita, tramite l'inverter open-collector 7406 U7, pilota la linea RESET della CPU U2 e degli altri chip.\",\"en\":\"The (side) RESET button is not part of the keyboard: it is SW2 on the main board, which triggers 555 U8; its output, through open-collector inverter 7406 U7, drives the RESET line of CPU U2 and the other chips.\"}},\"notes_it\":[\"K0-K3, K6 e K7 sono condivise con le porte joystick (mini-DIN 8 poli CN5 'JOY0' e CN6 'JOY1'): pin 1-4 (su, gi\u00f9, sinistra, destra) di entrambe vanno su K0-K3 tramite i diodi 1N914 CR11-CR14 e CR16-CR19; il fuoco di CN5 (pin 6) va su K6 tramite CR15, quello di CN6 su K7 tramite CR20. Pull-up 3,3 k\u03a9 nelle reti RP1\/RP2.\",\"Il pin 8 di ogni porta joystick \u00e8 il 'comune' che il joystick chiude verso le direzioni: \u00e8 pilotato da una porta AND 74LS08 U4 col bit del bus dati scritto in $FF08 (CN5 = D2 tramite U4 pin 5\u21926, CN6 = D1 tramite U4 pin 9\u21928). Durante la scansione tastiera D1 e D2 sono a 1 e i diodi isolano i joystick.\",\"Diagnosi: se un'intera riga K0-K3\/K6\/K7 \u00e8 morta o sempre attiva, scollegare i joystick e controllare i diodi CR11-CR20 e U4. Se lo \u00e8 K4 o K5 il guasto \u00e8 solo lato tastiera\/TED. Una colonna KB morta (8 tasti) punta a U27, alle ferriti FB41-FB48 o al cavo.\",\"Le ferriti FB41-FB56 sono in serie a ogni linea: una ferrite interrotta d\u00e0 gli stessi sintomi di una pista tagliata.\",\"Coordinate dei tasti ricavate da una foto dall'alto: i quattro tasti funzione sono tasti piatti a striscia sopra la fila dei numeri; i tasti cursore sono un rombo ruotato di 45\u00b0 (disegnati qui con il rettangolo che li contiene).\"],\"notes_en\":[\"K0-K3, K6 and K7 are shared with the joystick ports (8-pin mini-DIN CN5 'JOY0' and CN6 'JOY1'): pins 1-4 (up, down, left, right) of both go to K0-K3 through 1N914 diodes CR11-CR14 and CR16-CR19; CN5 fire (pin 6) goes to K6 through CR15, CN6 fire to K7 through CR20. 3.3 k\u03a9 pull-ups in networks RP1\/RP2.\",\"Pin 8 of each joystick port is the common the joystick switches to its direction pins: it is driven by a 74LS08 U4 AND gate from the data-bus bit written to $FF08 (CN5 = D2 via U4 pin 5\u21926, CN6 = D1 via U4 pin 9\u21928). During the keyboard scan D1 and D2 are high and the diodes isolate the joysticks.\",\"Diagnosis: if a whole K0-K3\/K6\/K7 row is dead or always active, unplug the joysticks and check diodes CR11-CR20 and U4. If it is K4 or K5 the fault is on the keyboard\/TED side only. A dead KB column (8 keys) points at U27, ferrites FB41-FB48 or the cable.\",\"Ferrite beads FB41-FB56 sit in series with every line: an open bead gives the same symptoms as a cut track.\",\"Key coordinates measured from a top-down photo: the four function keys are flat strip keys above the number row; the cursor keys form a diamond rotated 45\u00b0 (drawn here as their bounding boxes).\"],\"board_it\":\"scheda 310163-01 (schema 310164 rev. C)\",\"board_en\":\"310163-01 board (schematic 310164 rev. C)\"},\"ql\":{\"id\":\"ql\",\"name\":\"Sinclair QL\",\"sources\":[{\"t\":\"MAME src\/mame\/sinclair\/ql.cpp (INPUT_PORTS Y0-Y7, ipc_port1_w = KBO0-7, ipc_bus_r = KBI0-7, JOY0\/JOY1)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/mame\/sinclair\/ql.cpp\"},{\"t\":\"Sinclair QL Service Manual (Thorn EMI Datatech, Oct 1985), PDF: section 1 paras 4.12-4.15, Figure 1.2 keyboard matrix interconnections, Figures 1.4\/1.5 circuit diagrams Issue 5\/6 (J11, J12, J3, J4, IC24, D1-D11, R17-R24, R62-R69), section 4 para 2.3 and Figure 4.2\",\"u\":\"https:\/\/spectrumcomputing.co.uk\/pub\/sinclair\/technical-docs\/QL_ServiceManual.pdf\"},{\"t\":\"Sinclair QL Service Manual, HTML edition (sinclairql.net), system description and fault diagnosis\",\"u\":\"https:\/\/sinclairql.net\/srv\/qlsm1.html\"},{\"t\":\"De Blauwe Schicht, QL Keys part 1 (9 x 11 membrane on J11\/J12, matrix from the service manual)\",\"u\":\"http:\/\/www.deblauweschicht.nl\/tinkering\/qlkeys1.html\"},{\"t\":\"The Sinclair QL Forum, 'QL Keyboard matrix Figure 4.2' (reports that Figure 4.2 is wrong; read only through a search summary)\",\"u\":\"https:\/\/www.theqlforum.com\/viewtopic.php?t=5244\"},{\"t\":\"Wikimedia Commons, Sinclair QL Top (photo used for key positions)\",\"u\":\"https:\/\/commons.wikimedia.org\/wiki\/File:Sinclair_QL_Top.jpg\"}],\"scan_it\":\"La tastiera non \u00e8 letta dal 68008 ma dal secondo processore, l'IPC 8049 (IC24, sullo schema 8749). L'IPC porta alta una alla volta le uscite di porta 1 P10-P17 (KBO0-KBO7, pin 27-34), ognuna attraverso un diodo (D4-D11) e con pull-up da 3K3, fino al connettore J11 (coda a 9 vie). Le otto righe KBI0-KBI7 tornano dal connettore J12 (coda a 11 vie) al bus dati DB0-DB7 dell'IPC (pin 12-19), tenute basse da pull-down da 10K (R17-R24): tasto premuto = bit a 1. SHIFT, CTRL e ALT stanno su tre piste separate della membrana (J11-9 da un lato, J12-2, J12-1 e J12-11 dall'altro) e arrivano su KBI0, KBI1 e KBI2 attraverso i diodi D1, D2 e D3, cos\u00ec si possono premere insieme agli altri tasti senza tasti fantasma. L'IPC passa poi i codici al 68008 tramite lo ZX8302 (IC23).\",\"scan_en\":\"The keyboard is not read by the 68008 but by the second processor, the 8049 IPC (IC24, 8749 on the schematic). The IPC drives its port 1 outputs P10-P17 (KBO0-KBO7, pins 27-34) high one at a time, each through a diode (D4-D11) with a 3K3 pull-up, to connector J11 (9-way tail). The eight rows KBI0-KBI7 come back from connector J12 (11-way tail) to the IPC data bus DB0-DB7 (pins 12-19), held low by 10K pull-downs (R17-R24): a pressed key reads as 1. SHIFT, CTRL and ALT use three separate membrane tracks (J11-9 on one side, J12-2, J12-1 and J12-11 on the other) and reach KBI0, KBI1 and KBI2 through diodes D1, D2 and D3, so they can be held with other keys without ghosting. The IPC then passes the key data to the 68008 through the ZX8302 (IC23).\",\"lines\":[{\"id\":\"KBO0\",\"group\":\"col\",\"name\":\"KBO0 (P10)\",\"chip\":\"IC24\",\"chip_part\":\"8049 IPC (8749 on the schematic)\",\"chip_pin\":\"27\",\"conn\":\"J11\",\"conn_pin\":\"1\",\"also_it\":\"diodo D4 tra P10 e J11, pull-up 3K3 (gruppo R62-R69); comune joystick J3 (CTL2) pin 1\",\"also_en\":\"diode D4 between P10 and J11, 3K3 pull-up (R62-R69 group); joystick common J3 (CTL2) pin 1\"},{\"id\":\"KBO1\",\"group\":\"col\",\"name\":\"KBO1 (P11)\",\"chip\":\"IC24\",\"chip_part\":\"8049 IPC (8749 on the schematic)\",\"chip_pin\":\"28\",\"conn\":\"J11\",\"conn_pin\":\"8\",\"also_it\":\"diodo D5 tra P11 e J11, pull-up 3K3 (gruppo R62-R69); comune joystick J4 (CTL1) pin 1\",\"also_en\":\"diode D5 between P11 and J11, 3K3 pull-up (R62-R69 group); joystick common J4 (CTL1) pin 1\"},{\"id\":\"KBO2\",\"group\":\"col\",\"name\":\"KBO2 (P12)\",\"chip\":\"IC24\",\"chip_part\":\"8049 IPC (8749 on the schematic)\",\"chip_pin\":\"29\",\"conn\":\"J11\",\"conn_pin\":\"6\",\"also_it\":\"diodo D6 tra P12 e J11, pull-up 3K3 (gruppo R62-R69)\",\"also_en\":\"diode D6 between P12 and J11, 3K3 pull-up (R62-R69 group)\"},{\"id\":\"KBO3\",\"group\":\"col\",\"name\":\"KBO3 (P13)\",\"chip\":\"IC24\",\"chip_part\":\"8049 IPC (8749 on the schematic)\",\"chip_pin\":\"30\",\"conn\":\"J11\",\"conn_pin\":\"5\",\"also_it\":\"diodo D7 tra P13 e J11, pull-up 3K3 (gruppo R62-R69)\",\"also_en\":\"diode D7 between P13 and J11, 3K3 pull-up (R62-R69 group)\"},{\"id\":\"KBO4\",\"group\":\"col\",\"name\":\"KBO4 (P14)\",\"chip\":\"IC24\",\"chip_part\":\"8049 IPC (8749 on the schematic)\",\"chip_pin\":\"31\",\"conn\":\"J11\",\"conn_pin\":\"4\",\"also_it\":\"diodo D8 tra P14 e J11, pull-up 3K3 (gruppo R62-R69)\",\"also_en\":\"diode D8 between P14 and J11, 3K3 pull-up (R62-R69 group)\"},{\"id\":\"KBO5\",\"group\":\"col\",\"name\":\"KBO5 (P15)\",\"chip\":\"IC24\",\"chip_part\":\"8049 IPC (8749 on the schematic)\",\"chip_pin\":\"32\",\"conn\":\"J11\",\"conn_pin\":\"3\",\"also_it\":\"diodo D9 tra P15 e J11, pull-up 3K3 (gruppo R62-R69)\",\"also_en\":\"diode D9 between P15 and J11, 3K3 pull-up (R62-R69 group)\"},{\"id\":\"KBO6\",\"group\":\"col\",\"name\":\"KBO6 (P16)\",\"chip\":\"IC24\",\"chip_part\":\"8049 IPC (8749 on the schematic)\",\"chip_pin\":\"33\",\"conn\":\"J11\",\"conn_pin\":\"2\",\"also_it\":\"diodo D10 tra P16 e J11, pull-up 3K3 (gruppo R62-R69)\",\"also_en\":\"diode D10 between P16 and J11, 3K3 pull-up (R62-R69 group)\"},{\"id\":\"KBO7\",\"group\":\"col\",\"name\":\"KBO7 (P17)\",\"chip\":\"IC24\",\"chip_part\":\"8049 IPC (8749 on the schematic)\",\"chip_pin\":\"34\",\"conn\":\"J11\",\"conn_pin\":\"7\",\"also_it\":\"diodo D11 tra P17 e J11, pull-up 3K3 (gruppo R62-R69); solo X, V, N, virgola e\",\"also_en\":\"\/ diode D11 between P17 and J11, 3K3 pull-up (R62-R69 group); only X, V, N, comma and \/\"},{\"id\":\"KBO7S\",\"group\":\"col\",\"name\":\"KBO7 (P17), SHIFT\/CTRL\/ALT\",\"chip\":\"IC24\",\"chip_part\":\"8049 IPC (8749 on the schematic)\",\"chip_pin\":\"34\",\"conn\":\"J11\",\"conn_pin\":\"9\",\"also_it\":\"KBO7 preso prima del diodo D11 (nessun diodo su questo pin): comune di SHIFT, CTRL e ALT\",\"also_en\":\"KBO7 taken before diode D11 (no diode on this pin): common of SHIFT, CTRL and ALT\"},{\"id\":\"KBI0\",\"group\":\"row\",\"name\":\"KBI0 (DB0)\",\"chip\":\"IC24\",\"chip_part\":\"8049 IPC (8749 on the schematic)\",\"chip_pin\":\"12\",\"conn\":\"J12\",\"conn_pin\":\"9\",\"also_it\":\"pull-down R24 10K verso massa; joystick CTL2 su (J3-5)\",\"also_en\":\"R24 10K pull-down to 0V; joystick CTL2 up (J3-5)\"},{\"id\":\"KBI1\",\"group\":\"row\",\"name\":\"KBI1 (DB1)\",\"chip\":\"IC24\",\"chip_part\":\"8049 IPC (8749 on the schematic)\",\"chip_pin\":\"13\",\"conn\":\"J12\",\"conn_pin\":\"3\",\"also_it\":\"pull-down R23 10K verso massa; joystick CTL1 e CTL2 sinistra (J4-2, J3-2)\",\"also_en\":\"R23 10K pull-down to 0V; joystick CTL1 and CTL2 left (J4-2, J3-2)\"},{\"id\":\"KBI2\",\"group\":\"row\",\"name\":\"KBI2 (DB2)\",\"chip\":\"IC24\",\"chip_part\":\"8049 IPC (8749 on the schematic)\",\"chip_pin\":\"14\",\"conn\":\"J12\",\"conn_pin\":\"7\",\"also_it\":\"pull-down R22 10K verso massa; joystick CTL1 su (J4-5)\",\"also_en\":\"R22 10K pull-down to 0V; joystick CTL1 up (J4-5)\"},{\"id\":\"KBI3\",\"group\":\"row\",\"name\":\"KBI3 (DB3)\",\"chip\":\"IC24\",\"chip_part\":\"8049 IPC (8749 on the schematic)\",\"chip_pin\":\"15\",\"conn\":\"J12\",\"conn_pin\":\"4\",\"also_it\":\"pull-down R21 10K verso massa; joystick CTL2 gi\u00f9 (J3-4)\",\"also_en\":\"R21 10K pull-down to 0V; joystick CTL2 down (J3-4)\"},{\"id\":\"KBI4\",\"group\":\"row\",\"name\":\"KBI4 (DB4)\",\"chip\":\"IC24\",\"chip_part\":\"8049 IPC (8749 on the schematic)\",\"chip_pin\":\"16\",\"conn\":\"J12\",\"conn_pin\":\"5\",\"also_it\":\"pull-down R20 10K verso massa; joystick CTL1 e CTL2 destra (J4-3, J3-3)\",\"also_en\":\"R20 10K pull-down to 0V; joystick CTL1 and CTL2 right (J4-3, J3-3)\"},{\"id\":\"KBI5\",\"group\":\"row\",\"name\":\"KBI5 (DB5)\",\"chip\":\"IC24\",\"chip_part\":\"8049 IPC (8749 on the schematic)\",\"chip_pin\":\"17\",\"conn\":\"J12\",\"conn_pin\":\"10\",\"also_it\":\"pull-down R19 10K verso massa; joystick CTL2 fuoco (J3-6)\",\"also_en\":\"R19 10K pull-down to 0V; joystick CTL2 fire (J3-6)\"},{\"id\":\"KBI6\",\"group\":\"row\",\"name\":\"KBI6 (DB6)\",\"chip\":\"IC24\",\"chip_part\":\"8049 IPC (8749 on the schematic)\",\"chip_pin\":\"18\",\"conn\":\"J12\",\"conn_pin\":\"6\",\"also_it\":\"pull-down R18 10K verso massa; joystick CTL1 fuoco (J4-6)\",\"also_en\":\"R18 10K pull-down to 0V; joystick CTL1 fire (J4-6)\"},{\"id\":\"KBI7\",\"group\":\"row\",\"name\":\"KBI7 (DB7)\",\"chip\":\"IC24\",\"chip_part\":\"8049 IPC (8749 on the schematic)\",\"chip_pin\":\"19\",\"conn\":\"J12\",\"conn_pin\":\"8\",\"also_it\":\"pull-down R17 10K verso massa; joystick CTL1 gi\u00f9 (J4-4)\",\"also_en\":\"R17 10K pull-down to 0V; joystick CTL1 down (J4-4)\"},{\"id\":\"KBI0S\",\"group\":\"row\",\"name\":\"KBI0 via D1 (SHIFT)\",\"chip\":\"IC24\",\"chip_part\":\"8049 IPC (8749 on the schematic)\",\"chip_pin\":\"12\",\"conn\":\"J12\",\"conn_pin\":\"2\",\"also_it\":\"solo SHIFT: arriva su KBI0 (DB0) attraverso il diodo D1\",\"also_en\":\"SHIFT only: reaches KBI0 (DB0) through diode D1\"},{\"id\":\"KBI1S\",\"group\":\"row\",\"name\":\"KBI1 via D2 (CTRL)\",\"chip\":\"IC24\",\"chip_part\":\"8049 IPC (8749 on the schematic)\",\"chip_pin\":\"13\",\"conn\":\"J12\",\"conn_pin\":\"1\",\"also_it\":\"solo CTRL: arriva su KBI1 (DB1) attraverso il diodo D2\",\"also_en\":\"CTRL only: reaches KBI1 (DB1) through diode D2\"},{\"id\":\"KBI2S\",\"group\":\"row\",\"name\":\"KBI2 via D3 (ALT)\",\"chip\":\"IC24\",\"chip_part\":\"8049 IPC (8749 on the schematic)\",\"chip_pin\":\"14\",\"conn\":\"J12\",\"conn_pin\":\"11\",\"also_it\":\"solo ALT: arriva su KBI2 (DB2) attraverso il diodo D3\",\"also_en\":\"ALT only: reaches KBI2 (DB2) through diode D3\"}],\"connectors\":[{\"ref\":\"J11\",\"it\":\"Connettore membrana 9 vie (colonne KBO0-KBO7 dall'IPC)\",\"en\":\"9-way membrane connector (columns KBO0-KBO7 from the IPC)\",\"pins\":[{\"n\":\"1\",\"sig\":\"KBO0\",\"note_it\":\"KBO0 via D4, IC24 pin 27\",\"note_en\":\"KBO0 via D4, IC24 pin 27\"},{\"n\":\"2\",\"sig\":\"KBO6\",\"note_it\":\"KBO6 via D10, IC24 pin 33\",\"note_en\":\"KBO6 via D10, IC24 pin 33\"},{\"n\":\"3\",\"sig\":\"KBO5\",\"note_it\":\"KBO5 via D9, IC24 pin 32\",\"note_en\":\"KBO5 via D9, IC24 pin 32\"},{\"n\":\"4\",\"sig\":\"KBO4\",\"note_it\":\"KBO4 via D8, IC24 pin 31\",\"note_en\":\"KBO4 via D8, IC24 pin 31\"},{\"n\":\"5\",\"sig\":\"KBO3\",\"note_it\":\"KBO3 via D7, IC24 pin 30\",\"note_en\":\"KBO3 via D7, IC24 pin 30\"},{\"n\":\"6\",\"sig\":\"KBO2\",\"note_it\":\"KBO2 via D6, IC24 pin 29\",\"note_en\":\"KBO2 via D6, IC24 pin 29\"},{\"n\":\"7\",\"sig\":\"KBO7\",\"note_it\":\"KBO7 via D11, IC24 pin 34\",\"note_en\":\"KBO7 via D11, IC24 pin 34\"},{\"n\":\"8\",\"sig\":\"KBO1\",\"note_it\":\"KBO1 via D5, IC24 pin 28\",\"note_en\":\"KBO1 via D5, IC24 pin 28\"},{\"n\":\"9\",\"sig\":\"KBO7S\",\"note_it\":\"KBO7 senza diodo, comune SHIFT\/CTRL\/ALT\",\"note_en\":\"KBO7 without diode, SHIFT\/CTRL\/ALT common\"}]},{\"ref\":\"J12\",\"it\":\"Connettore membrana 11 vie (righe KBI0-KBI7 verso l'IPC, pi\u00f9 SHIFT\/CTRL\/ALT)\",\"en\":\"11-way membrane connector (rows KBI0-KBI7 to the IPC, plus SHIFT\/CTRL\/ALT)\",\"pins\":[{\"n\":\"1\",\"sig\":\"KBI1S\",\"note_it\":\"CTRL via D2 -> KBI1\",\"note_en\":\"CTRL via D2 -> KBI1\"},{\"n\":\"2\",\"sig\":\"KBI0S\",\"note_it\":\"SHIFT via D1 -> KBI0\",\"note_en\":\"SHIFT via D1 -> KBI0\"},{\"n\":\"3\",\"sig\":\"KBI1\",\"note_it\":\"KBI1, IC24 pin 13 (DB1)\",\"note_en\":\"KBI1, IC24 pin 13 (DB1)\"},{\"n\":\"4\",\"sig\":\"KBI3\",\"note_it\":\"KBI3, IC24 pin 15 (DB3)\",\"note_en\":\"KBI3, IC24 pin 15 (DB3)\"},{\"n\":\"5\",\"sig\":\"KBI4\",\"note_it\":\"KBI4, IC24 pin 16 (DB4)\",\"note_en\":\"KBI4, IC24 pin 16 (DB4)\"},{\"n\":\"6\",\"sig\":\"KBI6\",\"note_it\":\"KBI6, IC24 pin 18 (DB6)\",\"note_en\":\"KBI6, IC24 pin 18 (DB6)\"},{\"n\":\"7\",\"sig\":\"KBI2\",\"note_it\":\"KBI2, IC24 pin 14 (DB2)\",\"note_en\":\"KBI2, IC24 pin 14 (DB2)\"},{\"n\":\"8\",\"sig\":\"KBI7\",\"note_it\":\"KBI7, IC24 pin 19 (DB7)\",\"note_en\":\"KBI7, IC24 pin 19 (DB7)\"},{\"n\":\"9\",\"sig\":\"KBI0\",\"note_it\":\"KBI0, IC24 pin 12 (DB0)\",\"note_en\":\"KBI0, IC24 pin 12 (DB0)\"},{\"n\":\"10\",\"sig\":\"KBI5\",\"note_it\":\"KBI5, IC24 pin 17 (DB5)\",\"note_en\":\"KBI5, IC24 pin 17 (DB5)\"},{\"n\":\"11\",\"sig\":\"KBI2S\",\"note_it\":\"ALT via D3 -> KBI2\",\"note_en\":\"ALT via D3 -> KBI2\"}]}],\"layout\":[{\"id\":\"f1\",\"t\":\"F1\",\"x\":0,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"f2\",\"t\":\"F2\",\"x\":0,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"f3\",\"t\":\"F3\",\"x\":0,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"f4\",\"t\":\"F4\",\"x\":0,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"f5\",\"t\":\"F5\",\"x\":0,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"esc\",\"t\":\"ESC\",\"t2\":\"\u00a9\",\"x\":1.4,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k1\",\"t\":\"1\",\"t2\":\"!\",\"x\":2.4,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k2\",\"t\":\"2\",\"t2\":\"@\",\"x\":3.4,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k3\",\"t\":\"3\",\"t2\":\"#\",\"x\":4.4,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k4\",\"t\":\"4\",\"t2\":\"$\",\"x\":5.4,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k5\",\"t\":\"5\",\"t2\":\"%\",\"x\":6.4,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k6\",\"t\":\"6\",\"t2\":\"^\",\"x\":7.4,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k7\",\"t\":\"7\",\"t2\":\"&\",\"x\":8.4,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k8\",\"t\":\"8\",\"t2\":\"*\",\"x\":9.4,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k9\",\"t\":\"9\",\"t2\":\"(\",\"x\":10.4,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k0\",\"t\":\"0\",\"t2\":\")\",\"x\":11.4,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"minus\",\"t\":\"-\",\"t2\":\"_\",\"x\":12.4,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"equals\",\"t\":\"=\",\"t2\":\"+\",\"x\":13.4,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"pound\",\"t\":\"\u00a3\",\"t2\":\"~\",\"x\":14.4,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"bslash\",\"t\":\"\\\\\",\"t2\":\"|\",\"x\":15.4,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"tab\",\"t\":\"TABULATE\",\"x\":1.47,\"y\":1,\"w\":1.4,\"h\":1},{\"id\":\"q\",\"t\":\"Q\",\"x\":2.94,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"w\",\"t\":\"W\",\"x\":3.94,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"e\",\"t\":\"E\",\"x\":4.94,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"r\",\"t\":\"R\",\"x\":5.94,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"t\",\"t\":\"T\",\"x\":6.94,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"y\",\"t\":\"Y\",\"x\":7.94,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"u\",\"t\":\"U\",\"x\":8.94,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"i\",\"t\":\"I\",\"x\":9.94,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"o\",\"t\":\"O\",\"x\":10.94,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"p\",\"t\":\"P\",\"x\":11.94,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"lbr\",\"t\":\"[\",\"t2\":\"{\",\"x\":12.94,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"rbr\",\"t\":\"]\",\"t2\":\"}\",\"x\":13.94,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"caps\",\"t\":\"CAPS LOCK\",\"x\":1.47,\"y\":2,\"w\":1.6,\"h\":1},{\"id\":\"a\",\"t\":\"A\",\"x\":3.18,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"s\",\"t\":\"S\",\"x\":4.18,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"d\",\"t\":\"D\",\"x\":5.18,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"f\",\"t\":\"F\",\"x\":6.18,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"g\",\"t\":\"G\",\"x\":7.18,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"h\",\"t\":\"H\",\"x\":8.18,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"j\",\"t\":\"J\",\"x\":9.18,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"k\",\"t\":\"K\",\"x\":10.18,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"l\",\"t\":\"L\",\"x\":11.18,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"semi\",\"t\":\";\",\"t2\":\":\",\"x\":12.18,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"quote\",\"t\":\"'\",\"t2\":\"\\\"\",\"x\":13.18,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"enter\",\"t\":\"ENTER\",\"x\":14.3,\"y\":2,\"w\":1.6,\"h\":1},{\"id\":\"shift\",\"t\":\"SHIFT\",\"x\":1.47,\"y\":3,\"w\":2.1,\"h\":1},{\"id\":\"z\",\"t\":\"Z\",\"x\":3.68,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"x\",\"t\":\"X\",\"x\":4.68,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"c\",\"t\":\"C\",\"x\":5.68,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"v\",\"t\":\"V\",\"x\":6.68,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"b\",\"t\":\"B\",\"x\":7.68,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"n\",\"t\":\"N\",\"x\":8.68,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"m\",\"t\":\"M\",\"x\":9.68,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"comma\",\"t\":\",\",\"t2\":\"<\",\"x\":10.68,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"dot\",\"t\":\".\",\"t2\":\">\",\"x\":11.68,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"slash\",\"t\":\"\/\",\"t2\":\"?\",\"x\":12.68,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"shiftr\",\"t\":\"SHIFT\",\"x\":13.8,\"y\":3,\"w\":2.05,\"h\":1},{\"id\":\"ctrl\",\"t\":\"CTRL\",\"x\":1.47,\"y\":4,\"w\":1.6,\"h\":1},{\"id\":\"left\",\"t\":\"\u2190\",\"x\":3.18,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"right\",\"t\":\"\u2192\",\"x\":4.18,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"space\",\"t\":\"SPACE\",\"x\":5.28,\"y\":4,\"w\":6.86,\"h\":1},{\"id\":\"up\",\"t\":\"\u2191\",\"x\":12.24,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"down\",\"t\":\"\u2193\",\"x\":13.25,\"y\":4,\"w\":1,\"h\":1},{\"id\":\"alt\",\"t\":\"ALT\",\"x\":14.33,\"y\":4,\"w\":1.52,\"h\":1}],\"matrix\":{\"f4\":[\"KBO0\",\"KBI0\"],\"f1\":[\"KBO0\",\"KBI1\"],\"k5\":[\"KBO0\",\"KBI2\"],\"f2\":[\"KBO0\",\"KBI3\"],\"f3\":[\"KBO0\",\"KBI4\"],\"f5\":[\"KBO0\",\"KBI5\"],\"k4\":[\"KBO0\",\"KBI6\"],\"k7\":[\"KBO0\",\"KBI7\"],\"enter\":[\"KBO1\",\"KBI0\"],\"left\":[\"KBO1\",\"KBI1\"],\"up\":[\"KBO1\",\"KBI2\"],\"esc\":[\"KBO1\",\"KBI3\"],\"right\":[\"KBO1\",\"KBI4\"],\"bslash\":[\"KBO1\",\"KBI5\"],\"space\":[\"KBO1\",\"KBI6\"],\"down\":[\"KBO1\",\"KBI7\"],\"rbr\":[\"KBO2\",\"KBI0\"],\"z\":[\"KBO2\",\"KBI1\"],\"dot\":[\"KBO2\",\"KBI2\"],\"c\":[\"KBO2\",\"KBI3\"],\"b\":[\"KBO2\",\"KBI4\"],\"pound\":[\"KBO2\",\"KBI5\"],\"m\":[\"KBO2\",\"KBI6\"],\"quote\":[\"KBO2\",\"KBI7\"],\"lbr\":[\"KBO3\",\"KBI0\"],\"caps\":[\"KBO3\",\"KBI1\"],\"k\":[\"KBO3\",\"KBI2\"],\"s\":[\"KBO3\",\"KBI3\"],\"f\":[\"KBO3\",\"KBI4\"],\"equals\":[\"KBO3\",\"KBI5\"],\"g\":[\"KBO3\",\"KBI6\"],\"semi\":[\"KBO3\",\"KBI7\"],\"l\":[\"KBO4\",\"KBI0\"],\"k3\":[\"KBO4\",\"KBI1\"],\"h\":[\"KBO4\",\"KBI2\"],\"k1\":[\"KBO4\",\"KBI3\"],\"a\":[\"KBO4\",\"KBI4\"],\"p\":[\"KBO4\",\"KBI5\"],\"d\":[\"KBO4\",\"KBI6\"],\"j\":[\"KBO4\",\"KBI7\"],\"k9\":[\"KBO5\",\"KBI0\"],\"w\":[\"KBO5\",\"KBI1\"],\"i\":[\"KBO5\",\"KBI2\"],\"tab\":[\"KBO5\",\"KBI3\"],\"r\":[\"KBO5\",\"KBI4\"],\"minus\":[\"KBO5\",\"KBI5\"],\"y\":[\"KBO5\",\"KBI6\"],\"o\":[\"KBO5\",\"KBI7\"],\"k8\":[\"KBO6\",\"KBI0\"],\"k2\":[\"KBO6\",\"KBI1\"],\"k6\":[\"KBO6\",\"KBI2\"],\"q\":[\"KBO6\",\"KBI3\"],\"e\":[\"KBO6\",\"KBI4\"],\"k0\":[\"KBO6\",\"KBI5\"],\"t\":[\"KBO6\",\"KBI6\"],\"u\":[\"KBO6\",\"KBI7\"],\"x\":[\"KBO7\",\"KBI3\"],\"v\":[\"KBO7\",\"KBI4\"],\"slash\":[\"KBO7\",\"KBI5\"],\"n\":[\"KBO7\",\"KBI6\"],\"comma\":[\"KBO7\",\"KBI7\"],\"shift\":[\"KBO7S\",\"KBI0S\"],\"shiftr\":[\"KBO7S\",\"KBI0S\"],\"ctrl\":[\"KBO7S\",\"KBI1S\"],\"alt\":[\"KBO7S\",\"KBI2S\"]},\"special\":{\"shiftr\":{\"lines\":[\"KBO7S\",\"KBI0S\"],\"it\":\"Le due SHIFT sono in parallelo sulla stessa coppia di piste (J11-9 \/ J12-2, diodo D1): la matrice ha una sola posizione SHIFT.\",\"en\":\"The two SHIFT keys are in parallel on the same pair of tracks (J11-9 \/ J12-2, diode D1): the matrix has a single SHIFT position.\"}},\"notes_it\":[\"Colonne (pin J11): KBO0 = pin 1 (F1-F5, 4, 5, 7), KBO6 = pin 2 (2, Q, E, T, 6, U, 8, 0), KBO5 = pin 3 (W, TAB, R, Y, I, 9, O, -), KBO4 = pin 4 (1, 3, A, D, H, J, L, P), KBO3 = pin 5 (CAPS LOCK, S, F, G, K, ;, [, =), KBO2 = pin 6 (Z, C, B, M, ., ', ], \u00a3), KBO7 = pin 7 (X, V, N, virgola, \/), KBO1 = pin 8 (ENTER, frecce, ESC, \\\\, SPAZIO), pin 9 = SHIFT, CTRL, ALT.\",\"Righe (pin J12): KBI0 = pin 9, KBI1 = pin 3, KBI2 = pin 7, KBI3 = pin 4, KBI4 = pin 5, KBI5 = pin 10, KBI6 = pin 6, KBI7 = pin 8; i pin 1, 2 e 11 sono CTRL, SHIFT e ALT. Se muore un gruppo di 8 tasti di una colonna guardare J11 e il diodo D4-D11; se muore una riga guardare J12 e la resistenza di pull-down.\",\"I joystick sono in parallelo alla tastiera: CTL1 (J4) usa KBO1 come comune e simula frecce e SPAZIO; CTL2 (J3) usa KBO0 e simula F1-F5. Un joystick o una porta in corto fa \\\"premere\\\" da soli quei tasti; scollegare i joystick prima di diagnosticare.\",\"Il guasto pi\u00f9 comune, come dice anche il manuale, \u00e8 la membrana crepata vicino ai connettori: si perde una colonna o una riga intera. Se la rottura \u00e8 vicina al connettore si pu\u00f2 accorciare la coda di qualche millimetro e reinserirla; altrimenti membrana nuova. Le code sono a fili nudi spinti nel connettore: raddrizzarle e inserirle bene a fondo.\",\"Prima di cambiare chip: due tasti che si comportano male insieme o due righe morte indicano un corto tra piste (provare con l'ohmmetro). Il manuale consiglia di guardare all'oscilloscopio le uscite KBO, che devono andare alte in sequenza: un corto altera la sequenza. Solo se membrana e connettori sono buoni sospettare IC24 (IPC), poi IC23 (ZX8302) e IC18.\",\"Il manuale di servizio (Figura 4.2 \\\"Keyboard Format\\\") ha due errori noti: scambia 1 con 3 e 9 con O. Questa scheda segue lo schema elettrico (pin J11\/J12 -> KBO\/KBI) e la mappa di MAME (KBO\/KBI -> tasto), che coincidono con la Figura 4.2 per tutti gli altri 60 tasti.\"],\"notes_en\":[\"Columns (J11 pins): KBO0 = pin 1 (F1-F5, 4, 5, 7), KBO6 = pin 2 (2, Q, E, T, 6, U, 8, 0), KBO5 = pin 3 (W, TAB, R, Y, I, 9, O, -), KBO4 = pin 4 (1, 3, A, D, H, J, L, P), KBO3 = pin 5 (CAPS LOCK, S, F, G, K, ;, [, =), KBO2 = pin 6 (Z, C, B, M, ., ', ], \u00a3), KBO7 = pin 7 (X, V, N, comma, \/), KBO1 = pin 8 (ENTER, arrows, ESC, \\\\, SPACE), pin 9 = SHIFT, CTRL, ALT.\",\"Rows (J12 pins): KBI0 = pin 9, KBI1 = pin 3, KBI2 = pin 7, KBI3 = pin 4, KBI4 = pin 5, KBI5 = pin 10, KBI6 = pin 6, KBI7 = pin 8; pins 1, 2 and 11 are CTRL, SHIFT and ALT. If a column of 8 keys dies, check J11 and diode D4-D11; if a row dies, check J12 and its pull-down resistor.\",\"The joysticks are in parallel with the keyboard: CTL1 (J4) uses KBO1 as common and emulates the arrows and SPACE; CTL2 (J3) uses KBO0 and emulates F1-F5. A faulty joystick or a shorted port makes those keys 'press' on their own; unplug joysticks before diagnosing.\",\"The most common fault, as the manual also says, is a cracked membrane near the connectors: a whole column or row drops out. If the break is close to the connector the tail can be trimmed by a few millimetres and refitted; otherwise fit a new membrane. The tails are bare tracks pushed into the connector: straighten them and push them fully home.\",\"Before changing chips: two keys misbehaving together or two dead rows point to a short between tracks (check with an ohmmeter). The manual suggests watching the KBO outputs on a scope; they should go high in sequence and a short upsets the sequence. Only with a good membrane and connectors suspect IC24 (IPC), then IC23 (ZX8302) and IC18.\",\"The service manual's Figure 4.2 ('Keyboard Format') has two known errors: it swaps 1 with 3 and 9 with O. This file follows the circuit diagram (J11\/J12 pin -> KBO\/KBI) and the MAME map (KBO\/KBI -> key), which agree with Figure 4.2 for all the other 60 keys.\"],\"board_it\":\"Issue 6 (manuale di servizio, figura 1.5); la parte tastiera della Issue 5 (figura 1.4) \u00e8 disegnata uguale\",\"board_en\":\"Issue 6 (service manual, figure 1.5); the keyboard section of Issue 5 (figure 1.4) is drawn the same\"},\"spectrum48\":{\"id\":\"spectrum48\",\"name\":\"Sinclair ZX Spectrum 48K (rubber key)\",\"sources\":[{\"t\":\"MAME src\/mame\/sinclair\/spectrum.cpp (INPUT_PORTS LINE0-7, port FE read)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/mame\/sinclair\/spectrum.cpp\"},{\"t\":\"ZX Spectrum Issue 3 schematic (Spectrum For Everyone, ZXSpectrumIssue3-Schematics.gif): KB1, KB2, D1-D8, R65-R69, ULA pins 19\/20\/23\/24\/26\",\"u\":\"https:\/\/spectrumforeveryone.com\/technical\/zx-spectrum-pcb-schematics-layout\/\"},{\"t\":\"ZX Spectrum Issue 2 schematic (same page), for the Issue 2 differences\",\"u\":\"https:\/\/spectrumforeveryone.com\/wp-content\/uploads\/2017\/08\/ZXSpectrumIssue2-Schematics.gif\"},{\"t\":\"Sinclair ZX Spectrum Service Manual (Spectrum For Everyone edition): 1.8 Keyboard scanning, 5.5 Keyboard structure, 6.7 Keyboard faults\",\"u\":\"https:\/\/spectrumforeveryone.com\/wp-content\/uploads\/2017\/08\/ZX-Spectrum-Service-Manual.pdf\"},{\"t\":\"World of Spectrum FAQ, Pinouts (ULA pinout, membrane matrix order A15 14 8 13 12 9 10 11)\",\"u\":\"https:\/\/worldofspectrum.org\/faq\/reference\/pinouts.htm\"},{\"t\":\"Sinclair Wiki, Keyboard\",\"u\":\"https:\/\/sinclair.wiki.zxnet.co.uk\/wiki\/Keyboard\"}],\"scan_it\":\"La CPU Z80A (IC2) legge la porta FEh mettendo a 0 una sola delle linee A8-A15; ogni linea passa per un diodo (D1-D8, uno per pin di KB2) e arriva alla membrana tramite la coda a 8 vie (KB2). Le cinque colonne KB0-KB4 tornano dalla coda a 5 vie (KB1) direttamente ai pin 19, 20, 23, 24 e 26 della ULA (IC1), tenute alte da pull-up da 10K (R65-R69); la ULA le mette su D0-D4. Tasto premuto = bit a 0.\",\"scan_en\":\"The Z80A CPU (IC2) reads port FEh with only one of A8-A15 low; each line goes through a diode (D1-D8, one per KB2 pin) to the membrane via the 8-way tail (KB2). The five column lines KB0-KB4 come back through the 5-way tail (KB1) directly to ULA (IC1) pins 19, 20, 23, 24 and 26, held high by 10K pull-ups (R65-R69); the ULA puts them on D0-D4. A pressed key reads as 0.\",\"lines\":[{\"id\":\"A8\",\"group\":\"col\",\"name\":\"A8\",\"chip\":\"IC2\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"38\",\"conn\":\"KB2\",\"conn_pin\":\"6\",\"also_it\":\"diodo D6 (1N4148) tra la CPU e KB2 pin 6; porta FEFEh\",\"also_en\":\"diode D6 (1N4148) between CPU and KB2 pin 6; port FEFEh\"},{\"id\":\"A9\",\"group\":\"col\",\"name\":\"A9\",\"chip\":\"IC2\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"39\",\"conn\":\"KB2\",\"conn_pin\":\"3\",\"also_it\":\"diodo D3 (1N4148) tra la CPU e KB2 pin 3; porta FDFEh\",\"also_en\":\"diode D3 (1N4148) between CPU and KB2 pin 3; port FDFEh\"},{\"id\":\"A10\",\"group\":\"col\",\"name\":\"A10\",\"chip\":\"IC2\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"40\",\"conn\":\"KB2\",\"conn_pin\":\"2\",\"also_it\":\"diodo D2 (1N4148) tra la CPU e KB2 pin 2; porta FBFEh\",\"also_en\":\"diode D2 (1N4148) between CPU and KB2 pin 2; port FBFEh\"},{\"id\":\"A11\",\"group\":\"col\",\"name\":\"A11\",\"chip\":\"IC2\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"1\",\"conn\":\"KB2\",\"conn_pin\":\"1\",\"also_it\":\"diodo D1 (1N4148) tra la CPU e KB2 pin 1; porta F7FEh\",\"also_en\":\"diode D1 (1N4148) between CPU and KB2 pin 1; port F7FEh\"},{\"id\":\"A12\",\"group\":\"col\",\"name\":\"A12\",\"chip\":\"IC2\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"2\",\"conn\":\"KB2\",\"conn_pin\":\"4\",\"also_it\":\"diodo D4 (1N4148) tra la CPU e KB2 pin 4; porta EFFEh\",\"also_en\":\"diode D4 (1N4148) between CPU and KB2 pin 4; port EFFEh\"},{\"id\":\"A13\",\"group\":\"col\",\"name\":\"A13\",\"chip\":\"IC2\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"3\",\"conn\":\"KB2\",\"conn_pin\":\"5\",\"also_it\":\"diodo D5 (1N4148) tra la CPU e KB2 pin 5; porta DFFEh\",\"also_en\":\"diode D5 (1N4148) between CPU and KB2 pin 5; port DFFEh\"},{\"id\":\"A14\",\"group\":\"col\",\"name\":\"A14\",\"chip\":\"IC2\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"4\",\"conn\":\"KB2\",\"conn_pin\":\"7\",\"also_it\":\"diodo D7 (1N4148) tra la CPU e KB2 pin 7; porta BFFEh; A14 va anche al pin 36 della ULA\",\"also_en\":\"diode D7 (1N4148) between CPU and KB2 pin 7; port BFFEh; A14 also goes to ULA pin 36\"},{\"id\":\"A15\",\"group\":\"col\",\"name\":\"A15\",\"chip\":\"IC2\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"5\",\"conn\":\"KB2\",\"conn_pin\":\"8\",\"also_it\":\"diodo D8 (1N4148) tra la CPU e KB2 pin 8; porta 7FFEh; A15 va anche al pin 37 della ULA\",\"also_en\":\"diode D8 (1N4148) between CPU and KB2 pin 8; port 7FFEh; A15 also goes to ULA pin 37\"},{\"id\":\"KBD0\",\"group\":\"row\",\"name\":\"KB0\",\"chip\":\"IC1\",\"chip_part\":\"ULA 6C001E (5C112E on early Issue 2)\",\"chip_pin\":\"19\",\"conn\":\"KB1\",\"conn_pin\":\"1\",\"also_it\":\"pull-up da 10K R69 verso +5V (Issue 3); la ULA lo porta sul bit D0 della porta FEh\",\"also_en\":\"10K pull-up R69 to +5V (Issue 3); ULA puts it on data bit D0 of port FEh\"},{\"id\":\"KBD1\",\"group\":\"row\",\"name\":\"KB1\",\"chip\":\"IC1\",\"chip_part\":\"ULA 6C001E (5C112E on early Issue 2)\",\"chip_pin\":\"20\",\"conn\":\"KB1\",\"conn_pin\":\"2\",\"also_it\":\"pull-up da 10K R68 verso +5V (Issue 3); la ULA lo porta sul bit D1 della porta FEh\",\"also_en\":\"10K pull-up R68 to +5V (Issue 3); ULA puts it on data bit D1 of port FEh\"},{\"id\":\"KBD2\",\"group\":\"row\",\"name\":\"KB2\",\"chip\":\"IC1\",\"chip_part\":\"ULA 6C001E (5C112E on early Issue 2)\",\"chip_pin\":\"23\",\"conn\":\"KB1\",\"conn_pin\":\"3\",\"also_it\":\"pull-up da 10K R67 verso +5V (Issue 3); la ULA lo porta sul bit D2 della porta FEh\",\"also_en\":\"10K pull-up R67 to +5V (Issue 3); ULA puts it on data bit D2 of port FEh\"},{\"id\":\"KBD3\",\"group\":\"row\",\"name\":\"KB3\",\"chip\":\"IC1\",\"chip_part\":\"ULA 6C001E (5C112E on early Issue 2)\",\"chip_pin\":\"24\",\"conn\":\"KB1\",\"conn_pin\":\"4\",\"also_it\":\"pull-up da 10K R66 verso +5V (Issue 3); la ULA lo porta sul bit D3 della porta FEh\",\"also_en\":\"10K pull-up R66 to +5V (Issue 3); ULA puts it on data bit D3 of port FEh\"},{\"id\":\"KBD4\",\"group\":\"row\",\"name\":\"KB4\",\"chip\":\"IC1\",\"chip_part\":\"ULA 6C001E (5C112E on early Issue 2)\",\"chip_pin\":\"26\",\"conn\":\"KB1\",\"conn_pin\":\"5\",\"also_it\":\"pull-up da 10K R65 verso +5V (Issue 3); la ULA lo porta sul bit D4 della porta FEh\",\"also_en\":\"10K pull-up R65 to +5V (Issue 3); ULA puts it on data bit D4 of port FEh\"}],\"connectors\":[{\"ref\":\"KB1\",\"it\":\"Connettore membrana 5 vie (KB0-KB4 verso la ULA)\",\"en\":\"5-way membrane connector (KB0-KB4 to the ULA)\",\"pins\":[{\"n\":\"1\",\"sig\":\"KBD0\",\"note_it\":\"KB0, pin 19 della ULA\",\"note_en\":\"KB0, ULA pin 19\"},{\"n\":\"2\",\"sig\":\"KBD1\",\"note_it\":\"KB1, pin 20 della ULA\",\"note_en\":\"KB1, ULA pin 20\"},{\"n\":\"3\",\"sig\":\"KBD2\",\"note_it\":\"KB2, pin 23 della ULA\",\"note_en\":\"KB2, ULA pin 23\"},{\"n\":\"4\",\"sig\":\"KBD3\",\"note_it\":\"KB3, pin 24 della ULA\",\"note_en\":\"KB3, ULA pin 24\"},{\"n\":\"5\",\"sig\":\"KBD4\",\"note_it\":\"KB4, pin 26 della ULA\",\"note_en\":\"KB4, ULA pin 26\"}]},{\"ref\":\"KB2\",\"it\":\"Connettore membrana 8 vie (A8-A15 attraverso D1-D8)\",\"en\":\"8-way membrane connector (A8-A15 through D1-D8)\",\"pins\":[{\"n\":\"1\",\"sig\":\"A11\",\"note_it\":\"diodo D1\",\"note_en\":\"diode D1\"},{\"n\":\"2\",\"sig\":\"A10\",\"note_it\":\"diodo D2\",\"note_en\":\"diode D2\"},{\"n\":\"3\",\"sig\":\"A9\",\"note_it\":\"diodo D3\",\"note_en\":\"diode D3\"},{\"n\":\"4\",\"sig\":\"A12\",\"note_it\":\"diodo D4\",\"note_en\":\"diode D4\"},{\"n\":\"5\",\"sig\":\"A13\",\"note_it\":\"diodo D5\",\"note_en\":\"diode D5\"},{\"n\":\"6\",\"sig\":\"A8\",\"note_it\":\"diodo D6\",\"note_en\":\"diode D6\"},{\"n\":\"7\",\"sig\":\"A14\",\"note_it\":\"diodo D7\",\"note_en\":\"diode D7\"},{\"n\":\"8\",\"sig\":\"A15\",\"note_it\":\"diodo D8\",\"note_en\":\"diode D8\"}]}],\"layout\":[{\"id\":\"k1\",\"t\":\"1\",\"t2\":\"EDIT\",\"x\":0,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k2\",\"t\":\"2\",\"t2\":\"CAPS LOCK\",\"x\":1,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k3\",\"t\":\"3\",\"t2\":\"TRUE VID\",\"x\":2,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k4\",\"t\":\"4\",\"t2\":\"INV VID\",\"x\":3,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k5\",\"t\":\"5\",\"t2\":\"\u2190\",\"x\":4,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k6\",\"t\":\"6\",\"t2\":\"\u2193\",\"x\":5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k7\",\"t\":\"7\",\"t2\":\"\u2191\",\"x\":6,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k8\",\"t\":\"8\",\"t2\":\"\u2192\",\"x\":7,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k9\",\"t\":\"9\",\"t2\":\"GRAPHICS\",\"x\":8,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k0\",\"t\":\"0\",\"t2\":\"DELETE\",\"x\":9,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"q\",\"t\":\"Q\",\"t2\":\"PLOT\",\"x\":0.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"w\",\"t\":\"W\",\"t2\":\"DRAW\",\"x\":1.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"e\",\"t\":\"E\",\"t2\":\"REM\",\"x\":2.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"r\",\"t\":\"R\",\"t2\":\"RUN\",\"x\":3.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"t\",\"t\":\"T\",\"t2\":\"RAND\",\"x\":4.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"y\",\"t\":\"Y\",\"t2\":\"RETURN\",\"x\":5.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"u\",\"t\":\"U\",\"t2\":\"IF\",\"x\":6.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"i\",\"t\":\"I\",\"t2\":\"INPUT\",\"x\":7.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"o\",\"t\":\"O\",\"t2\":\"POKE\",\"x\":8.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"p\",\"t\":\"P\",\"t2\":\"PRINT\",\"x\":9.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"a\",\"t\":\"A\",\"t2\":\"NEW\",\"x\":0.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"s\",\"t\":\"S\",\"t2\":\"SAVE\",\"x\":1.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"d\",\"t\":\"D\",\"t2\":\"DIM\",\"x\":2.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"f\",\"t\":\"F\",\"t2\":\"FOR\",\"x\":3.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"g\",\"t\":\"G\",\"t2\":\"GOTO\",\"x\":4.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"h\",\"t\":\"H\",\"t2\":\"GOSUB\",\"x\":5.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"j\",\"t\":\"J\",\"t2\":\"LOAD\",\"x\":6.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"k\",\"t\":\"K\",\"t2\":\"LIST\",\"x\":7.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"l\",\"t\":\"L\",\"t2\":\"LET\",\"x\":8.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"enter\",\"t\":\"ENTER\",\"x\":9.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"caps\",\"t\":\"CAPS SHIFT\",\"x\":0.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"z\",\"t\":\"Z\",\"t2\":\"COPY\",\"x\":1.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"x\",\"t\":\"X\",\"t2\":\"CLEAR\",\"x\":2.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"c\",\"t\":\"C\",\"t2\":\"CONT\",\"x\":3.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"v\",\"t\":\"V\",\"t2\":\"CLS\",\"x\":4.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"b\",\"t\":\"B\",\"t2\":\"BORDER\",\"x\":5.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"n\",\"t\":\"N\",\"t2\":\"NEXT\",\"x\":6.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"m\",\"t\":\"M\",\"t2\":\"PAUSE\",\"x\":7.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"sym\",\"t\":\"SYMBOL SHIFT\",\"x\":8.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"space\",\"t\":\"SPACE\",\"t2\":\"BREAK\",\"x\":9.25,\"y\":3,\"w\":1,\"h\":1}],\"matrix\":{\"caps\":[\"A8\",\"KBD0\"],\"z\":[\"A8\",\"KBD1\"],\"x\":[\"A8\",\"KBD2\"],\"c\":[\"A8\",\"KBD3\"],\"v\":[\"A8\",\"KBD4\"],\"a\":[\"A9\",\"KBD0\"],\"s\":[\"A9\",\"KBD1\"],\"d\":[\"A9\",\"KBD2\"],\"f\":[\"A9\",\"KBD3\"],\"g\":[\"A9\",\"KBD4\"],\"q\":[\"A10\",\"KBD0\"],\"w\":[\"A10\",\"KBD1\"],\"e\":[\"A10\",\"KBD2\"],\"r\":[\"A10\",\"KBD3\"],\"t\":[\"A10\",\"KBD4\"],\"k1\":[\"A11\",\"KBD0\"],\"k2\":[\"A11\",\"KBD1\"],\"k3\":[\"A11\",\"KBD2\"],\"k4\":[\"A11\",\"KBD3\"],\"k5\":[\"A11\",\"KBD4\"],\"k0\":[\"A12\",\"KBD0\"],\"k9\":[\"A12\",\"KBD1\"],\"k8\":[\"A12\",\"KBD2\"],\"k7\":[\"A12\",\"KBD3\"],\"k6\":[\"A12\",\"KBD4\"],\"p\":[\"A13\",\"KBD0\"],\"o\":[\"A13\",\"KBD1\"],\"i\":[\"A13\",\"KBD2\"],\"u\":[\"A13\",\"KBD3\"],\"y\":[\"A13\",\"KBD4\"],\"enter\":[\"A14\",\"KBD0\"],\"l\":[\"A14\",\"KBD1\"],\"k\":[\"A14\",\"KBD2\"],\"j\":[\"A14\",\"KBD3\"],\"h\":[\"A14\",\"KBD4\"],\"space\":[\"A15\",\"KBD0\"],\"sym\":[\"A15\",\"KBD1\"],\"m\":[\"A15\",\"KBD2\"],\"n\":[\"A15\",\"KBD3\"],\"b\":[\"A15\",\"KBD4\"]},\"notes_it\":[\"Dal manuale di servizio Sinclair: se muore un blocco di 5 tasti il guasto \u00e8 su KB2 o sulla coda a 8 vie; se muore un blocco di 8 tasti \u00e8 su KB1 o sulla coda a 5 vie.\",\"Semirighe (5 tasti, una linea d'indirizzo, pin KB2): A11 = 1-5 (pin 1, D1), A10 = Q-T (pin 2, D2), A9 = A-G (pin 3, D3), A12 = 6-0 (pin 4, D4), A13 = Y-P (pin 5, D5), A8 = CAPS SHIFT-V (pin 6, D6), A14 = H-ENTER (pin 7, D7), A15 = B-SPACE (pin 8, D8). Se la coda \u00e8 a posto controllare il diodo relativo.\",\"Colonne (8 tasti, una linea KB): KB0 = 1, Q, A, CAPS SHIFT, 0, P, ENTER, SPACE; KB4 = 5, T, G, V, 6, Y, H, B. Coda a 5 vie, KB1, resistenza di pull-up o pin ULA.\",\"Il guasto di gran lunga pi\u00f9 comune \u00e8 la membrana a due strati con le code crepate dove si piegano per entrare nei connettori: la plastica invecchiata si spezza e cade una semiriga o una colonna, spesso a intermittenza. Soluzione: membrana nuova. Non piegare le code a freddo e inserirle ben diritte.\",\"Il manuale indica anche il corto tra due o pi\u00f9 piste di una coda: si leggono tasti premuti da soli o caratteri sbagliati. Se tutta la tastiera \u00e8 morta o risponde in modo errato e le code sono buone, il manuale indica la ULA (IC1).\",\"Il bit D6 della stessa lettura \u00e8 l'ingresso EAR: non c'entra con la tastiera, ma su Issue 2 e Issue 3 si comporta in modo diverso a riposo (alcuni giochi vecchi leggono male la tastiera su Issue 3 per questo motivo, non per un guasto).\",\"Issue 2: stesso schema e stessi pin ULA, ma numerazione diversa: pull-up R64-R68 e diodi su KB2 in ordine D4, D3, D2, D5, D6, D1, D7, D8 (lato L verso A dello schema).\"],\"notes_en\":[\"From the Sinclair service manual: if a block of 5 keys fails the fault is in KB2 or the 8-way tail; if a block of 8 keys fails it is in KB1 or the 5-way tail.\",\"Half-rows (5 keys, one address line, KB2 pin): A11 = 1-5 (pin 1, D1), A10 = Q-T (pin 2, D2), A9 = A-G (pin 3, D3), A12 = 6-0 (pin 4, D4), A13 = Y-P (pin 5, D5), A8 = CAPS SHIFT-V (pin 6, D6), A14 = H-ENTER (pin 7, D7), A15 = B-SPACE (pin 8, D8). If the tail is fine, check that diode.\",\"Columns (8 keys, one KB line): KB0 = 1, Q, A, CAPS SHIFT, 0, P, ENTER, SPACE; KB4 = 5, T, G, V, 6, Y, H, B. Check the 5-way tail, KB1, the pull-up resistor or the ULA pin.\",\"By far the most common fault is the two-layer membrane cracking where the tails bend into the connectors: the aged plastic splits and a half-row or column drops out, often intermittently. The fix is a new membrane. Do not bend the tails when cold and insert them straight.\",\"The manual also lists a short between two or more tracks of a tail: keys appear pressed on their own or wrong characters appear. If the whole keyboard is dead or responds wrongly and the tails are good, the manual points to the ULA (IC1).\",\"Bit D6 of the same read is the EAR input: not part of the keyboard, but its idle level differs between Issue 2 and Issue 3 (some early games read the keyboard wrongly on Issue 3 for this reason; that is not a fault).\",\"Issue 2: same circuit and same ULA pins, but different numbering: pull-ups R64-R68 and diodes on KB2 in the order D4, D3, D2, D5, D6, D1, D7, D8 (from the L end towards the A end of the drawing).\"],\"board_it\":\"Issue 3 (anche 3B); sulla Issue 2 cambiano le sigle di diodi e pull-up, vedi note\",\"board_en\":\"Issue 3 (also 3B); diode and pull-up references differ on Issue 2, see notes\",\"name_it\":\"Sinclair ZX Spectrum 48K (tasti in gomma)\"},\"ti99\":{\"id\":\"ti99\",\"name\":\"Texas Instruments TI-99\/4A\",\"sources\":[{\"t\":\"TI-99\/4A Console and Peripheral Expansion System Technical Data (TI, 1983), console schematic sheets (U300 TMS9901, 74LS156, J100, J300)\",\"u\":\"http:\/\/ftp.whtech.com\/datasheets%20and%20manuals\/Hardware\/99-4A%20Console%20and%20peripheral%20Expansion%20System%20Technical%20Data.pdf\"},{\"t\":\"TI Circuit Diagrams and Schematics (whtech): MP 1039026 Rev A board layout (Figure F) and 'TI99\/4A keyboard wiring matrix'\",\"u\":\"http:\/\/ftp.whtech.com\/datasheets%20and%20manuals\/Hardware\/TI%20Circuit%20Diagrams%20and%20Schematics.pdf\"},{\"t\":\"Thierry Nouspikel, TI-99\/4A Tech Pages: The keyboard\",\"u\":\"https:\/\/www.unige.ch\/medecine\/nouspikel\/ti99\/keyboard.htm\"},{\"t\":\"Thierry Nouspikel, TI-99\/4A Tech Pages: TI-99\/4A standard joystick\",\"u\":\"https:\/\/www.unige.ch\/medecine\/nouspikel\/ti99\/joystick.htm\"},{\"t\":\"Thierry Nouspikel, TI-99\/4A Tech Pages: TMS9901 (pinout)\",\"u\":\"https:\/\/www.unige.ch\/medecine\/nouspikel\/ti99\/tms9901.htm\"},{\"t\":\"MAME src\/mame\/ti\/ti99_4x.cpp (INPUT_PORTS ti99_4a, psi_input_4a, set_keyboard_column, alphaW)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/mame\/ti\/ti99_4x.cpp\"},{\"t\":\"MAME src\/devices\/bus\/ti99\/joyport\/handset.cpp (joystick bit order)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/devices\/bus\/ti99\/joyport\/handset.cpp\"},{\"t\":\"JonVogel\/ti-99-keyboard (connector pin to 74LS156 output \/ TMS9901 INT mapping)\",\"u\":\"https:\/\/github.com\/JonVogel\/ti-99-keyboard\"}],\"scan_it\":\"Il TMS9901 U300 scrive il numero di colonna (0-7) sulle uscite P2, P3 e P4 (pin 26, 22, 21), che vanno agli ingressi A, B e 1C\/2C del decodificatore 74LS156 U302: l'uscita selezionata (open collector, pull-up da 1 k\u03a9) va a livello basso. Le colonne 0-5 vanno alla tastiera, le colonne 6 e 7 (1Y2, 1Y3) pilotano tramite Q300\/Q301 i due joystick. Le otto righe tornano sugli ingressi INT3-INT10 del 9901 (pull-up da 10 k\u03a9 e resistenza serie da 470 \u03a9): un tasto premuto fa leggere 0 sulla riga. ALPHA LOCK \u00e8 a parte: il 9901 porta bassa l'uscita P5 e lo legge sulla riga INT7.\",\"scan_en\":\"TMS9901 U300 writes the column number (0-7) on outputs P2, P3 and P4 (pins 26, 22, 21), which feed inputs A, B and 1C\/2C of the 74LS156 decoder U302: the selected output (open collector, 1 k\u03a9 pull-up) goes low. Columns 0-5 go to the keyboard; columns 6 and 7 (1Y2, 1Y3) drive the two joysticks through Q300\/Q301. The eight rows come back on TMS9901 inputs INT3-INT10 (10 k\u03a9 pull-ups, 470 \u03a9 series resistors): a pressed key makes its row read 0. ALPHA LOCK is separate: the 9901 pulls output P5 low and reads the key on row INT7.\",\"lines\":[{\"id\":\"2Y0\",\"group\":\"col\",\"name\":\"COL0\",\"chip\":\"U302\",\"chip_part\":\"74LS156\",\"chip_pin\":\"9\",\"conn_pin\":\"12\",\"also_it\":\"pull-up R310 1 k\u03a9, bobina L310 6,8 \u00b5H\",\"also_en\":\"R310 1 k\u03a9 pull-up, L310 6.8 \u00b5H choke\"},{\"id\":\"2Y1\",\"group\":\"col\",\"name\":\"COL1\",\"chip\":\"U302\",\"chip_part\":\"74LS156\",\"chip_pin\":\"10\",\"conn_pin\":\"13\",\"also_it\":\"pull-up R309 1 k\u03a9, bobina L311 6,8 \u00b5H\",\"also_en\":\"R309 1 k\u03a9 pull-up, L311 6.8 \u00b5H choke\"},{\"id\":\"2Y2\",\"group\":\"col\",\"name\":\"COL2\",\"chip\":\"U302\",\"chip_part\":\"74LS156\",\"chip_pin\":\"11\",\"conn_pin\":\"14\",\"also_it\":\"pull-up R308 1 k\u03a9, bobina L312 6,8 \u00b5H\",\"also_en\":\"R308 1 k\u03a9 pull-up, L312 6.8 \u00b5H choke\"},{\"id\":\"2Y3\",\"group\":\"col\",\"name\":\"COL3\",\"chip\":\"U302\",\"chip_part\":\"74LS156\",\"chip_pin\":\"12\",\"conn_pin\":\"15\",\"also_it\":\"pull-up R307 1 k\u03a9, bobina L313 6,8 \u00b5H\",\"also_en\":\"R307 1 k\u03a9 pull-up, L313 6.8 \u00b5H choke\"},{\"id\":\"1Y0\",\"group\":\"col\",\"name\":\"COL4\",\"chip\":\"U302\",\"chip_part\":\"74LS156\",\"chip_pin\":\"7\",\"conn_pin\":\"9\",\"also_it\":\"pull-up R306 1 k\u03a9, bobina L308 6,8 \u00b5H\",\"also_en\":\"R306 1 k\u03a9 pull-up, L308 6.8 \u00b5H choke\"},{\"id\":\"1Y1\",\"group\":\"col\",\"name\":\"COL5\",\"chip\":\"U302\",\"chip_part\":\"74LS156\",\"chip_pin\":\"6\",\"conn_pin\":\"8\",\"also_it\":\"pull-up R330 1 k\u03a9, bobina L309 6,8 \u00b5H\",\"also_en\":\"R330 1 k\u03a9 pull-up, L309 6.8 \u00b5H choke\"},{\"id\":\"P5\",\"group\":\"col\",\"name\":\"ALPHA LOCK\",\"chip\":\"U300\",\"chip_part\":\"TMS9901 PSI\",\"chip_pin\":\"20\",\"conn_pin\":\"6\",\"also_it\":\"solo ALPHA LOCK; R339 470 \u03a9 in serie, pull-up R320 10 k\u03a9\",\"also_en\":\"ALPHA LOCK only; R339 470 \u03a9 series, R320 10 k\u03a9 pull-up\"},{\"id\":\"INT3\",\"group\":\"row\",\"name\":\"ROW0\",\"chip\":\"U300\",\"chip_part\":\"TMS9901 PSI\",\"chip_pin\":\"9\",\"conn_pin\":\"5\",\"also_it\":\"porta joystick pin 4 (fuoco); R335 470 \u03a9, R314 10 k\u03a9\",\"also_en\":\"joystick port pin 4 (fire); R335 470 \u03a9, R314 10 k\u03a9\"},{\"id\":\"INT4\",\"group\":\"row\",\"name\":\"ROW1\",\"chip\":\"U300\",\"chip_part\":\"TMS9901 PSI\",\"chip_pin\":\"8\",\"conn_pin\":\"4\",\"also_it\":\"porta joystick pin 5 (sinistra); R336 470 \u03a9, R312 10 k\u03a9\",\"also_en\":\"joystick port pin 5 (left); R336 470 \u03a9, R312 10 k\u03a9\"},{\"id\":\"INT5\",\"group\":\"row\",\"name\":\"ROW2\",\"chip\":\"U300\",\"chip_part\":\"TMS9901 PSI\",\"chip_pin\":\"7\",\"conn_pin\":\"1\",\"also_it\":\"porta joystick pin 9 (destra); R337 470 \u03a9, R311 10 k\u03a9\",\"also_en\":\"joystick port pin 9 (right); R337 470 \u03a9, R311 10 k\u03a9\"},{\"id\":\"INT6\",\"group\":\"row\",\"name\":\"ROW3\",\"chip\":\"U300\",\"chip_part\":\"TMS9901 PSI\",\"chip_pin\":\"6\",\"conn_pin\":\"2\",\"also_it\":\"porta joystick pin 8 (gi\u00f9); R338 470 \u03a9, R313 10 k\u03a9\",\"also_en\":\"joystick port pin 8 (down); R338 470 \u03a9, R313 10 k\u03a9\"},{\"id\":\"INT7\",\"group\":\"row\",\"name\":\"ROW4\",\"chip\":\"U300\",\"chip_part\":\"TMS9901 PSI\",\"chip_pin\":\"34\",\"conn_pin\":\"7\",\"also_it\":\"porta joystick pin 3 (su) e ALPHA LOCK; R334 470 \u03a9, R318 10 k\u03a9\",\"also_en\":\"joystick port pin 3 (up) and ALPHA LOCK; R334 470 \u03a9, R318 10 k\u03a9\"},{\"id\":\"INT8\",\"group\":\"row\",\"name\":\"ROW5\",\"chip\":\"U300\",\"chip_part\":\"TMS9901 PSI\",\"chip_pin\":\"33\",\"conn_pin\":\"3\",\"also_it\":\"R333 470 \u03a9, R317 10 k\u03a9\",\"also_en\":\"R333 470 \u03a9, R317 10 k\u03a9\"},{\"id\":\"INT9\",\"group\":\"row\",\"name\":\"ROW6\",\"chip\":\"U300\",\"chip_part\":\"TMS9901 PSI\",\"chip_pin\":\"32\",\"conn_pin\":\"10\",\"also_it\":\"R332 470 \u03a9, R316 10 k\u03a9\",\"also_en\":\"R332 470 \u03a9, R316 10 k\u03a9\"},{\"id\":\"INT10\",\"group\":\"row\",\"name\":\"ROW7\",\"chip\":\"U300\",\"chip_part\":\"TMS9901 PSI\",\"chip_pin\":\"31\",\"conn_pin\":\"11\",\"also_it\":\"R331 470 \u03a9, R315 10 k\u03a9\",\"also_en\":\"R331 470 \u03a9, R315 10 k\u03a9\"},{\"id\":\"P2\",\"group\":\"extra\",\"name\":\"SEL A\",\"chip\":\"U300\",\"chip_part\":\"TMS9901 PSI\",\"chip_pin\":\"26\",\"conn_pin\":\"\",\"also_it\":\"va a U302 pin 13 (A), bit 0 del numero di colonna\",\"also_en\":\"to U302 pin 13 (A), column number bit 0\"},{\"id\":\"P3\",\"group\":\"extra\",\"name\":\"SEL B\",\"chip\":\"U300\",\"chip_part\":\"TMS9901 PSI\",\"chip_pin\":\"22\",\"conn_pin\":\"\",\"also_it\":\"va a U302 pin 3 (B), bit 1 del numero di colonna\",\"also_en\":\"to U302 pin 3 (B), column number bit 1\"},{\"id\":\"P4\",\"group\":\"extra\",\"name\":\"SEL C\",\"chip\":\"U300\",\"chip_part\":\"TMS9901 PSI\",\"chip_pin\":\"21\",\"conn_pin\":\"\",\"also_it\":\"va a U302 pin 1 (1C) e pin 15 (2C), bit 2\",\"also_en\":\"to U302 pin 1 (1C) and pin 15 (2C), bit 2\"},{\"id\":\"1Y2\",\"group\":\"extra\",\"name\":\"COL6 JOY1\",\"chip\":\"U302\",\"chip_part\":\"74LS156\",\"chip_pin\":\"5\",\"conn_pin\":\"\",\"also_it\":\"via Q300 alla porta joystick pin 7 (joystick 1)\",\"also_en\":\"via Q300 to joystick port pin 7 (joystick 1)\"},{\"id\":\"1Y3\",\"group\":\"extra\",\"name\":\"COL7 JOY2\",\"chip\":\"U302\",\"chip_part\":\"74LS156\",\"chip_pin\":\"4\",\"conn_pin\":\"\",\"also_it\":\"via Q301 alla porta joystick pin 2 (joystick 2)\",\"also_en\":\"via Q301 to joystick port pin 2 (joystick 2)\"}],\"connector\":{\"ref\":\"J100\",\"it\":\"Connettore tastiera J100, 15 pin in linea (pin 1 verso la porta joystick, filo rosso sul pin 15); nessun pin di massa o +5V\",\"en\":\"Keyboard connector J100, 15-pin single row (pin 1 towards the joystick port, red wire on pin 15); no ground or +5V pin\",\"pins\":[{\"n\":\"1\",\"sig\":\"INT5\",\"note_it\":\"riga 2: ENTER O I U Y P\",\"note_en\":\"row 2: ENTER O I U Y P\"},{\"n\":\"2\",\"sig\":\"INT6\",\"note_it\":\"riga 3: 9 8 7 6 0\",\"note_en\":\"row 3: 9 8 7 6 0\"},{\"n\":\"3\",\"sig\":\"INT8\",\"note_it\":\"riga 5: SHIFT S D F G A\",\"note_en\":\"row 5: SHIFT S D F G A\"},{\"n\":\"4\",\"sig\":\"INT4\",\"note_it\":\"riga 1: SPACE L K J H ;\",\"note_en\":\"row 1: SPACE L K J H ;\"},{\"n\":\"5\",\"sig\":\"INT3\",\"note_it\":\"riga 0: = . , M N\",\"note_en\":\"\/ row 0: = . , M N \/\"},{\"n\":\"6\",\"sig\":\"P5\",\"note_it\":\"solo ALPHA LOCK\",\"note_en\":\"ALPHA LOCK only\"},{\"n\":\"7\",\"sig\":\"INT7\",\"note_it\":\"riga 4: FCTN 2 3 4 5 1 + ALPHA LOCK\",\"note_en\":\"row 4: FCTN 2 3 4 5 1 + ALPHA LOCK\"},{\"n\":\"8\",\"sig\":\"1Y1\",\"note_it\":\"colonna 5:\",\"note_en\":\"; P 0 1 A Q Z \/ column 5: \/ ; P 0 1 A Q Z\"},{\"n\":\"9\",\"sig\":\"1Y0\",\"note_it\":\"colonna 4: N H Y 6 5 G T B\",\"note_en\":\"column 4: N H Y 6 5 G T B\"},{\"n\":\"10\",\"sig\":\"INT9\",\"note_it\":\"riga 6: CTRL W E R T Q\",\"note_en\":\"row 6: CTRL W E R T Q\"},{\"n\":\"11\",\"sig\":\"INT10\",\"note_it\":\"riga 7: X C V B Z\",\"note_en\":\"row 7: X C V B Z\"},{\"n\":\"12\",\"sig\":\"2Y0\",\"note_it\":\"colonna 0: = SPACE ENTER FCTN SHIFT CTRL\",\"note_en\":\"column 0: = SPACE ENTER FCTN SHIFT CTRL\"},{\"n\":\"13\",\"sig\":\"2Y1\",\"note_it\":\"colonna 1: . L O 9 2 S W X\",\"note_en\":\"column 1: . L O 9 2 S W X\"},{\"n\":\"14\",\"sig\":\"2Y2\",\"note_it\":\"colonna 2: , K I 8 3 D E C\",\"note_en\":\"column 2: , K I 8 3 D E C\"},{\"n\":\"15\",\"sig\":\"2Y3\",\"note_it\":\"colonna 3: M J U 7 4 F R V; filo rosso\",\"note_en\":\"column 3: M J U 7 4 F R V; red wire\"}]},\"layout\":[{\"id\":\"1\",\"t\":\"1\",\"t2\":\"!\",\"x\":0,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"2\",\"t\":\"2\",\"t2\":\"@\",\"x\":1,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"3\",\"t\":\"3\",\"t2\":\"#\",\"x\":2,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"4\",\"t\":\"4\",\"t2\":\"$\",\"x\":3,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"5\",\"t\":\"5\",\"t2\":\"%\",\"x\":4,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"6\",\"t\":\"6\",\"t2\":\"^\",\"x\":5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"7\",\"t\":\"7\",\"t2\":\"&\",\"x\":6,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"8\",\"t\":\"8\",\"t2\":\"*\",\"x\":7,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"9\",\"t\":\"9\",\"t2\":\"(\",\"x\":8,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"0\",\"t\":\"0\",\"t2\":\")\",\"x\":9,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"equal\",\"t\":\"=\",\"t2\":\"+\",\"x\":10,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"q\",\"t\":\"Q\",\"x\":0.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"w\",\"t\":\"W\",\"t2\":\"~\",\"x\":1.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"e\",\"t\":\"E\",\"t2\":\"\u2191\",\"x\":2.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"r\",\"t\":\"R\",\"t2\":\"[\",\"x\":3.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"t\",\"t\":\"T\",\"t2\":\"]\",\"x\":4.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"y\",\"t\":\"Y\",\"x\":5.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"u\",\"t\":\"U\",\"t2\":\"_\",\"x\":6.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"i\",\"t\":\"I\",\"t2\":\"?\",\"x\":7.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"o\",\"t\":\"O\",\"t2\":\"'\",\"x\":8.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"p\",\"t\":\"P\",\"t2\":\"\\\"\",\"x\":9.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"slash\",\"t\":\"\/\",\"t2\":\"-\",\"x\":10.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"a\",\"t\":\"A\",\"t2\":\"|\",\"x\":0.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"s\",\"t\":\"S\",\"t2\":\"\u2190\",\"x\":1.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"d\",\"t\":\"D\",\"t2\":\"\u2192\",\"x\":2.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"f\",\"t\":\"F\",\"t2\":\"{\",\"x\":3.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"g\",\"t\":\"G\",\"t2\":\"}\",\"x\":4.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"h\",\"t\":\"H\",\"x\":5.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"j\",\"t\":\"J\",\"x\":6.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"k\",\"t\":\"K\",\"x\":7.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"l\",\"t\":\"L\",\"x\":8.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"semicolon\",\"t\":\";\",\"t2\":\":\",\"x\":9.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"enter\",\"t\":\"ENTER\",\"x\":10.75,\"y\":2,\"w\":1.25,\"h\":1},{\"id\":\"lshift\",\"t\":\"SHIFT\",\"x\":0,\"y\":3,\"w\":1.25,\"h\":1},{\"id\":\"z\",\"t\":\"Z\",\"t2\":\"\\\\\",\"x\":1.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"x\",\"t\":\"X\",\"t2\":\"\u2193\",\"x\":2.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"c\",\"t\":\"C\",\"t2\":\"`\",\"x\":3.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"v\",\"t\":\"V\",\"x\":4.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"b\",\"t\":\"B\",\"x\":5.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"n\",\"t\":\"N\",\"x\":6.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"m\",\"t\":\"M\",\"x\":7.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"comma\",\"t\":\",\",\"t2\":\"<\",\"x\":8.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"period\",\"t\":\".\",\"t2\":\">\",\"x\":9.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"rshift\",\"t\":\"SHIFT\",\"x\":10.25,\"y\":3,\"w\":1.75,\"h\":1},{\"id\":\"alock\",\"t\":\"ALPHA LOCK\",\"x\":0,\"y\":4,\"w\":1.25,\"h\":1},{\"id\":\"ctrl\",\"t\":\"CTRL\",\"x\":1.25,\"y\":4,\"w\":1.25,\"h\":1},{\"id\":\"space\",\"t\":\"SPACE\",\"x\":2.5,\"y\":4,\"w\":7.5,\"h\":1},{\"id\":\"fctn\",\"t\":\"FCTN\",\"x\":10.25,\"y\":4,\"w\":1.25,\"h\":1}],\"matrix\":{\"equal\":[\"2Y0\",\"INT3\"],\"period\":[\"2Y1\",\"INT3\"],\"comma\":[\"2Y2\",\"INT3\"],\"m\":[\"2Y3\",\"INT3\"],\"n\":[\"1Y0\",\"INT3\"],\"slash\":[\"1Y1\",\"INT3\"],\"space\":[\"2Y0\",\"INT4\"],\"l\":[\"2Y1\",\"INT4\"],\"k\":[\"2Y2\",\"INT4\"],\"j\":[\"2Y3\",\"INT4\"],\"h\":[\"1Y0\",\"INT4\"],\"semicolon\":[\"1Y1\",\"INT4\"],\"enter\":[\"2Y0\",\"INT5\"],\"o\":[\"2Y1\",\"INT5\"],\"i\":[\"2Y2\",\"INT5\"],\"u\":[\"2Y3\",\"INT5\"],\"y\":[\"1Y0\",\"INT5\"],\"p\":[\"1Y1\",\"INT5\"],\"9\":[\"2Y1\",\"INT6\"],\"8\":[\"2Y2\",\"INT6\"],\"7\":[\"2Y3\",\"INT6\"],\"6\":[\"1Y0\",\"INT6\"],\"0\":[\"1Y1\",\"INT6\"],\"fctn\":[\"2Y0\",\"INT7\"],\"2\":[\"2Y1\",\"INT7\"],\"3\":[\"2Y2\",\"INT7\"],\"4\":[\"2Y3\",\"INT7\"],\"5\":[\"1Y0\",\"INT7\"],\"1\":[\"1Y1\",\"INT7\"],\"lshift\":[\"2Y0\",\"INT8\"],\"s\":[\"2Y1\",\"INT8\"],\"d\":[\"2Y2\",\"INT8\"],\"f\":[\"2Y3\",\"INT8\"],\"g\":[\"1Y0\",\"INT8\"],\"a\":[\"1Y1\",\"INT8\"],\"ctrl\":[\"2Y0\",\"INT9\"],\"w\":[\"2Y1\",\"INT9\"],\"e\":[\"2Y2\",\"INT9\"],\"r\":[\"2Y3\",\"INT9\"],\"t\":[\"1Y0\",\"INT9\"],\"q\":[\"1Y1\",\"INT9\"],\"x\":[\"2Y1\",\"INT10\"],\"c\":[\"2Y2\",\"INT10\"],\"v\":[\"2Y3\",\"INT10\"],\"b\":[\"1Y0\",\"INT10\"],\"z\":[\"1Y1\",\"INT10\"],\"rshift\":[\"2Y0\",\"INT8\"],\"alock\":[\"P5\",\"INT7\"]},\"special\":{\"alock\":{\"lines\":[\"P5\",\"INT7\"],\"it\":\"ALPHA LOCK \u00e8 un tasto meccanico a ritenuta che non sta sul decoder: collega il pin 6 del connettore (uscita P5 del TMS9901, pin 20) alla riga INT7 (pin 7). Il software porta P5 basso solo quando vuole leggerlo. Se resta bloccato gi\u00f9, la riga INT7 viene tirata bassa e il joystick legge \\\"su\\\" sempre premuto (difetto di progetto noto).\",\"en\":\"ALPHA LOCK is a mechanically latching key that does not use the decoder: it links connector pin 6 (TMS9901 output P5, pin 20) to row INT7 (pin 7). Software only pulls P5 low when it wants to read it. While it is latched down, row INT7 is pulled low and the joystick reads \\\"up\\\" all the time (a known design fault).\"},\"rshift\":{\"lines\":[\"2Y0\",\"INT8\"],\"it\":\"I due SHIFT sono collegati in parallelo sulla stessa coppia di linee (colonna 0 \/ INT8): il computer non li distingue.\",\"en\":\"The two SHIFT keys are wired in parallel on the same pair of lines (column 0 \/ INT8): the computer cannot tell them apart.\"}},\"notes_it\":[\"La porta joystick (J300, 9 pin) \u00e8 in parallelo alle righe INT3-INT7 lato connettore: pin 4 fuoco = INT3, pin 5 sinistra = INT4, pin 9 destra = INT5, pin 8 gi\u00f9 = INT6, pin 3 su = INT7; pin 7 seleziona il joystick 1 (colonna 6), pin 2 il joystick 2 (colonna 7); pin 1 e 6 non collegati. Un joystick in corto o un cavetto danneggiato pu\u00f2 bloccare un'intera riga di tasti.\",\"Con ALPHA LOCK abbassato il joystick legge \\\"su\\\" sempre premuto: non \u00e8 un guasto, \u00e8 un difetto di progetto. Per giocare va sbloccato.\",\"Non ci sono diodi sui tasti: premendo tre tasti ai vertici di un rettangolo della matrice compare un quarto tasto fantasma (es. 8+7+3 d\u00e0 anche 4).\",\"Sul connettore J100 non ci sono massa n\u00e9 +5V: tutti i 15 pin sono linee di matrice (8 righe, 6 colonne, P5). Se non va un'intera colonna o riga, controllare la bobina (L308-L313) o la resistenza serie (R331-R339) di quella linea, poi il pin del 74LS156 U302 o del TMS9901 U300.\",\"Se non funziona nessun tasto e nemmeno i joystick, sospettare prima U302 (74LS156) o le uscite P2-P4 del TMS9901 U300; se va tutto tranne una colonna, l'uscita corrispondente di U302.\",\"Le legende t2 delle lettere sono i simboli FCTN stampati sul fronte dei tasti (frecce su E S D X); quelle dei numeri e della punteggiatura sono i simboli con SHIFT. Le funzioni FCTN dei numeri (DEL, INS, ERASE, CLEAR, BEGIN, PROC'D, AID, REDO, BACK) e QUIT su = stanno sulla mascherina e non sono indicate.\"],\"notes_en\":[\"The joystick port (J300, 9-pin) is wired in parallel with rows INT3-INT7 on the connector side: pin 4 fire = INT3, pin 5 left = INT4, pin 9 right = INT5, pin 8 down = INT6, pin 3 up = INT7; pin 7 selects joystick 1 (column 6), pin 2 joystick 2 (column 7); pins 1 and 6 are not connected. A shorted joystick or damaged lead can kill a whole row of keys.\",\"With ALPHA LOCK down the joystick reads \\\"up\\\" held all the time: this is a design fault, not a failure. Release it for games.\",\"There are no diodes on the keys: pressing three keys at three corners of a rectangle in the matrix produces a phantom fourth key (e.g. 8+7+3 also gives 4).\",\"Connector J100 carries no ground or +5V: all 15 pins are matrix lines (8 rows, 6 columns, P5). If a whole column or row is dead, check that line's choke (L308-L313) or series resistor (R331-R339), then the pin on 74LS156 U302 or TMS9901 U300.\",\"If no key works and the joysticks are dead too, suspect U302 (74LS156) or the P2-P4 outputs of TMS9901 U300 first; if everything works except one column, the matching U302 output.\",\"The t2 legends on letter keys are the FCTN symbols printed on the front of the keys (arrows on E S D X); on number and punctuation keys they are the SHIFT symbols. The FCTN functions on the number row (DEL, INS, ERASE, CLEAR, BEGIN, PROC'D, AID, REDO, BACK) and QUIT on = are on the overlay strip and are not shown.\"],\"board_it\":\"scheda MP 1039026 rev. A (console NTSC con TMS9918A; sigle dallo schema TI Technical Data del 1983)\",\"board_en\":\"MP 1039026 rev. A board (NTSC console with TMS9918A; references from the 1983 TI Technical Data schematic)\"},\"ts2068\":{\"id\":\"ts2068\",\"name\":\"Timex Sinclair 2068\",\"sources\":[{\"t\":\"TS2068 Technical Reference Manual (Time Designs 2nd ed.): 2.1.9 Keyboard, Figure 2.1.9-1 Keyboard schematic, 2.4.8 Keyboard interface J9, Table 2.1.8-1 SCLD pins, Appendix schematic 335-870500, Appendix D parts list\",\"u\":\"https:\/\/k1.spdns.de\/Vintage\/Sinclair\/82\/Timex%20Sinclair%202068\/Tech%20Specs%20and%20Repair\/Timex%20Sinclair%202068%20-%20Technical%20Manual.pdf\"},{\"t\":\"MAME src\/mame\/sinclair\/timex.cpp (ts2068 and tc2048 use the Spectrum INPUT_PORTS, port FEh read with A8-A15)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/mame\/sinclair\/timex.cpp\"},{\"t\":\"MAME src\/mame\/sinclair\/spectrum.cpp (INPUT_PORTS LINE0-7, the matrix shared by the TS2068)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/mame\/sinclair\/spectrum.cpp\"},{\"t\":\"T\/S 2068 Keyboard Scanning (timexsinclair.com): 8 half-rows x 5 columns, 'Break\/Space' share one position, right CAPS SHIFT redundant\",\"u\":\"https:\/\/timexsinclair.com\/article\/t-s-2068-keyboard-scanning\/index.html\"},{\"t\":\"Reviving the 2068 Keyboard (SUM v3 n7, timexsinclair.com): construction and contact cleaning\",\"u\":\"https:\/\/timexsinclair.com\/article\/reviving-the-2068-keyboard\/index.html\"},{\"t\":\"Wikimedia Commons, Timex Sinclair 2068 (photo used for key positions)\",\"u\":\"https:\/\/commons.wikimedia.org\/wiki\/File:Timex_Sinclair_2068_Manipulated.png\"},{\"t\":\"MAME src\/mame\/sinclair\/zx.cpp (ts1000 and ts1500 use the zx81 INPUT_PORTS)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/mame\/sinclair\/zx.cpp\"}],\"scan_it\":\"Come sullo Spectrum: la CPU Z80A (U19) legge la porta FEh con una sola delle linee A8-A15 a livello basso; ogni linea passa per un diodo 1N4148 (CR6-CR13, sulla scheda madre) e arriva alla tastiera attraverso il connettore a cavo piatto J9 (14 pin). Le cinque linee di ritorno KB0-KB4 tornano da J9 direttamente ai pin 49-53 dello SCLD (U3), che le mette su D0-D4. Tasto premuto = bit a 0. La matrice \u00e8 la stessa 8 x 5 dello Spectrum; cambiano tastiera, connettore e sigle dei componenti.\",\"scan_en\":\"As on the Spectrum: the Z80A CPU (U19) reads port FEh with only one of A8-A15 low; each line goes through a 1N4148 diode (CR6-CR13, on the main board) to the keyboard via the 14-pin flat-cable connector J9. The five return lines KB0-KB4 come back through J9 straight to SCLD (U3) pins 49-53, which puts them on D0-D4. A pressed key reads as 0. The matrix is the same 8 x 5 as the Spectrum; the keyboard, connector and part references are different.\",\"lines\":[{\"id\":\"A8\",\"group\":\"col\",\"name\":\"A8\",\"chip\":\"U19\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"38\",\"conn\":\"J9\",\"conn_pin\":\"11\",\"also_it\":\"diodo CR11 (1N4148) tra CPU e J9; porta FEFEh; tasti CAPS SHIFT-V\",\"also_en\":\"diode CR11 (1N4148) between CPU and J9; port FEFEh; keys CAPS SHIFT-V\"},{\"id\":\"A9\",\"group\":\"col\",\"name\":\"A9\",\"chip\":\"U19\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"39\",\"conn\":\"J9\",\"conn_pin\":\"8\",\"also_it\":\"diodo CR8 (1N4148) tra CPU e J9; porta FDFEh; tasti A-G\",\"also_en\":\"diode CR8 (1N4148) between CPU and J9; port FDFEh; keys A-G\"},{\"id\":\"A10\",\"group\":\"col\",\"name\":\"A10\",\"chip\":\"U19\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"40\",\"conn\":\"J9\",\"conn_pin\":\"7\",\"also_it\":\"diodo CR7 (1N4148) tra CPU e J9; porta FBFEh; tasti Q-T\",\"also_en\":\"diode CR7 (1N4148) between CPU and J9; port FBFEh; keys Q-T\"},{\"id\":\"A11\",\"group\":\"col\",\"name\":\"A11\",\"chip\":\"U19\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"1\",\"conn\":\"J9\",\"conn_pin\":\"6\",\"also_it\":\"diodo CR6 (1N4148) tra CPU e J9; porta F7FEh; tasti 1-5\",\"also_en\":\"diode CR6 (1N4148) between CPU and J9; port F7FEh; keys 1-5\"},{\"id\":\"A12\",\"group\":\"col\",\"name\":\"A12\",\"chip\":\"U19\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"2\",\"conn\":\"J9\",\"conn_pin\":\"9\",\"also_it\":\"diodo CR9 (1N4148) tra CPU e J9; porta EFFEh; tasti 6-0\",\"also_en\":\"diode CR9 (1N4148) between CPU and J9; port EFFEh; keys 6-0\"},{\"id\":\"A13\",\"group\":\"col\",\"name\":\"A13\",\"chip\":\"U19\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"3\",\"conn\":\"J9\",\"conn_pin\":\"10\",\"also_it\":\"diodo CR10 (1N4148) tra CPU e J9; porta DFFEh; tasti Y-P\",\"also_en\":\"diode CR10 (1N4148) between CPU and J9; port DFFEh; keys Y-P\"},{\"id\":\"A14\",\"group\":\"col\",\"name\":\"A14\",\"chip\":\"U19\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"4\",\"conn\":\"J9\",\"conn_pin\":\"12\",\"also_it\":\"diodo CR12 (1N4148) tra CPU e J9; porta BFFEh; tasti H-ENTER\",\"also_en\":\"diode CR12 (1N4148) between CPU and J9; port BFFEh; keys H-ENTER\"},{\"id\":\"A15\",\"group\":\"col\",\"name\":\"A15\",\"chip\":\"U19\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"5\",\"conn\":\"J9\",\"conn_pin\":\"13\",\"also_it\":\"diodo CR13 (1N4148) tra CPU e J9; porta 7FFEh; tasti B-BREAK\/SPACE\",\"also_en\":\"diode CR13 (1N4148) between CPU and J9; port 7FFEh; keys B-BREAK\/SPACE\"},{\"id\":\"KBD0\",\"group\":\"row\",\"name\":\"KB0\",\"chip\":\"U3\",\"chip_part\":\"SCLD (Timex\/Ferranti gate array, 68 pin)\",\"chip_pin\":\"49\",\"conn\":\"J9\",\"conn_pin\":\"1\",\"also_it\":\"ingresso KB0 dello SCLD, letto come bit D0 della porta FEh\",\"also_en\":\"SCLD input KB0, read as data bit D0 of port FEh\"},{\"id\":\"KBD1\",\"group\":\"row\",\"name\":\"KB1\",\"chip\":\"U3\",\"chip_part\":\"SCLD (Timex\/Ferranti gate array, 68 pin)\",\"chip_pin\":\"50\",\"conn\":\"J9\",\"conn_pin\":\"2\",\"also_it\":\"ingresso KB1 dello SCLD, letto come bit D1 della porta FEh\",\"also_en\":\"SCLD input KB1, read as data bit D1 of port FEh\"},{\"id\":\"KBD2\",\"group\":\"row\",\"name\":\"KB2\",\"chip\":\"U3\",\"chip_part\":\"SCLD (Timex\/Ferranti gate array, 68 pin)\",\"chip_pin\":\"51\",\"conn\":\"J9\",\"conn_pin\":\"3\",\"also_it\":\"ingresso KB2 dello SCLD, letto come bit D2 della porta FEh\",\"also_en\":\"SCLD input KB2, read as data bit D2 of port FEh\"},{\"id\":\"KBD3\",\"group\":\"row\",\"name\":\"KB3\",\"chip\":\"U3\",\"chip_part\":\"SCLD (Timex\/Ferranti gate array, 68 pin)\",\"chip_pin\":\"52\",\"conn\":\"J9\",\"conn_pin\":\"4\",\"also_it\":\"ingresso KB3 dello SCLD, letto come bit D3 della porta FEh\",\"also_en\":\"SCLD input KB3, read as data bit D3 of port FEh\"},{\"id\":\"KBD4\",\"group\":\"row\",\"name\":\"KB4\",\"chip\":\"U3\",\"chip_part\":\"SCLD (Timex\/Ferranti gate array, 68 pin)\",\"chip_pin\":\"53\",\"conn\":\"J9\",\"conn_pin\":\"5\",\"also_it\":\"ingresso KB4 dello SCLD, letto come bit D4 della porta FEh\",\"also_en\":\"SCLD input KB4, read as data bit D4 of port FEh\"}],\"connector\":{\"ref\":\"J9\",\"it\":\"Connettore tastiera 14 pin in linea per cavo piatto (AMP Trio-Mate 1-520315-4), pin numerati 0-13 nel manuale\",\"en\":\"14-pin single-in-line flat-cable keyboard connector (AMP Trio-Mate 1-520315-4), pins numbered 0-13 in the manual\",\"pins\":[{\"n\":\"0\",\"sig\":\"GND\",\"note_it\":\"massa\",\"note_en\":\"ground\"},{\"n\":\"1\",\"sig\":\"KBD0\",\"note_it\":\"KB0, SCLD U3 pin 49\",\"note_en\":\"KB0, SCLD U3 pin 49\"},{\"n\":\"2\",\"sig\":\"KBD1\",\"note_it\":\"KB1, SCLD U3 pin 50\",\"note_en\":\"KB1, SCLD U3 pin 50\"},{\"n\":\"3\",\"sig\":\"KBD2\",\"note_it\":\"KB2, SCLD U3 pin 51\",\"note_en\":\"KB2, SCLD U3 pin 51\"},{\"n\":\"4\",\"sig\":\"KBD3\",\"note_it\":\"KB3, SCLD U3 pin 52\",\"note_en\":\"KB3, SCLD U3 pin 52\"},{\"n\":\"5\",\"sig\":\"KBD4\",\"note_it\":\"KB4, SCLD U3 pin 53\",\"note_en\":\"KB4, SCLD U3 pin 53\"},{\"n\":\"6\",\"sig\":\"A11\",\"note_it\":\"CR6\/A11 nel manuale, Z80 pin 1\",\"note_en\":\"CR6\/A11 in the manual, Z80 pin 1\"},{\"n\":\"7\",\"sig\":\"A10\",\"note_it\":\"CR7\/A10 nel manuale, Z80 pin 40\",\"note_en\":\"CR7\/A10 in the manual, Z80 pin 40\"},{\"n\":\"8\",\"sig\":\"A9\",\"note_it\":\"CR8\/A9 nel manuale, Z80 pin 39\",\"note_en\":\"CR8\/A9 in the manual, Z80 pin 39\"},{\"n\":\"9\",\"sig\":\"A12\",\"note_it\":\"CR9\/A12 nel manuale, Z80 pin 2\",\"note_en\":\"CR9\/A12 in the manual, Z80 pin 2\"},{\"n\":\"10\",\"sig\":\"A13\",\"note_it\":\"CR10\/A13B nel manuale, Z80 pin 3\",\"note_en\":\"CR10\/A13B in the manual, Z80 pin 3\"},{\"n\":\"11\",\"sig\":\"A8\",\"note_it\":\"CR11\/A8 nel manuale, Z80 pin 38\",\"note_en\":\"CR11\/A8 in the manual, Z80 pin 38\"},{\"n\":\"12\",\"sig\":\"A14\",\"note_it\":\"CR12\/A14B nel manuale, Z80 pin 4\",\"note_en\":\"CR12\/A14B in the manual, Z80 pin 4\"},{\"n\":\"13\",\"sig\":\"A15\",\"note_it\":\"CR13\/A15B nel manuale, Z80 pin 5\",\"note_en\":\"CR13\/A15B in the manual, Z80 pin 5\"}]},\"layout\":[{\"id\":\"k1\",\"t\":\"1\",\"t2\":\"EDIT\",\"x\":0,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k2\",\"t\":\"2\",\"t2\":\"CAPS LOCK\",\"x\":1,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k3\",\"t\":\"3\",\"t2\":\"TRUE VIDEO\",\"x\":2,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k4\",\"t\":\"4\",\"t2\":\"INV. VIDEO\",\"x\":3,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k5\",\"t\":\"5\",\"t2\":\"\u2190\",\"x\":4,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k6\",\"t\":\"6\",\"t2\":\"\u2193\",\"x\":5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k7\",\"t\":\"7\",\"t2\":\"\u2191\",\"x\":6,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k8\",\"t\":\"8\",\"t2\":\"\u2192\",\"x\":7,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k9\",\"t\":\"9\",\"t2\":\"GRAPHICS\",\"x\":8,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k0\",\"t\":\"\u00d8\",\"t2\":\"DELETE\",\"x\":9,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"q\",\"t\":\"Q\",\"t2\":\"PLOT\",\"x\":0.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"w\",\"t\":\"W\",\"t2\":\"DRAW\",\"x\":1.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"e\",\"t\":\"E\",\"t2\":\"REM\",\"x\":2.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"r\",\"t\":\"R\",\"t2\":\"RUN\",\"x\":3.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"t\",\"t\":\"T\",\"t2\":\"RAND\",\"x\":4.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"y\",\"t\":\"Y\",\"t2\":\"RETURN\",\"x\":5.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"u\",\"t\":\"U\",\"t2\":\"IF\",\"x\":6.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"i\",\"t\":\"I\",\"t2\":\"INPUT\",\"x\":7.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"o\",\"t\":\"O\",\"t2\":\"POKE\",\"x\":8.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"p\",\"t\":\"P\",\"t2\":\"PRINT\",\"x\":9.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"a\",\"t\":\"A\",\"t2\":\"NEW\",\"x\":0.7,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"s\",\"t\":\"S\",\"t2\":\"SAVE\",\"x\":1.7,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"d\",\"t\":\"D\",\"t2\":\"DIM\",\"x\":2.7,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"f\",\"t\":\"F\",\"t2\":\"FOR\",\"x\":3.7,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"g\",\"t\":\"G\",\"t2\":\"GOTO\",\"x\":4.7,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"h\",\"t\":\"H\",\"t2\":\"GOSUB\",\"x\":5.7,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"j\",\"t\":\"J\",\"t2\":\"LOAD\",\"x\":6.7,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"k\",\"t\":\"K\",\"t2\":\"LIST\",\"x\":7.7,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"l\",\"t\":\"L\",\"t2\":\"LET\",\"x\":8.7,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"enter\",\"t\":\"ENTER\",\"x\":9.9,\"y\":2,\"w\":1.5,\"h\":1},{\"id\":\"caps\",\"t\":\"CAPS SHIFT\",\"x\":0.15,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"z\",\"t\":\"Z\",\"t2\":\"COPY\",\"x\":1.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"x\",\"t\":\"X\",\"t2\":\"CLEAR\",\"x\":2.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"c\",\"t\":\"C\",\"t2\":\"CONT\",\"x\":3.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"v\",\"t\":\"V\",\"t2\":\"CLS\",\"x\":4.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"b\",\"t\":\"B\",\"t2\":\"BORDER\",\"x\":5.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"n\",\"t\":\"N\",\"t2\":\"NEXT\",\"x\":6.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"m\",\"t\":\"M\",\"t2\":\"PAUSE\",\"x\":7.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"sym\",\"t\":\"SYMBOL SHIFT\",\"x\":8.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"brk\",\"t\":\"BREAK\",\"x\":9.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"capsr\",\"t\":\"CAPS SHIFT\",\"x\":10.4,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"space\",\"t\":\"SPACE\",\"x\":2.4,\"y\":4.15,\"w\":6.8,\"h\":0.7}],\"matrix\":{\"caps\":[\"A8\",\"KBD0\"],\"z\":[\"A8\",\"KBD1\"],\"x\":[\"A8\",\"KBD2\"],\"c\":[\"A8\",\"KBD3\"],\"v\":[\"A8\",\"KBD4\"],\"a\":[\"A9\",\"KBD0\"],\"s\":[\"A9\",\"KBD1\"],\"d\":[\"A9\",\"KBD2\"],\"f\":[\"A9\",\"KBD3\"],\"g\":[\"A9\",\"KBD4\"],\"q\":[\"A10\",\"KBD0\"],\"w\":[\"A10\",\"KBD1\"],\"e\":[\"A10\",\"KBD2\"],\"r\":[\"A10\",\"KBD3\"],\"t\":[\"A10\",\"KBD4\"],\"k1\":[\"A11\",\"KBD0\"],\"k2\":[\"A11\",\"KBD1\"],\"k3\":[\"A11\",\"KBD2\"],\"k4\":[\"A11\",\"KBD3\"],\"k5\":[\"A11\",\"KBD4\"],\"k0\":[\"A12\",\"KBD0\"],\"k9\":[\"A12\",\"KBD1\"],\"k8\":[\"A12\",\"KBD2\"],\"k7\":[\"A12\",\"KBD3\"],\"k6\":[\"A12\",\"KBD4\"],\"p\":[\"A13\",\"KBD0\"],\"o\":[\"A13\",\"KBD1\"],\"i\":[\"A13\",\"KBD2\"],\"u\":[\"A13\",\"KBD3\"],\"y\":[\"A13\",\"KBD4\"],\"enter\":[\"A14\",\"KBD0\"],\"l\":[\"A14\",\"KBD1\"],\"k\":[\"A14\",\"KBD2\"],\"j\":[\"A14\",\"KBD3\"],\"h\":[\"A14\",\"KBD4\"],\"brk\":[\"A15\",\"KBD0\"],\"sym\":[\"A15\",\"KBD1\"],\"m\":[\"A15\",\"KBD2\"],\"n\":[\"A15\",\"KBD3\"],\"b\":[\"A15\",\"KBD4\"],\"capsr\":[\"A8\",\"KBD0\"],\"space\":[\"A15\",\"KBD0\"]},\"special\":{\"capsr\":{\"lines\":[\"A8\",\"KBD0\"],\"it\":\"Il CAPS SHIFT destro \u00e8 in parallelo al sinistro (A8\/KB0, schema: \\\"(2) CAP\\\"): se uno dei due resta premuto il computer vede CAPS SHIFT sempre attivo.\",\"en\":\"The right CAPS SHIFT is wired in parallel with the left one (A8\/KB0, schematic: \\\"(2) CAP\\\"): if either sticks down, the computer sees CAPS SHIFT held all the time.\"},\"space\":{\"lines\":[\"A15\",\"KBD0\"],\"it\":\"La barra spaziatrice \u00e8 in parallelo al tasto BREAK (A15\/KB0, schema: \\\"BRK & SP\\\"), cio\u00e8 alla posizione dello SPACE dello Spectrum. Elettricamente BREAK e SPACE sono lo stesso contatto.\",\"en\":\"The space bar is wired in parallel with the BREAK key (A15\/KB0, schematic: \\\"BRK & SP\\\"), i.e. the Spectrum's SPACE position. Electrically BREAK and SPACE are the same contact.\"},\"brk\":{\"lines\":[\"A15\",\"KBD0\"],\"it\":\"BREAK occupa la posizione dello SPACE dello Spectrum (A15\/KB0), in parallelo alla barra spaziatrice.\",\"en\":\"BREAK sits at the Spectrum's SPACE position (A15\/KB0), in parallel with the space bar.\"}},\"notes_it\":[\"Semirighe (5 tasti, una linea d'indirizzo, pin J9): A11 = 1-5 (pin 6, CR6), A10 = Q-T (pin 7, CR7), A9 = A-G (pin 8, CR8), A12 = 6-0 (pin 9, CR9), A13 = Y-P (pin 10, CR10), A8 = CAPS SHIFT-V (pin 11, CR11), A14 = H-ENTER (pin 12, CR12), A15 = B-BREAK\/SPACE (pin 13, CR13). \u00c8 lo stesso ordine della coda a 8 vie dello Spectrum.\",\"Colonne (8 tasti, una linea KB, pin J9 1-5): KB0 = 1, Q, A, CAPS SHIFT, 0, P, ENTER, BREAK\/SPACE; KB4 = 5, T, G, V, 6, Y, H, B. Se muore una colonna controllare il pin di J9 e il pin 49-53 dello SCLD U3.\",\"Non \u00e8 una membrana Sinclair: i tasti sono a corsa piena, con un tappetino di gomma a cupolette e una pastiglia di carbone che chiude due piste dorate sul circuito stampato della tastiera, collegato alla scheda madre con cavo piatto su J9. Guasto tipico: tasti o barra che non rispondono per contatti ossidati o pastiglie consumate; si risolve pulendo le piste e le pastiglie (o sostituendo il tappetino), raramente \u00e8 l'elettronica.\",\"I due CAPS SHIFT sono in parallelo e BREAK \u00e8 in parallelo alla barra spaziatrice: un tasto in pi\u00f9 non significa una linea in pi\u00f9. Per ottenere un vero BREAK la ROM vuole CAPS SHIFT + BREAK (come CAPS SHIFT + SPACE sullo Spectrum).\",\"I due joystick del TS2068 non passano dalla tastiera: si leggono tramite la porta I\/O del chip audio AY-3-8912 (U14). Un joystick guasto non blocca tasti, al contrario di molti Spectrum con interfacce esterne.\",\"Diodi CR6-CR13 (1N4148) sulla scheda madre, uno per linea d'indirizzo: un diodo aperto fa morire una semiriga, uno in corto (o due tasti di semirighe diverse premuti insieme) collega due linee d'indirizzo e d\u00e0 tasti fantasma.\",\"TS1000: \u00e8 uno ZX81 su scheda Timex; la membrana \u00e8 intercambiabile con quella dello ZX81 (cambiano solo alcune parole stampate) e MAME usa gli stessi ingressi dello ZX81: per la tastiera vale la scheda ZX81, ma le sigle dei componenti sulla scheda Timex non le ho verificate.\",\"TS1500: stessa matrice e stessi ingressi dello ZX81 (MAME usa gli INPUT_PORTS zx81), ma tastiera diversa con 40 tasti in gomma a corsa piena al posto della membrana piatta. Elettricamente la matrice \u00e8 quella dello ZX81; connettori e scheda del TS1500 non li ho verificati su uno schema.\",\"Timex Computer 2068 (Portogallo): secondo una prova d'epoca (Timex Users Magazine) cassa e tastiera sono identiche al TS2068, a parte il nome e la fessura per la cartuccia. Timex Computer 2048: stessa matrice dello Spectrum (MAME), ma cassa diversa e niente porte joystick doppie (un'interfaccia Kempston integrata); tastiera e connettore del TC2048 non li ho verificati.\"],\"notes_en\":[\"Half-rows (5 keys, one address line, J9 pin): A11 = 1-5 (pin 6, CR6), A10 = Q-T (pin 7, CR7), A9 = A-G (pin 8, CR8), A12 = 6-0 (pin 9, CR9), A13 = Y-P (pin 10, CR10), A8 = CAPS SHIFT-V (pin 11, CR11), A14 = H-ENTER (pin 12, CR12), A15 = B-BREAK\/SPACE (pin 13, CR13). This is the same order as the Spectrum's 8-way tail.\",\"Columns (8 keys, one KB line, J9 pins 1-5): KB0 = 1, Q, A, CAPS SHIFT, 0, P, ENTER, BREAK\/SPACE; KB4 = 5, T, G, V, 6, Y, H, B. If a column is dead, check that J9 pin and SCLD U3 pin 49-53.\",\"This is not a Sinclair membrane: the keys are full-travel, over a rubber dome mat with a carbon pill that bridges two gold tracks on the keyboard PCB, which connects to the main board by flat cable into J9. Typical fault: keys or the space bar not responding because of oxidised contacts or worn pills; cleaning the tracks and pills (or a new mat) fixes it, the electronics is rarely at fault.\",\"The two CAPS SHIFTs are in parallel and BREAK is in parallel with the space bar: an extra key does not mean an extra line. For a real BREAK the ROM needs CAPS SHIFT + BREAK (like CAPS SHIFT + SPACE on the Spectrum).\",\"The TS2068's two joysticks do not go through the keyboard: they are read through the I\/O port of the AY-3-8912 sound chip (U14). A faulty joystick does not lock keys.\",\"Diodes CR6-CR13 (1N4148) on the main board, one per address line: an open diode kills a half-row; a shorted one (or two keys on different half-rows pressed together) ties two address lines and gives ghost keys.\",\"TS1000: a ZX81 on a Timex board; the membrane is interchangeable with the ZX81 one (only some printed keywords differ) and MAME uses the ZX81 inputs: use the ZX81 keyboard data, but I did not check the part references on the Timex board.\",\"TS1500: same matrix and inputs as the ZX81 (MAME uses the zx81 INPUT_PORTS), but a different keyboard with 40 full-travel rubber keys instead of the flat membrane. Electrically the matrix is the ZX81 one; I did not check the TS1500 connectors and board against a schematic.\",\"Timex Computer 2068 (Portugal): a contemporary review (Timex Users Magazine) says case and keyboard are identical to the TS2068 apart from the name and the cartridge slot. Timex Computer 2048: same matrix as the Spectrum (MAME), but a different case and no twin joystick ports (one built-in Kempston interface); I did not check the TC2048 keyboard and connector.\"],\"board_it\":\"scheda madre del TS2068, schema Timex 335-870500 \u00abTS2000 System\u00bb (febbraio 1984) del TS2068 Technical Manual\",\"board_en\":\"TS2068 main board, Timex schematic 335-870500 \\\"TS2000 System\\\" (February 1984) in the TS2068 Technical Manual\"},\"vic20\":{\"id\":\"vic20\",\"name\":\"Commodore VIC-20\",\"sources\":[{\"t\":\"MAME src\/mame\/commodore\/vic20.cpp (INPUT_PORTS vic20, via2_pa_r\/via2_pb_w)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/mame\/commodore\/vic20.cpp\"},{\"t\":\"VICE data\/VIC20\/gtk3_pos.vkm (VIC-20 matrix table and C64->VIC-20 conversion note)\",\"u\":\"https:\/\/sourceforge.net\/p\/vice-emu\/code\/HEAD\/tree\/trunk\/vice\/data\/VIC20\/gtk3_pos.vkm\"},{\"t\":\"C64-Wiki: Keyboard (C64 matrix, same physical keyboard)\",\"u\":\"https:\/\/www.c64-wiki.com\/wiki\/Keyboard\"}],\"scan_it\":\"La VIA 6522 n.2 (UAB1, $9120) pilota le colonne su PB0-PB7 (uscite, una alla volta a livello basso) e legge le righe su PA0-PA7 (ingressi). Il tasto RESTORE non \u00e8 nella matrice e va al CA1 della VIA n.1 (UAB3, $9110), che genera l'NMI.\",\"scan_en\":\"VIA 6522 no. 2 (UAB1, $9120) drives the columns on PB0-PB7 (outputs, pulled low one at a time) and reads the rows on PA0-PA7 (inputs). RESTORE is not in the matrix: it goes to CA1 of VIA no. 1 (UAB3, $9110), which raises the NMI.\",\"lines\":[{\"id\":\"PB0\",\"group\":\"col\",\"name\":\"COL0\",\"chip\":\"UAB1\",\"chip_part\":\"6522 VIA2 ($9120)\",\"chip_pin\":\"10\",\"conn_pin\":\"12\",\"also\":\"\",\"path_board\":\"VIC-20 250403\",\"path_en\":[\"UAB1.10 PB0\"],\"path_it\":[\"UAB1.10 PB0\"]},{\"id\":\"PB1\",\"group\":\"col\",\"name\":\"COL1\",\"chip\":\"UAB1\",\"chip_part\":\"6522 VIA2 ($9120)\",\"chip_pin\":\"11\",\"conn_pin\":\"11\",\"also\":\"\",\"path_board\":\"VIC-20 250403\",\"path_en\":[\"UAB1.11 PB1\"],\"path_it\":[\"UAB1.11 PB1\"]},{\"id\":\"PB2\",\"group\":\"col\",\"name\":\"COL2\",\"chip\":\"UAB1\",\"chip_part\":\"6522 VIA2 ($9120)\",\"chip_pin\":\"12\",\"conn_pin\":\"10\",\"also\":\"\",\"path_board\":\"VIC-20 250403\",\"path_en\":[\"UAB1.12 PB2\"],\"path_it\":[\"UAB1.12 PB2\"]},{\"id\":\"PB3\",\"group\":\"col\",\"name\":\"COL3\",\"chip\":\"UAB1\",\"chip_part\":\"6522 VIA2 ($9120)\",\"chip_pin\":\"13\",\"conn_pin\":\"9\",\"path_board\":\"VIC-20 250403\",\"also_it\":\"scrittura del registratore (VIA2 PB3)\",\"also_en\":\"cassette WRITE (VIA2 PB3)\",\"path_en\":[\"UAB1.13 PB3\",\"P2.5 (cassette port)\",\"P2.E (cassette port)\"],\"path_it\":[\"UAB1.13 PB3\",\"P2.5 (Porta del registratore)\",\"P2.E (Porta del registratore)\"]},{\"id\":\"PB4\",\"group\":\"col\",\"name\":\"COL4\",\"chip\":\"UAB1\",\"chip_part\":\"6522 VIA2 ($9120)\",\"chip_pin\":\"14\",\"conn_pin\":\"8\",\"also\":\"\",\"path_board\":\"VIC-20 250403\",\"path_en\":[\"UAB1.14 PB4\"],\"path_it\":[\"UAB1.14 PB4\"]},{\"id\":\"PB5\",\"group\":\"col\",\"name\":\"COL5\",\"chip\":\"UAB1\",\"chip_part\":\"6522 VIA2 ($9120)\",\"chip_pin\":\"15\",\"conn_pin\":\"7\",\"also\":\"\",\"path_board\":\"VIC-20 250403\",\"path_en\":[\"UAB1.15 PB5\"],\"path_it\":[\"UAB1.15 PB5\"]},{\"id\":\"PB6\",\"group\":\"col\",\"name\":\"COL6\",\"chip\":\"UAB1\",\"chip_part\":\"6522 VIA2 ($9120)\",\"chip_pin\":\"16\",\"conn_pin\":\"6\",\"also\":\"\",\"path_board\":\"VIC-20 250403\",\"path_en\":[\"UAB1.16 PB6\"],\"path_it\":[\"UAB1.16 PB6\"]},{\"id\":\"PB7\",\"group\":\"col\",\"name\":\"COL7\",\"chip\":\"UAB1\",\"chip_part\":\"6522 VIA2 ($9120)\",\"chip_pin\":\"17\",\"conn_pin\":\"5\",\"path_board\":\"VIC-20 250403\",\"also_it\":\"joystick DESTRA (porta joystick pin 4)\",\"also_en\":\"joystick RIGHT (control port pin 4)\",\"path_en\":[\"UAB1.17 PB7\",\"P5.4 Pin_4\"],\"path_it\":[\"UAB1.17 PB7\",\"P5.4 Pin_4\"]},{\"id\":\"PA0\",\"group\":\"row\",\"name\":\"ROW0\",\"chip\":\"UAB1\",\"chip_part\":\"6522 VIA2 ($9120)\",\"chip_pin\":\"2\",\"conn_pin\":\"20\",\"also\":\"\",\"path_board\":\"VIC-20 250403\",\"path_en\":[\"UAB1.2 PA0\"],\"path_it\":[\"UAB1.2 PA0\"]},{\"id\":\"PA1\",\"group\":\"row\",\"name\":\"ROW1\",\"chip\":\"UAB1\",\"chip_part\":\"6522 VIA2 ($9120)\",\"chip_pin\":\"3\",\"conn_pin\":\"19\",\"also\":\"\",\"path_board\":\"VIC-20 250403\",\"path_en\":[\"UAB1.3 PA1\"],\"path_it\":[\"UAB1.3 PA1\"]},{\"id\":\"PA2\",\"group\":\"row\",\"name\":\"ROW2\",\"chip\":\"UAB1\",\"chip_part\":\"6522 VIA2 ($9120)\",\"chip_pin\":\"4\",\"conn_pin\":\"18\",\"also\":\"\",\"path_board\":\"VIC-20 250403\",\"path_en\":[\"UAB1.4 PA2\"],\"path_it\":[\"UAB1.4 PA2\"]},{\"id\":\"PA3\",\"group\":\"row\",\"name\":\"ROW3\",\"chip\":\"UAB1\",\"chip_part\":\"6522 VIA2 ($9120)\",\"chip_pin\":\"5\",\"conn_pin\":\"17\",\"also\":\"\",\"path_board\":\"VIC-20 250403\",\"path_en\":[\"UAB1.5 PA3\"],\"path_it\":[\"UAB1.5 PA3\"]},{\"id\":\"PA4\",\"group\":\"row\",\"name\":\"ROW4\",\"chip\":\"UAB1\",\"chip_part\":\"6522 VIA2 ($9120)\",\"chip_pin\":\"6\",\"conn_pin\":\"16\",\"also\":\"\",\"path_board\":\"VIC-20 250403\",\"path_en\":[\"UAB1.6 PA4\"],\"path_it\":[\"UAB1.6 PA4\"]},{\"id\":\"PA5\",\"group\":\"row\",\"name\":\"ROW5\",\"chip\":\"UAB1\",\"chip_part\":\"6522 VIA2 ($9120)\",\"chip_pin\":\"7\",\"conn_pin\":\"15\",\"also\":\"\",\"path_board\":\"VIC-20 250403\",\"path_en\":[\"UAB1.7 PA5\"],\"path_it\":[\"UAB1.7 PA5\"]},{\"id\":\"PA6\",\"group\":\"row\",\"name\":\"ROW6\",\"chip\":\"UAB1\",\"chip_part\":\"6522 VIA2 ($9120)\",\"chip_pin\":\"8\",\"conn_pin\":\"14\",\"also\":\"\",\"path_board\":\"VIC-20 250403\",\"path_en\":[\"UAB1.8 PA6\"],\"path_it\":[\"UAB1.8 PA6\"]},{\"id\":\"PA7\",\"group\":\"row\",\"name\":\"ROW7\",\"chip\":\"UAB1\",\"chip_part\":\"6522 VIA2 ($9120)\",\"chip_pin\":\"9\",\"conn_pin\":\"13\",\"also\":\"\",\"path_board\":\"VIC-20 250403\",\"path_en\":[\"UAB1.9 PA7\"],\"path_it\":[\"UAB1.9 PA7\"]},{\"id\":\"RESTORE\",\"group\":\"extra\",\"name\":\"RESTORE\",\"chip\":\"UAB3\",\"chip_part\":\"6522 VIA1 ($9110) CA1\",\"chip_pin\":\"40\",\"conn_pin\":\"3\",\"path_board\":\"VIC-20 250403\",\"also_it\":\"interrupt su CA1 del VIA1 \u2192 NMI\",\"also_en\":\"VIA1 CA1 interrupt -> NMI\",\"path_en\":[\"UAB3.40 CA1\"],\"path_it\":[\"UAB3.40 CA1\"]}],\"connector\":{\"ref\":\"P10\",\"it\":\"Connettore tastiera 20 pin (pin 2 mancante)\",\"en\":\"20-pin keyboard connector (pin 2 missing)\",\"pins\":[{\"n\":\"1\",\"sig\":\"GND\"},{\"n\":\"2\",\"sig\":\"KEY\",\"note_it\":\"senza pin, polarizzazione\",\"note_en\":\"no pin, polarisation\"},{\"n\":\"3\",\"sig\":\"RESTORE\"},{\"n\":\"4\",\"sig\":\"+5V\"},{\"n\":\"5\",\"sig\":\"PB7\"},{\"n\":\"6\",\"sig\":\"PB6\"},{\"n\":\"7\",\"sig\":\"PB5\"},{\"n\":\"8\",\"sig\":\"PB4\"},{\"n\":\"9\",\"sig\":\"PB3\"},{\"n\":\"10\",\"sig\":\"PB2\"},{\"n\":\"11\",\"sig\":\"PB1\"},{\"n\":\"12\",\"sig\":\"PB0\"},{\"n\":\"13\",\"sig\":\"PA7\"},{\"n\":\"14\",\"sig\":\"PA6\"},{\"n\":\"15\",\"sig\":\"PA5\"},{\"n\":\"16\",\"sig\":\"PA4\"},{\"n\":\"17\",\"sig\":\"PA3\"},{\"n\":\"18\",\"sig\":\"PA2\"},{\"n\":\"19\",\"sig\":\"PA1\"},{\"n\":\"20\",\"sig\":\"PA0\"}]},\"layout\":[{\"id\":\"larrow\",\"t\":\"\u2190\",\"x\":0,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"1\",\"t\":\"1\",\"t2\":\"!\",\"x\":1,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"2\",\"t\":\"2\",\"t2\":\"\\\"\",\"x\":2,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"3\",\"t\":\"3\",\"t2\":\"#\",\"x\":3,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"4\",\"t\":\"4\",\"t2\":\"$\",\"x\":4,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"5\",\"t\":\"5\",\"t2\":\"%\",\"x\":5,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"6\",\"t\":\"6\",\"t2\":\"&\",\"x\":6,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"7\",\"t\":\"7\",\"t2\":\"'\",\"x\":7,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"8\",\"t\":\"8\",\"t2\":\"(\",\"x\":8,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"9\",\"t\":\"9\",\"t2\":\")\",\"x\":9,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"0\",\"t\":\"0\",\"x\":10,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"plus\",\"t\":\"+\",\"x\":11,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"minus\",\"t\":\"-\",\"x\":12,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"pound\",\"t\":\"\u00a3\",\"x\":13,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"home\",\"t\":\"HOME\",\"t2\":\"CLR\",\"x\":14,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"del\",\"t\":\"DEL\",\"t2\":\"INST\",\"x\":15,\"y\":0.0,\"w\":1,\"h\":1},{\"id\":\"ctrl\",\"t\":\"CTRL\",\"x\":0,\"y\":1.0,\"w\":1.5,\"h\":1},{\"id\":\"q\",\"t\":\"Q\",\"x\":1.5,\"y\":1.0,\"w\":1,\"h\":1},{\"id\":\"w\",\"t\":\"W\",\"x\":2.5,\"y\":1.0,\"w\":1,\"h\":1},{\"id\":\"e\",\"t\":\"E\",\"x\":3.5,\"y\":1.0,\"w\":1,\"h\":1},{\"id\":\"r\",\"t\":\"R\",\"x\":4.5,\"y\":1.0,\"w\":1,\"h\":1},{\"id\":\"t\",\"t\":\"T\",\"x\":5.5,\"y\":1.0,\"w\":1,\"h\":1},{\"id\":\"y\",\"t\":\"Y\",\"x\":6.5,\"y\":1.0,\"w\":1,\"h\":1},{\"id\":\"u\",\"t\":\"U\",\"x\":7.5,\"y\":1.0,\"w\":1,\"h\":1},{\"id\":\"i\",\"t\":\"I\",\"x\":8.5,\"y\":1.0,\"w\":1,\"h\":1},{\"id\":\"o\",\"t\":\"O\",\"x\":9.5,\"y\":1.0,\"w\":1,\"h\":1},{\"id\":\"p\",\"t\":\"P\",\"x\":10.5,\"y\":1.0,\"w\":1,\"h\":1},{\"id\":\"at\",\"t\":\"@\",\"x\":11.5,\"y\":1.0,\"w\":1,\"h\":1},{\"id\":\"star\",\"t\":\"*\",\"x\":12.5,\"y\":1.0,\"w\":1,\"h\":1},{\"id\":\"uparrow\",\"t\":\"\u2191\",\"t2\":\"\u03c0\",\"x\":13.5,\"y\":1.0,\"w\":1,\"h\":1},{\"id\":\"restore\",\"t\":\"RESTORE\",\"x\":14.5,\"y\":1.0,\"w\":1.5,\"h\":1},{\"id\":\"stop\",\"t\":\"STOP\",\"t2\":\"RUN\",\"x\":0,\"y\":2.0,\"w\":1,\"h\":1},{\"id\":\"shlock\",\"t\":\"SHIFT LOCK\",\"x\":1,\"y\":2.0,\"w\":1,\"h\":1},{\"id\":\"a\",\"t\":\"A\",\"x\":2,\"y\":2.0,\"w\":1,\"h\":1},{\"id\":\"s\",\"t\":\"S\",\"x\":3,\"y\":2.0,\"w\":1,\"h\":1},{\"id\":\"d\",\"t\":\"D\",\"x\":4,\"y\":2.0,\"w\":1,\"h\":1},{\"id\":\"f\",\"t\":\"F\",\"x\":5,\"y\":2.0,\"w\":1,\"h\":1},{\"id\":\"g\",\"t\":\"G\",\"x\":6,\"y\":2.0,\"w\":1,\"h\":1},{\"id\":\"h\",\"t\":\"H\",\"x\":7,\"y\":2.0,\"w\":1,\"h\":1},{\"id\":\"j\",\"t\":\"J\",\"x\":8,\"y\":2.0,\"w\":1,\"h\":1},{\"id\":\"k\",\"t\":\"K\",\"x\":9,\"y\":2.0,\"w\":1,\"h\":1},{\"id\":\"l\",\"t\":\"L\",\"x\":10,\"y\":2.0,\"w\":1,\"h\":1},{\"id\":\"colon\",\"t\":\":\",\"t2\":\"[\",\"x\":11,\"y\":2.0,\"w\":1,\"h\":1},{\"id\":\"semicolon\",\"t\":\";\",\"t2\":\"]\",\"x\":12,\"y\":2.0,\"w\":1,\"h\":1},{\"id\":\"equal\",\"t\":\"=\",\"x\":13,\"y\":2.0,\"w\":1,\"h\":1},{\"id\":\"return\",\"t\":\"RETURN\",\"x\":14,\"y\":2.0,\"w\":2,\"h\":1},{\"id\":\"cbm\",\"t\":\"C=\",\"x\":0,\"y\":3.0,\"w\":1,\"h\":1},{\"id\":\"lshift\",\"t\":\"SHIFT\",\"x\":1,\"y\":3.0,\"w\":1.5,\"h\":1},{\"id\":\"z\",\"t\":\"Z\",\"x\":2.5,\"y\":3.0,\"w\":1,\"h\":1},{\"id\":\"x\",\"t\":\"X\",\"x\":3.5,\"y\":3.0,\"w\":1,\"h\":1},{\"id\":\"c\",\"t\":\"C\",\"x\":4.5,\"y\":3.0,\"w\":1,\"h\":1},{\"id\":\"v\",\"t\":\"V\",\"x\":5.5,\"y\":3.0,\"w\":1,\"h\":1},{\"id\":\"b\",\"t\":\"B\",\"x\":6.5,\"y\":3.0,\"w\":1,\"h\":1},{\"id\":\"n\",\"t\":\"N\",\"x\":7.5,\"y\":3.0,\"w\":1,\"h\":1},{\"id\":\"m\",\"t\":\"M\",\"x\":8.5,\"y\":3.0,\"w\":1,\"h\":1},{\"id\":\"comma\",\"t\":\",\",\"t2\":\"<\",\"x\":9.5,\"y\":3.0,\"w\":1,\"h\":1},{\"id\":\"period\",\"t\":\".\",\"t2\":\">\",\"x\":10.5,\"y\":3.0,\"w\":1,\"h\":1},{\"id\":\"slash\",\"t\":\"\/\",\"t2\":\"?\",\"x\":11.5,\"y\":3.0,\"w\":1,\"h\":1},{\"id\":\"rshift\",\"t\":\"SHIFT\",\"x\":12.5,\"y\":3.0,\"w\":1.5,\"h\":1},{\"id\":\"down\",\"t\":\"CRSR \u2193\",\"t2\":\"\u2191\",\"x\":14,\"y\":3.0,\"w\":1,\"h\":1},{\"id\":\"right\",\"t\":\"CRSR \u2192\",\"t2\":\"\u2190\",\"x\":15,\"y\":3.0,\"w\":1,\"h\":1},{\"id\":\"space\",\"t\":\"SPACE\",\"x\":3,\"y\":4.0,\"w\":9,\"h\":1},{\"id\":\"f1\",\"t\":\"f1\",\"t2\":\"f2\",\"x\":16.5,\"y\":0.0,\"w\":1.5,\"h\":1},{\"id\":\"f3\",\"t\":\"f3\",\"t2\":\"f4\",\"x\":16.5,\"y\":1.0,\"w\":1.5,\"h\":1},{\"id\":\"f5\",\"t\":\"f5\",\"t2\":\"f6\",\"x\":16.5,\"y\":2.0,\"w\":1.5,\"h\":1},{\"id\":\"f7\",\"t\":\"f7\",\"t2\":\"f8\",\"x\":16.5,\"y\":3.0,\"w\":1.5,\"h\":1}],\"matrix\":{\"1\":[\"PB0\",\"PA0\"],\"3\":[\"PB0\",\"PA1\"],\"5\":[\"PB0\",\"PA2\"],\"7\":[\"PB0\",\"PA3\"],\"9\":[\"PB0\",\"PA4\"],\"plus\":[\"PB0\",\"PA5\"],\"pound\":[\"PB0\",\"PA6\"],\"del\":[\"PB0\",\"PA7\"],\"larrow\":[\"PB1\",\"PA0\"],\"w\":[\"PB1\",\"PA1\"],\"r\":[\"PB1\",\"PA2\"],\"y\":[\"PB1\",\"PA3\"],\"i\":[\"PB1\",\"PA4\"],\"p\":[\"PB1\",\"PA5\"],\"star\":[\"PB1\",\"PA6\"],\"return\":[\"PB1\",\"PA7\"],\"ctrl\":[\"PB2\",\"PA0\"],\"a\":[\"PB2\",\"PA1\"],\"d\":[\"PB2\",\"PA2\"],\"g\":[\"PB2\",\"PA3\"],\"j\":[\"PB2\",\"PA4\"],\"l\":[\"PB2\",\"PA5\"],\"semicolon\":[\"PB2\",\"PA6\"],\"right\":[\"PB2\",\"PA7\"],\"stop\":[\"PB3\",\"PA0\"],\"lshift\":[\"PB3\",\"PA1\"],\"x\":[\"PB3\",\"PA2\"],\"v\":[\"PB3\",\"PA3\"],\"n\":[\"PB3\",\"PA4\"],\"comma\":[\"PB3\",\"PA5\"],\"slash\":[\"PB3\",\"PA6\"],\"down\":[\"PB3\",\"PA7\"],\"space\":[\"PB4\",\"PA0\"],\"z\":[\"PB4\",\"PA1\"],\"c\":[\"PB4\",\"PA2\"],\"b\":[\"PB4\",\"PA3\"],\"m\":[\"PB4\",\"PA4\"],\"period\":[\"PB4\",\"PA5\"],\"rshift\":[\"PB4\",\"PA6\"],\"f1\":[\"PB4\",\"PA7\"],\"cbm\":[\"PB5\",\"PA0\"],\"s\":[\"PB5\",\"PA1\"],\"f\":[\"PB5\",\"PA2\"],\"h\":[\"PB5\",\"PA3\"],\"k\":[\"PB5\",\"PA4\"],\"colon\":[\"PB5\",\"PA5\"],\"equal\":[\"PB5\",\"PA6\"],\"f3\":[\"PB5\",\"PA7\"],\"q\":[\"PB6\",\"PA0\"],\"e\":[\"PB6\",\"PA1\"],\"t\":[\"PB6\",\"PA2\"],\"u\":[\"PB6\",\"PA3\"],\"o\":[\"PB6\",\"PA4\"],\"at\":[\"PB6\",\"PA5\"],\"uparrow\":[\"PB6\",\"PA6\"],\"f5\":[\"PB6\",\"PA7\"],\"2\":[\"PB7\",\"PA0\"],\"4\":[\"PB7\",\"PA1\"],\"6\":[\"PB7\",\"PA2\"],\"8\":[\"PB7\",\"PA3\"],\"0\":[\"PB7\",\"PA4\"],\"minus\":[\"PB7\",\"PA5\"],\"home\":[\"PB7\",\"PA6\"],\"f7\":[\"PB7\",\"PA7\"],\"shlock\":[\"PB3\",\"PA1\"]},\"special\":{\"restore\":{\"lines\":[\"RESTORE\",\"GND\"],\"it\":\"Non \u00e8 nella matrice: chiude il pin 3 (RESTORE) verso massa; il segnale va al CA1 (pin 40) della VIA n.1 UAB3, che genera l'NMI.\",\"en\":\"Not in the matrix: it shorts pin 3 (RESTORE) to ground; the signal goes to CA1 (pin 40) of VIA no. 1 UAB3, which raises the NMI.\"},\"shlock\":{\"lines\":[\"PB3\",\"PA1\"],\"it\":\"SHIFT LOCK \u00e8 un tasto a ritenuta collegato in parallelo allo SHIFT sinistro (PB3\/PA1): se resta bloccato gi\u00f9, il computer vede SHIFT sempre premuto.\",\"en\":\"SHIFT LOCK is a latching key wired in parallel with left SHIFT (PB3\/PA1): if it stays latched down, the computer sees SHIFT held all the time.\"}},\"notes_it\":[\"La tastiera del VIC-20 \u00e8 fisicamente la stessa del C64, ma sulla scheda madre i collegamenti sono permutati: rispetto al C64 la colonna 0 e la 7 sono scambiate (PA0<->PA7) e le righe 3 e 7 pure (PB3<->PB7).\",\"PB3 \u00e8 condivisa con l'uscita WRITE del registratore e PB7 con la direzione DESTRA del joystick: un joystick o un registratore difettoso pu\u00f2 far sembrare guasta una colonna di tasti.\"],\"notes_en\":[\"The VIC-20 keyboard is physically the same as the C64's, but the motherboard wiring is permuted: compared with the C64, column 0 and 7 are swapped (PA0<->PA7) and so are rows 3 and 7 (PB3<->PB7).\",\"PB3 is shared with the cassette WRITE line and PB7 with joystick RIGHT: a faulty joystick or datasette can make a column of keys look faulty.\"],\"board_it\":\"scheda 250403 (cost reduced)\",\"board_en\":\"250403 board (cost reduced)\"},\"zx80\":{\"id\":\"zx80\",\"name\":\"Sinclair ZX80\",\"sources\":[{\"t\":\"MAME src\/mame\/sinclair\/zx.cpp (INPUT_PORTS zx80) and zx_m.cpp (zx80_io_r)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/mame\/sinclair\/zx.cpp\"},{\"t\":\"TankedThomas\/ZX80 KiCad recreation (schematic + PCB nets, based on Grant Searle's redraw; Docs\/ZX80Iss2.jpg board photo)\",\"u\":\"https:\/\/github.com\/TankedThomas\/ZX80\"},{\"t\":\"Grant Searle ZX80 schematic (Docs\/zx80.pdf in the same repository)\",\"u\":\"https:\/\/github.com\/TankedThomas\/ZX80\/tree\/master\/Docs\"},{\"t\":\"The ZX80 Keyboard (timexsinclair.com): IC10 74LS365, diodes D3-D10 on A8-A15, PCB-based membrane\",\"u\":\"https:\/\/timexsinclair.com\/article\/the-zx80-keyboard\/\"}],\"scan_it\":\"Lo ZX80 non ha ULA: la CPU Z80 (IC1) mette a 0 una delle linee A8-A15 durante la lettura della porta FEh e ogni linea arriva a una semiriga attraverso un diodo (D3-D10, in fila sopra la tastiera). Le cinque colonne KBD0-KBD4, con pull-up da 47K (R13-R17), entrano nel buffer 74LS365 (IC10) che le mette su D0-D4 quando il segnale KBD (decodifica di IORQ, RD e A0) lo abilita. Tasto premuto = bit a 0.\",\"scan_en\":\"The ZX80 has no ULA: the Z80 CPU (IC1) takes one of A8-A15 low during an IN from port FEh and each line reaches a half-row through a diode (D3-D10, in a row just above the keyboard). The five column lines KBD0-KBD4, with 47K pull-ups (R13-R17), go into the 74LS365 buffer (IC10), which puts them on D0-D4 when the KBD signal (decoded from IORQ, RD and A0) enables it. A pressed key reads as 0.\",\"lines\":[{\"id\":\"A8\",\"group\":\"col\",\"name\":\"A8\",\"chip\":\"IC1\",\"chip_part\":\"Z80 CPU (NEC D780C)\",\"chip_pin\":\"38\",\"conn_pin\":\"\",\"also_it\":\"diodo D3 sulla scheda, nella fila di diodi subito sopra la tastiera; porta FEFEh; nello schema ridisegnato da Grant Searle questo diodo \u00e8 sulla rete A8'\",\"also_en\":\"diode D3 on the PCB, row of diodes just above the keyboard; port FEFEh; in Grant Searle's redraw this diode sits on the net named A8'\"},{\"id\":\"A9\",\"group\":\"col\",\"name\":\"A9\",\"chip\":\"IC1\",\"chip_part\":\"Z80 CPU (NEC D780C)\",\"chip_pin\":\"39\",\"conn_pin\":\"\",\"also_it\":\"diodo D4 sulla scheda, nella fila di diodi subito sopra la tastiera; porta FDFEh\",\"also_en\":\"diode D4 on the PCB, row of diodes just above the keyboard; port FDFEh\"},{\"id\":\"A10\",\"group\":\"col\",\"name\":\"A10\",\"chip\":\"IC1\",\"chip_part\":\"Z80 CPU (NEC D780C)\",\"chip_pin\":\"40\",\"conn_pin\":\"\",\"also_it\":\"diodo D5 sulla scheda, nella fila di diodi subito sopra la tastiera; porta FBFEh\",\"also_en\":\"diode D5 on the PCB, row of diodes just above the keyboard; port FBFEh\"},{\"id\":\"A11\",\"group\":\"col\",\"name\":\"A11\",\"chip\":\"IC1\",\"chip_part\":\"Z80 CPU (NEC D780C)\",\"chip_pin\":\"1\",\"conn_pin\":\"\",\"also_it\":\"diodo D6 sulla scheda, nella fila di diodi subito sopra la tastiera; porta F7FEh\",\"also_en\":\"diode D6 on the PCB, row of diodes just above the keyboard; port F7FEh\"},{\"id\":\"A12\",\"group\":\"col\",\"name\":\"A12\",\"chip\":\"IC1\",\"chip_part\":\"Z80 CPU (NEC D780C)\",\"chip_pin\":\"2\",\"conn_pin\":\"\",\"also_it\":\"diodo D7 sulla scheda, nella fila di diodi subito sopra la tastiera; porta EFFEh\",\"also_en\":\"diode D7 on the PCB, row of diodes just above the keyboard; port EFFEh\"},{\"id\":\"A13\",\"group\":\"col\",\"name\":\"A13\",\"chip\":\"IC1\",\"chip_part\":\"Z80 CPU (NEC D780C)\",\"chip_pin\":\"3\",\"conn_pin\":\"\",\"also_it\":\"diodo D8 sulla scheda, nella fila di diodi subito sopra la tastiera; porta DFFEh\",\"also_en\":\"diode D8 on the PCB, row of diodes just above the keyboard; port DFFEh\"},{\"id\":\"A14\",\"group\":\"col\",\"name\":\"A14\",\"chip\":\"IC1\",\"chip_part\":\"Z80 CPU (NEC D780C)\",\"chip_pin\":\"4\",\"conn_pin\":\"\",\"also_it\":\"diodo D9 sulla scheda, nella fila di diodi subito sopra la tastiera; porta BFFEh; nello schema ridisegnato da Grant Searle questo diodo \u00e8 sulla rete A14'\",\"also_en\":\"diode D9 on the PCB, row of diodes just above the keyboard; port BFFEh; in Grant Searle's redraw this diode sits on the net named A14'\"},{\"id\":\"A15\",\"group\":\"col\",\"name\":\"A15\",\"chip\":\"IC1\",\"chip_part\":\"Z80 CPU (NEC D780C)\",\"chip_pin\":\"5\",\"conn_pin\":\"\",\"also_it\":\"diodo D10 sulla scheda, nella fila di diodi subito sopra la tastiera; porta 7FFEh; nello schema ridisegnato da Grant Searle questo diodo \u00e8 sulla rete A15'\",\"also_en\":\"diode D10 on the PCB, row of diodes just above the keyboard; port 7FFEh; in Grant Searle's redraw this diode sits on the net named A15'\"},{\"id\":\"KBD0\",\"group\":\"row\",\"name\":\"KBD0\",\"chip\":\"IC10\",\"chip_part\":\"74LS365 hex buffer\",\"chip_pin\":\"6\",\"conn_pin\":\"\",\"also_it\":\"IC10 ingresso pin 6, uscita pin 7 sulla linea dati D0; pull-up da 47K (una tra R13-R17); IC10 abilitato da KBD (pin 1 e 15)\",\"also_en\":\"IC10 input pin 6, output pin 7 to data line D0; 47K pull-up (one of R13-R17); IC10 enabled by KBD (pins 1 and 15)\"},{\"id\":\"KBD1\",\"group\":\"row\",\"name\":\"KBD1\",\"chip\":\"IC10\",\"chip_part\":\"74LS365 hex buffer\",\"chip_pin\":\"10\",\"conn_pin\":\"\",\"also_it\":\"IC10 ingresso pin 10, uscita pin 9 sulla linea dati D1; pull-up da 47K (una tra R13-R17); IC10 abilitato da KBD (pin 1 e 15)\",\"also_en\":\"IC10 input pin 10, output pin 9 to data line D1; 47K pull-up (one of R13-R17); IC10 enabled by KBD (pins 1 and 15)\"},{\"id\":\"KBD2\",\"group\":\"row\",\"name\":\"KBD2\",\"chip\":\"IC10\",\"chip_part\":\"74LS365 hex buffer\",\"chip_pin\":\"12\",\"conn_pin\":\"\",\"also_it\":\"IC10 ingresso pin 12, uscita pin 11 sulla linea dati D2; pull-up da 47K (una tra R13-R17); IC10 abilitato da KBD (pin 1 e 15)\",\"also_en\":\"IC10 input pin 12, output pin 11 to data line D2; 47K pull-up (one of R13-R17); IC10 enabled by KBD (pins 1 and 15)\"},{\"id\":\"KBD3\",\"group\":\"row\",\"name\":\"KBD3\",\"chip\":\"IC10\",\"chip_part\":\"74LS365 hex buffer\",\"chip_pin\":\"4\",\"conn_pin\":\"\",\"also_it\":\"IC10 ingresso pin 4, uscita pin 5 sulla linea dati D3; pull-up da 47K (una tra R13-R17); IC10 abilitato da KBD (pin 1 e 15)\",\"also_en\":\"IC10 input pin 4, output pin 5 to data line D3; 47K pull-up (one of R13-R17); IC10 enabled by KBD (pins 1 and 15)\"},{\"id\":\"KBD4\",\"group\":\"row\",\"name\":\"KBD4\",\"chip\":\"IC10\",\"chip_part\":\"74LS365 hex buffer\",\"chip_pin\":\"14\",\"conn_pin\":\"\",\"also_it\":\"IC10 ingresso pin 14, uscita pin 13 sulla linea dati D4; pull-up da 47K (una tra R13-R17); IC10 abilitato da KBD (pin 1 e 15)\",\"also_en\":\"IC10 input pin 14, output pin 13 to data line D4; 47K pull-up (one of R13-R17); IC10 enabled by KBD (pins 1 and 15)\"}],\"connectors\":[],\"layout\":[{\"id\":\"k1\",\"t\":\"1\",\"t2\":\"NOT\",\"x\":0,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k2\",\"t\":\"2\",\"t2\":\"AND\",\"x\":1,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k3\",\"t\":\"3\",\"t2\":\"THEN\",\"x\":2,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k4\",\"t\":\"4\",\"t2\":\"TO\",\"x\":3,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k5\",\"t\":\"5\",\"t2\":\"\u21e6\",\"x\":4,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k6\",\"t\":\"6\",\"t2\":\"\u21e9\",\"x\":5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k7\",\"t\":\"7\",\"t2\":\"\u21e7\",\"x\":6,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k8\",\"t\":\"8\",\"t2\":\"\u21e8\",\"x\":7,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k9\",\"t\":\"9\",\"t2\":\"HOME\",\"x\":8,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k0\",\"t\":\"0\",\"t2\":\"RUBOUT\",\"x\":9,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"q\",\"t\":\"Q\",\"t2\":\"NEW\",\"x\":0.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"w\",\"t\":\"W\",\"t2\":\"LOAD\",\"x\":1.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"e\",\"t\":\"E\",\"t2\":\"SAVE\",\"x\":2.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"r\",\"t\":\"R\",\"t2\":\"RUN\",\"x\":3.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"t\",\"t\":\"T\",\"t2\":\"CONT\",\"x\":4.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"y\",\"t\":\"Y\",\"t2\":\"REM\",\"x\":5.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"u\",\"t\":\"U\",\"t2\":\"IF\",\"x\":6.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"i\",\"t\":\"I\",\"t2\":\"INPUT\",\"x\":7.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"o\",\"t\":\"O\",\"t2\":\"PRINT\",\"x\":8.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"p\",\"t\":\"P\",\"t2\":\"*\",\"x\":9.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"a\",\"t\":\"A\",\"t2\":\"LIST\",\"x\":0.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"s\",\"t\":\"S\",\"t2\":\"STOP\",\"x\":1.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"d\",\"t\":\"D\",\"t2\":\"DIM\",\"x\":2.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"f\",\"t\":\"F\",\"t2\":\"FOR\",\"x\":3.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"g\",\"t\":\"G\",\"t2\":\"GOTO\",\"x\":4.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"h\",\"t\":\"H\",\"t2\":\"POKE\",\"x\":5.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"j\",\"t\":\"J\",\"t2\":\"RAND\",\"x\":6.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"k\",\"t\":\"K\",\"t2\":\"LET\",\"x\":7.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"l\",\"t\":\"L\",\"t2\":\"=\",\"x\":8.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"nl\",\"t\":\"NEW LINE\",\"t2\":\"EDIT\",\"x\":9.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"shift\",\"t\":\"SHIFT\",\"x\":0.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"z\",\"t\":\"Z\",\"t2\":\":\",\"x\":1.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"x\",\"t\":\"X\",\"t2\":\"CLEAR\",\"x\":2.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"c\",\"t\":\"C\",\"t2\":\"CLS\",\"x\":3.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"v\",\"t\":\"V\",\"t2\":\"GOSUB\",\"x\":4.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"b\",\"t\":\"B\",\"t2\":\"RET\",\"x\":5.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"n\",\"t\":\"N\",\"t2\":\"NEXT\",\"x\":6.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"m\",\"t\":\"M\",\"t2\":\">\",\"x\":7.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"dot\",\"t\":\".\",\"t2\":\",\",\"x\":8.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"space\",\"t\":\"SPACE\",\"t2\":\"BREAK\",\"x\":9.25,\"y\":3,\"w\":1,\"h\":1}],\"matrix\":{\"shift\":[\"A8\",\"KBD0\"],\"z\":[\"A8\",\"KBD1\"],\"x\":[\"A8\",\"KBD2\"],\"c\":[\"A8\",\"KBD3\"],\"v\":[\"A8\",\"KBD4\"],\"a\":[\"A9\",\"KBD0\"],\"s\":[\"A9\",\"KBD1\"],\"d\":[\"A9\",\"KBD2\"],\"f\":[\"A9\",\"KBD3\"],\"g\":[\"A9\",\"KBD4\"],\"q\":[\"A10\",\"KBD0\"],\"w\":[\"A10\",\"KBD1\"],\"e\":[\"A10\",\"KBD2\"],\"r\":[\"A10\",\"KBD3\"],\"t\":[\"A10\",\"KBD4\"],\"k1\":[\"A11\",\"KBD0\"],\"k2\":[\"A11\",\"KBD1\"],\"k3\":[\"A11\",\"KBD2\"],\"k4\":[\"A11\",\"KBD3\"],\"k5\":[\"A11\",\"KBD4\"],\"k0\":[\"A12\",\"KBD0\"],\"k9\":[\"A12\",\"KBD1\"],\"k8\":[\"A12\",\"KBD2\"],\"k7\":[\"A12\",\"KBD3\"],\"k6\":[\"A12\",\"KBD4\"],\"p\":[\"A13\",\"KBD0\"],\"o\":[\"A13\",\"KBD1\"],\"i\":[\"A13\",\"KBD2\"],\"u\":[\"A13\",\"KBD3\"],\"y\":[\"A13\",\"KBD4\"],\"nl\":[\"A14\",\"KBD0\"],\"l\":[\"A14\",\"KBD1\"],\"k\":[\"A14\",\"KBD2\"],\"j\":[\"A14\",\"KBD3\"],\"h\":[\"A14\",\"KBD4\"],\"space\":[\"A15\",\"KBD0\"],\"dot\":[\"A15\",\"KBD1\"],\"m\":[\"A15\",\"KBD2\"],\"n\":[\"A15\",\"KBD3\"],\"b\":[\"A15\",\"KBD4\"]},\"notes_it\":[\"Lo ZX80 non ha code n\u00e9 connettori della tastiera: i contatti dei tasti sono piste stampate direttamente sul circuito, sotto una membrana adesiva con lo strato conduttivo. Per questo i campi pin connettore sono vuoti: si misura direttamente sui diodi D3-D10 e sui pin di IC10.\",\"Una semiriga di 5 tasti morta = quella linea d'indirizzo: diodo D3-D10 relativo aperto o pista interrotta tra diodo e tastiera. A11 = 1-5, A12 = 6-0, A10 = Q-T, A13 = Y-P, A9 = A-G, A14 = H-NEW LINE, A8 = SHIFT-V, A15 = B-SPACE.\",\"Una colonna di 8 tasti morta = quella linea KBD: ingresso di IC10 (74LS365), pista o resistenza di pull-up; se sono morte tutte le colonne controllare IC10 e il segnale KBD sui pin 1 e 15.\",\"Tasti che non rispondono sparsi: contatti sul circuito ossidati o sporchi, oppure la membrana si \u00e8 staccata o ha perso conducibilit\u00e0. Pulire le piazzole con alcol isopropilico.\",\"Sul bit D7 della stessa lettura c'\u00e8 l'ingresso cassetta, che passa anch'esso per IC10 (ingresso pin 2, uscita pin 3).\"],\"notes_en\":[\"The ZX80 has no keyboard tails or connectors: the key contacts are tracks printed on the main board under a stick-on membrane with a conductive layer. That is why the connector pin fields are empty: measure directly on diodes D3-D10 and on the IC10 pins.\",\"A half-row of 5 keys dead = that address line: its diode (D3-D10) open or a broken track between diode and keyboard. A11 = 1-5, A12 = 6-0, A10 = Q-T, A13 = Y-P, A9 = A-G, A14 = H-NEW LINE, A8 = SHIFT-V, A15 = B-SPACE.\",\"A column of 8 keys dead = that KBD line: IC10 (74LS365) input, track or pull-up resistor; if every column is dead check IC10 and the KBD enable on pins 1 and 15.\",\"Scattered dead keys: dirty or oxidised contacts on the board, or the membrane lifting or losing its conductive coating. Clean the pads with isopropyl alcohol.\",\"Bit D7 of the same read is the tape input, which also goes through IC10 (input pin 2, output pin 3).\"],\"board_it\":\"Issue 2 (sigle dallo schema ridisegnato da Grant Searle)\",\"board_en\":\"Issue 2 (references from Grant Searle's redrawn schematic)\"},\"zx81\":{\"id\":\"zx81\",\"name\":\"Sinclair ZX81\",\"sources\":[{\"t\":\"MAME src\/mame\/sinclair\/zx.cpp (INPUT_PORTS zx81) and zx_m.cpp (zx81_io_r)\",\"u\":\"https:\/\/github.com\/mamedev\/mame\/blob\/master\/src\/mame\/sinclair\/zx.cpp\"},{\"t\":\"ZX81 circuit diagram (Retro Isle, SCH81.GIF): IC1 KBD0-4 pins, diodes D1-D8 per address line\",\"u\":\"http:\/\/www.retroisle.com\/sinclair\/zx81\/Technical\/Hardware\/ZX81-Schematics.php\"},{\"t\":\"Sinclair ZX81 kit assembly \/ service manual (KB1 5-way, KB2 8-way, RP3 5x10K, D1-D8)\",\"u\":\"https:\/\/theoldrobots.com\/book74\/ZX81_ServiceManualAndAssemblyInstructions.pdf\"},{\"t\":\"Spectrum For Everyone, ZX81 Issue 1 layout redraw (RP3 10K x 5, keyboard 1 = ULA, keyboard 2)\",\"u\":\"https:\/\/www.spectrumforeveryone.com\/wp-content\/uploads\/2023\/11\/ZX81_Issue_1_-Layout.pdf\"},{\"t\":\"Andrew Rea, ZX81 ULA replacement notes (KBD0-4 = ULA pins 33\/31\/29\/27\/25)\",\"u\":\"https:\/\/oldcomputer.info\/8bit\/zx81\/ULA\/ula.htm\"},{\"t\":\"swetland\/zx81-keyboard (KiCad replacement keyboard, tail pin order)\",\"u\":\"https:\/\/github.com\/swetland\/zx81-keyboard\"},{\"t\":\"ikjordan\/ZX81_USB_KBD (code.py, tail pin order)\",\"u\":\"https:\/\/github.com\/ikjordan\/ZX81_USB_KBD\"}],\"scan_it\":\"La CPU Z80A (IC3) seleziona una semiriga alla volta mettendo a 0 una delle linee d'indirizzo A8-A15 durante la lettura della porta FEh; ogni linea arriva alla membrana (coda a 8 vie, KB2) attraverso un diodo (D1-D8). La ULA (IC1) legge le cinque colonne KBD0-KBD4 (coda a 5 vie, KB1; pin ULA 33, 31, 29, 27, 25), tenute alte dalla rete di pull-up RP3 (5 x 10K), e le mette su D0-D4. Tasto premuto = bit a 0.\",\"scan_en\":\"The Z80A CPU (IC3) selects one half-row at a time by taking one of the address lines A8-A15 low during an IN from port FEh; each line reaches the membrane (8-way tail, KB2) through a diode (D1-D8). The ULA (IC1) reads the five column lines KBD0-KBD4 (5-way tail, KB1; ULA pins 33, 31, 29, 27, 25), held high by the RP3 pull-up pack (5 x 10K), and puts them on D0-D4. A pressed key reads as 0.\",\"lines\":[{\"id\":\"A8\",\"group\":\"col\",\"name\":\"A8\",\"chip\":\"IC3\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"38\",\"conn\":\"KB2\",\"conn_pin\":\"6\",\"also_it\":\"diodo D6 (1N4148\/1N4448) tra la CPU e la membrana; porta FEFEh\",\"also_en\":\"diode D6 (1N4148\/1N4448) between CPU and membrane; port FEFEh\"},{\"id\":\"A9\",\"group\":\"col\",\"name\":\"A9\",\"chip\":\"IC3\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"39\",\"conn\":\"KB2\",\"conn_pin\":\"4\",\"also_it\":\"diodo D4 (1N4148\/1N4448) tra la CPU e la membrana; porta FDFEh\",\"also_en\":\"diode D4 (1N4148\/1N4448) between CPU and membrane; port FDFEh\"},{\"id\":\"A10\",\"group\":\"col\",\"name\":\"A10\",\"chip\":\"IC3\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"40\",\"conn\":\"KB2\",\"conn_pin\":\"2\",\"also_it\":\"diodo D2 (1N4148\/1N4448) tra la CPU e la membrana; porta FBFEh\",\"also_en\":\"diode D2 (1N4148\/1N4448) between CPU and membrane; port FBFEh\"},{\"id\":\"A11\",\"group\":\"col\",\"name\":\"A11\",\"chip\":\"IC3\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"1\",\"conn\":\"KB2\",\"conn_pin\":\"1\",\"also_it\":\"diodo D1 (1N4148\/1N4448) tra la CPU e la membrana; porta F7FEh\",\"also_en\":\"diode D1 (1N4148\/1N4448) between CPU and membrane; port F7FEh\"},{\"id\":\"A12\",\"group\":\"col\",\"name\":\"A12\",\"chip\":\"IC3\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"2\",\"conn\":\"KB2\",\"conn_pin\":\"3\",\"also_it\":\"diodo D3 (1N4148\/1N4448) tra la CPU e la membrana; porta EFFEh\",\"also_en\":\"diode D3 (1N4148\/1N4448) between CPU and membrane; port EFFEh\"},{\"id\":\"A13\",\"group\":\"col\",\"name\":\"A13\",\"chip\":\"IC3\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"3\",\"conn\":\"KB2\",\"conn_pin\":\"5\",\"also_it\":\"diodo D5 (1N4148\/1N4448) tra la CPU e la membrana; porta DFFEh\",\"also_en\":\"diode D5 (1N4148\/1N4448) between CPU and membrane; port DFFEh\"},{\"id\":\"A14\",\"group\":\"col\",\"name\":\"A14\",\"chip\":\"IC3\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"4\",\"conn\":\"KB2\",\"conn_pin\":\"7\",\"also_it\":\"diodo D7 (1N4148\/1N4448) tra la CPU e la membrana; porta BFFEh\",\"also_en\":\"diode D7 (1N4148\/1N4448) between CPU and membrane; port BFFEh\"},{\"id\":\"A15\",\"group\":\"col\",\"name\":\"A15\",\"chip\":\"IC3\",\"chip_part\":\"Z80A CPU\",\"chip_pin\":\"5\",\"conn\":\"KB2\",\"conn_pin\":\"8\",\"also_it\":\"diodo D8 (1N4148\/1N4448) tra la CPU e la membrana; porta 7FFEh\",\"also_en\":\"diode D8 (1N4148\/1N4448) between CPU and membrane; port 7FFEh\"},{\"id\":\"KBD0\",\"group\":\"row\",\"name\":\"KBD0\",\"chip\":\"IC1\",\"chip_part\":\"ULA 2C184E \/ 2C210E\",\"chip_pin\":\"33\",\"conn\":\"KB1\",\"conn_pin\":\"5\",\"also_it\":\"pull-up in RP3 (5 x 10K); letto come bit D0 della porta FEh\",\"also_en\":\"pull-up in RP3 (5 x 10K); read as data bit D0 of port FEh\"},{\"id\":\"KBD1\",\"group\":\"row\",\"name\":\"KBD1\",\"chip\":\"IC1\",\"chip_part\":\"ULA 2C184E \/ 2C210E\",\"chip_pin\":\"31\",\"conn\":\"KB1\",\"conn_pin\":\"4\",\"also_it\":\"pull-up in RP3 (5 x 10K); letto come bit D1 della porta FEh\",\"also_en\":\"pull-up in RP3 (5 x 10K); read as data bit D1 of port FEh\"},{\"id\":\"KBD2\",\"group\":\"row\",\"name\":\"KBD2\",\"chip\":\"IC1\",\"chip_part\":\"ULA 2C184E \/ 2C210E\",\"chip_pin\":\"29\",\"conn\":\"KB1\",\"conn_pin\":\"3\",\"also_it\":\"pull-up in RP3 (5 x 10K); letto come bit D2 della porta FEh\",\"also_en\":\"pull-up in RP3 (5 x 10K); read as data bit D2 of port FEh\"},{\"id\":\"KBD3\",\"group\":\"row\",\"name\":\"KBD3\",\"chip\":\"IC1\",\"chip_part\":\"ULA 2C184E \/ 2C210E\",\"chip_pin\":\"27\",\"conn\":\"KB1\",\"conn_pin\":\"2\",\"also_it\":\"pull-up in RP3 (5 x 10K); letto come bit D3 della porta FEh\",\"also_en\":\"pull-up in RP3 (5 x 10K); read as data bit D3 of port FEh\"},{\"id\":\"KBD4\",\"group\":\"row\",\"name\":\"KBD4\",\"chip\":\"IC1\",\"chip_part\":\"ULA 2C184E \/ 2C210E\",\"chip_pin\":\"25\",\"conn\":\"KB1\",\"conn_pin\":\"1\",\"also_it\":\"pull-up in RP3 (5 x 10K); letto come bit D4 della porta FEh\",\"also_en\":\"pull-up in RP3 (5 x 10K); read as data bit D4 of port FEh\"}],\"connectors\":[{\"ref\":\"KB1\",\"it\":\"Connettore membrana 5 vie (colonne KBD0-KBD4, verso la ULA)\",\"en\":\"5-way membrane connector (KBD0-KBD4 columns, to the ULA)\",\"pins\":[{\"n\":\"1\",\"sig\":\"KBD4\"},{\"n\":\"2\",\"sig\":\"KBD3\"},{\"n\":\"3\",\"sig\":\"KBD2\"},{\"n\":\"4\",\"sig\":\"KBD1\"},{\"n\":\"5\",\"sig\":\"KBD0\"}]},{\"ref\":\"KB2\",\"it\":\"Connettore membrana 8 vie (semirighe A8-A15, attraverso i diodi)\",\"en\":\"8-way membrane connector (A8-A15 half-rows, through the diodes)\",\"pins\":[{\"n\":\"1\",\"sig\":\"A11\",\"note_it\":\"diodo D1\",\"note_en\":\"diode D1\"},{\"n\":\"2\",\"sig\":\"A10\",\"note_it\":\"diodo D2\",\"note_en\":\"diode D2\"},{\"n\":\"3\",\"sig\":\"A12\",\"note_it\":\"diodo D3\",\"note_en\":\"diode D3\"},{\"n\":\"4\",\"sig\":\"A9\",\"note_it\":\"diodo D4\",\"note_en\":\"diode D4\"},{\"n\":\"5\",\"sig\":\"A13\",\"note_it\":\"diodo D5\",\"note_en\":\"diode D5\"},{\"n\":\"6\",\"sig\":\"A8\",\"note_it\":\"diodo D6\",\"note_en\":\"diode D6\"},{\"n\":\"7\",\"sig\":\"A14\",\"note_it\":\"diodo D7\",\"note_en\":\"diode D7\"},{\"n\":\"8\",\"sig\":\"A15\",\"note_it\":\"diodo D8\",\"note_en\":\"diode D8\"}]}],\"layout\":[{\"id\":\"k1\",\"t\":\"1\",\"t2\":\"EDIT\",\"x\":0,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k2\",\"t\":\"2\",\"t2\":\"AND\",\"x\":1,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k3\",\"t\":\"3\",\"t2\":\"THEN\",\"x\":2,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k4\",\"t\":\"4\",\"t2\":\"TO\",\"x\":3,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k5\",\"t\":\"5\",\"t2\":\"\u2190\",\"x\":4,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k6\",\"t\":\"6\",\"t2\":\"\u2193\",\"x\":5,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k7\",\"t\":\"7\",\"t2\":\"\u2191\",\"x\":6,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k8\",\"t\":\"8\",\"t2\":\"\u2192\",\"x\":7,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k9\",\"t\":\"9\",\"t2\":\"GRAPHICS\",\"x\":8,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"k0\",\"t\":\"0\",\"t2\":\"RUBOUT\",\"x\":9,\"y\":0,\"w\":1,\"h\":1},{\"id\":\"q\",\"t\":\"Q\",\"t2\":\"PLOT\",\"x\":0.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"w\",\"t\":\"W\",\"t2\":\"UNPLOT\",\"x\":1.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"e\",\"t\":\"E\",\"t2\":\"REM\",\"x\":2.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"r\",\"t\":\"R\",\"t2\":\"RUN\",\"x\":3.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"t\",\"t\":\"T\",\"t2\":\"RAND\",\"x\":4.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"y\",\"t\":\"Y\",\"t2\":\"RETURN\",\"x\":5.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"u\",\"t\":\"U\",\"t2\":\"IF\",\"x\":6.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"i\",\"t\":\"I\",\"t2\":\"INPUT\",\"x\":7.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"o\",\"t\":\"O\",\"t2\":\"POKE\",\"x\":8.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"p\",\"t\":\"P\",\"t2\":\"PRINT\",\"x\":9.5,\"y\":1,\"w\":1,\"h\":1},{\"id\":\"a\",\"t\":\"A\",\"t2\":\"NEW\",\"x\":0.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"s\",\"t\":\"S\",\"t2\":\"SAVE\",\"x\":1.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"d\",\"t\":\"D\",\"t2\":\"DIM\",\"x\":2.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"f\",\"t\":\"F\",\"t2\":\"FOR\",\"x\":3.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"g\",\"t\":\"G\",\"t2\":\"GOTO\",\"x\":4.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"h\",\"t\":\"H\",\"t2\":\"GOSUB\",\"x\":5.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"j\",\"t\":\"J\",\"t2\":\"LOAD\",\"x\":6.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"k\",\"t\":\"K\",\"t2\":\"LIST\",\"x\":7.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"l\",\"t\":\"L\",\"t2\":\"LET\",\"x\":8.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"nl\",\"t\":\"NEWLINE\",\"t2\":\"FUNCTION\",\"x\":9.75,\"y\":2,\"w\":1,\"h\":1},{\"id\":\"shift\",\"t\":\"SHIFT\",\"x\":0.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"z\",\"t\":\"Z\",\"t2\":\"COPY\",\"x\":1.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"x\",\"t\":\"X\",\"t2\":\"CLEAR\",\"x\":2.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"c\",\"t\":\"C\",\"t2\":\"CONT\",\"x\":3.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"v\",\"t\":\"V\",\"t2\":\"CLS\",\"x\":4.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"b\",\"t\":\"B\",\"t2\":\"SCROLL\",\"x\":5.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"n\",\"t\":\"N\",\"t2\":\"NEXT\",\"x\":6.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"m\",\"t\":\"M\",\"t2\":\"PAUSE\",\"x\":7.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"dot\",\"t\":\".\",\"t2\":\",\",\"x\":8.25,\"y\":3,\"w\":1,\"h\":1},{\"id\":\"space\",\"t\":\"SPACE\",\"t2\":\"BREAK\",\"x\":9.25,\"y\":3,\"w\":1,\"h\":1}],\"matrix\":{\"shift\":[\"A8\",\"KBD0\"],\"z\":[\"A8\",\"KBD1\"],\"x\":[\"A8\",\"KBD2\"],\"c\":[\"A8\",\"KBD3\"],\"v\":[\"A8\",\"KBD4\"],\"a\":[\"A9\",\"KBD0\"],\"s\":[\"A9\",\"KBD1\"],\"d\":[\"A9\",\"KBD2\"],\"f\":[\"A9\",\"KBD3\"],\"g\":[\"A9\",\"KBD4\"],\"q\":[\"A10\",\"KBD0\"],\"w\":[\"A10\",\"KBD1\"],\"e\":[\"A10\",\"KBD2\"],\"r\":[\"A10\",\"KBD3\"],\"t\":[\"A10\",\"KBD4\"],\"k1\":[\"A11\",\"KBD0\"],\"k2\":[\"A11\",\"KBD1\"],\"k3\":[\"A11\",\"KBD2\"],\"k4\":[\"A11\",\"KBD3\"],\"k5\":[\"A11\",\"KBD4\"],\"k0\":[\"A12\",\"KBD0\"],\"k9\":[\"A12\",\"KBD1\"],\"k8\":[\"A12\",\"KBD2\"],\"k7\":[\"A12\",\"KBD3\"],\"k6\":[\"A12\",\"KBD4\"],\"p\":[\"A13\",\"KBD0\"],\"o\":[\"A13\",\"KBD1\"],\"i\":[\"A13\",\"KBD2\"],\"u\":[\"A13\",\"KBD3\"],\"y\":[\"A13\",\"KBD4\"],\"nl\":[\"A14\",\"KBD0\"],\"l\":[\"A14\",\"KBD1\"],\"k\":[\"A14\",\"KBD2\"],\"j\":[\"A14\",\"KBD3\"],\"h\":[\"A14\",\"KBD4\"],\"space\":[\"A15\",\"KBD0\"],\"dot\":[\"A15\",\"KBD1\"],\"m\":[\"A15\",\"KBD2\"],\"n\":[\"A15\",\"KBD3\"],\"b\":[\"A15\",\"KBD4\"]},\"notes_it\":[\"Una semiriga intera di 5 tasti morta (es. 1-5, oppure SHIFT-Z-X-C-V) = quella linea d'indirizzo: pista della coda a 8 vie, diodo relativo (D1-D8) aperto o connettore KB2. Ogni semiriga \u00e8 met\u00e0 di una fila fisica: A11 = 1-5, A12 = 6-0, A10 = Q-T, A13 = Y-P, A9 = A-G, A14 = H-NEWLINE, A8 = SHIFT-V, A15 = B-SPACE.\",\"Una colonna di 8 tasti morta (es. 1, Q, A, 0, P, NEWLINE, SHIFT, SPACE = KBD0) = quella linea KBD: pista della coda a 5 vie, connettore KB1 o pin della ULA.\",\"Il guasto pi\u00f9 comune \u00e8 la coda della membrana crepata nel punto in cui si piega per entrare nel connettore: le piste in carbone\/argento si interrompono e cade una semiriga o una colonna, spesso a intermittenza muovendo la coda. Le code sono fragili: estrarle e inserirle dritte.\",\"Le due semirighe di una stessa fila (es. 1-5 e 6-0) usano linee diverse: se muore solo met\u00e0 fila il problema \u00e8 una sola linea d'indirizzo.\",\"Un diodo in corto (o due tasti di semirighe diverse premuti insieme) mette in corto due linee d'indirizzo tramite la membrana: se compaiono caratteri doppi o tasti fantasma controllare D1-D8.\",\"I connettori KB1 e KB2 sono montati in versi opposti (il manuale Sinclair lo segnala in montaggio): se la tastiera non risponde affatto controllare che connettori e code siano nel verso giusto e ben inseriti.\",\"Sul bit D7 della stessa lettura c'\u00e8 l'ingresso cassetta (EAR), sul D6 il ponticello 50\/60 Hz: non c'entrano con la tastiera.\"],\"notes_en\":[\"A whole half-row of 5 keys dead (e.g. 1-5, or SHIFT-Z-X-C-V) = that address line: track in the 8-way tail, its diode (D1-D8) open, or the KB2 connector. Each half-row is half a physical row: A11 = 1-5, A12 = 6-0, A10 = Q-T, A13 = Y-P, A9 = A-G, A14 = H-NEWLINE, A8 = SHIFT-V, A15 = B-SPACE.\",\"A column of 8 keys dead (e.g. 1, Q, A, 0, P, NEWLINE, SHIFT, SPACE = KBD0) = that KBD line: track in the 5-way tail, KB1 connector or the ULA pin.\",\"The usual fault is a cracked membrane tail where it bends into the connector: the printed tracks break and a half-row or column drops out, often intermittently when the tail is moved. The tails are fragile: pull and insert them straight.\",\"The two halves of one physical row (e.g. 1-5 and 6-0) use different lines: if only half a row is dead, only one address line is involved.\",\"A shorted diode (or two keys on different half-rows pressed together) ties two address lines together through the membrane: if you get doubled characters or ghost keys, check D1-D8.\",\"The KB1 and KB2 connectors are fitted opposite ways round (the Sinclair manual points this out for assembly): if the keyboard does not respond at all, check connectors and tails are the right way round and fully home.\",\"Bit D7 of the same read is the tape input (EAR) and D6 the 50\/60 Hz link: not part of the keyboard.\"],\"board_it\":\"Issue 1 (sigle dal manuale del kit Sinclair)\",\"board_en\":\"Issue 1 (references from the Sinclair kit manual)\"}}\/*END*\/;\r\nvar GROUPS = [\r\n ['Commodore', ['pet', 'vic20', 'c64', 'c128', 'c16', 'plus4']],\r\n ['Amiga', ['a500', 'a600', 'a1200']],\r\n ['Sinclair', ['zx80', 'zx81', 'spectrum48', 'ts2068', 'ql']],\r\n ['Atari', ['atari400', 'atari800', 'atari800xl', 'atarixe']],\r\n ['MSX', ['msx1', 'msx2']],\r\n ['Amstrad', ['cpc464', 'cpc6128']],\r\n ['Philips', ['g7000']],\r\n ['Oric', ['oric1', 'oricatmos']],\r\n ['Texas Instruments', ['ti99', 'grillo']],\r\n ['VTech', ['laser500', 'creativision']]\r\n];\r\nvar SHORT = {pet:'PET', vic20:'VIC-20', c64:'C64', c128:'C128', c16:'C16', plus4:'Plus\/4', a500:'A500', a600:'A600', a1200:'A1200',\r\n  zx80:'ZX80', zx81:'ZX81', spectrum48:'Spectrum 48K', ts2068:'TS2068', ql:'QL',\r\n  atari400:'400', atari800:'800', atari800xl:'800XL', atarixe:'130XE', msx1:'VG-8020', msx2:'NMS 8245',\r\n  cpc464:'CPC 464', cpc6128:'CPC 6128', g7000:'Videopac G7000', oric1:'Oric-1', oricatmos:'Atmos',\r\n  ti99:'TI-99\/4A', grillo:'Grillo Parlante', laser500:'Laser 500', creativision:'CreatiVision'};\r\n\/\/ colori dei tasti: cap = tasto, capt = scritta, capf\/capft = tasti funzione\r\nvar CAP = {\r\n pet:['#2f2f33', '#f2f2f2', '#55555c', '#ffffff'], vic20:['#4d3b2e', '#f1e9dc', '#d9772b', '#1d140c'],\r\n c64:['#4d3b2e', '#f1e9dc', '#c9bda6', '#2a2016'], c128:['#d7d1c3', '#2a2622', '#8f8a80', '#ffffff'],\r\n c16:['#2b2b2e', '#f2f2f2', '#77777d', '#ffffff'], plus4:['#2b2b2e', '#f2f2f2', '#77777d', '#ffffff'],\r\n a500:['#e6e1d3', '#2a2622', '#cfc8b6', '#2a2622'], a600:['#e6e1d3', '#2a2622', '#cfc8b6', '#2a2622'], a1200:['#e6e1d3', '#2a2622', '#cfc8b6', '#2a2622'],\r\n zx80:['#f4f4f0', '#1f2a6b', '#f4f4f0', '#1f2a6b'], zx81:['#1d1d1f', '#f2f2f2', '#1d1d1f', '#f2f2f2'], spectrum48:['#4b4f58', '#ffffff', '#4b4f58', '#ffffff'],\r\n ts2068:['#2b2b2e', '#f2f2f2', '#9a9ca2', '#1d1d1f'], ql:['#1d1d1f', '#f2f2f2', '#3a3a40', '#f2f2f2'],\r\n atari400:['#d8cdb4', '#3a2e20', '#e0a02a', '#1d140c'], atari800:['#5a4632', '#f1e9dc', '#e0a02a', '#1d140c'],\r\n atari800xl:['#2b2b2e', '#f2f2f2', '#a8a8ad', '#1d1d1f'], atarixe:['#5a5c62', '#f2f2f2', '#8c8e94', '#ffffff'],\r\n msx1:['#2b2b2e', '#f2f2f2', '#6c6c72', '#ffffff'], msx2:['#d7d4cc', '#2a2622', '#8f8a80', '#ffffff'],\r\n cpc464:['#262628', '#f2f2f2', '#3d6fb6', '#ffffff'], cpc6128:['#9a9ca2', '#1d1d1f', '#3d6fb6', '#ffffff'],\r\n g7000:['#2b2b2e', '#f2f2f2', '#c9302b', '#ffffff'],\r\n oric1:['#c9c4bc', '#2a2622', '#c9c4bc', '#2a2622'], oricatmos:['#1d1d1f', '#f2f2f2', '#c7302b', '#ffffff'],\r\n ti99:['#2b2b2e', '#f2f2f2', '#7a7a80', '#ffffff'], grillo:['#f2c230', '#1d140c', '#e07a2a', '#1d140c'],\r\n laser500:['#3a3a40', '#f2f2f2', '#c9302b', '#ffffff'], creativision:['#d7d1c3', '#2a2622', '#c9302b', '#ffffff']\r\n};\r\n\/\/ schede presenti nel PCB Explorer: il tasto porta al pin del chip\r\nvar PCB = {c64:'250407', vic20:'vic20', c128:'c128'};\r\nvar PCBURL = (EN ? '\/en' : '') + '\/c64-pcb-explorer\/#pcb=';\r\n\r\nvar T = {\r\n it:{\r\n  title:'Keyboard Explorer',\r\n  intro:'Le tastiere dei computer Commodore, Amiga, Sinclair, Atari, MSX, Amstrad, Oric, Philips, Texas Instruments e VTech con la loro matrice. Clicca un tasto: vedi le due linee che chiude, su quali pin del connettore arrivano e a quale chip vanno sulla scheda madre. Con \u00abCerca il guasto\u00bb selezioni i tasti che non funzionano e la pagina ti dice quale linea hanno in comune.',\r\n  mKey:'Tasto per tasto', mDiag:'Cerca il guasto', clear:'Pulisci',\r\n  hKey:'Clicca un tasto o un pin del connettore.', hDiag:'Clicca tutti i tasti che non funzionano.',\r\n  conn:'Connettore della tastiera', matrix:'Tabella della matrice', about:'Come funziona la scansione e note per la riparazione',\r\n  credits:'Matrici e piedinature ricavate dagli schemi e dai manuali tecnici originali, confrontati con il codice degli emulatori MAME e VICE; per C64, VIC-20 e C128 i percorsi sulla scheda vengono dalle repliche KiCad usate nel PCB Explorer. Le fonti di ogni macchina sono elencate nelle note. Le sigle dei componenti cambiano tra una revisione e l\\'altra della scheda: prima di dissaldare, controlla sempre sullo schema della tua scheda.',\r\n  how:'Come si usa', i1:'Clicca un tasto: in azzurro la linea che la scansione pilota, in fucsia quella che legge. Si accendono anche tutti gli altri tasti sulle stesse linee.',\r\n  i2:'Clicca un pin del connettore (o un\\'intestazione della tabella) per vedere tutti i tasti su quella linea.',\r\n  i3:'In \u00abCerca il guasto\u00bb seleziona i tasti che non rispondono: la pagina cerca la linea che hanno in comune e ti indica gli altri tasti da provare.',\r\n  board:'Riferimenti della scheda', key:'Tasto', line:'Linea', drv:'pilotata dalla scansione', rd:'letta dalla scansione', ext:'linea separata',\r\n  chipPin:'{c} pin {p}', connPin:'connettore pin {p}', also:'Condivisa con', onLine:'Tasti su questa linea ({n})',\r\n  path:'Percorso sulla scheda {b}', openPcb:'Apri nel PCB Explorer', notMatrix:'Fuori dalla matrice',\r\n  keyTip:'Se non funziona solo questo tasto, il guasto \u00e8 quasi sempre nel tasto stesso: pastiglia conduttiva consumata, contatto sporco o pista della membrana interrotta proprio sotto il tasto.',\r\n  dNone:'Nessun tasto selezionato. Premi sul disegno i tasti che non funzionano.',\r\n  dOne:'Un tasto solo: di solito \u00e8 il tasto stesso (pastiglia, contatto, membrana). Se si \u00e8 guastata una linea, smettono di funzionare anche gli altri tasti segnati in giallo: provali e selezionali se non vanno.',\r\n  dAll:'Tutti i tasti selezionati sono sulla linea {l}.', dAll2:'I tasti selezionati sono sulle linee {l}: l\\'incrocio porta a un solo tasto per volta, quindi conviene controllare entrambe.',\r\n  dCheck:'Prova anche questi tasti della stessa linea: se non funzionano neppure loro, la linea \u00e8 interrotta (connettore, membrana o pista) oppure il pin del chip \u00e8 guasto.',\r\n  dAllDead:'Su questa linea non funziona nessun tasto: controlla la continuit\u00e0 dal pin del connettore al pin del chip, poi il chip.',\r\n  dMix:'I tasti selezionati non stanno su un\\'unica linea. Le linee che ne raccolgono di pi\u00f9:',\r\n  dMix2:'Possono essere due linee guaste, una membrana crepata in pi\u00f9 punti o il chip di scansione. Controlla prima le linee in cima all\\'elenco.',\r\n  dCnt:'{n} su {t} selezionati', dRest:'Gli altri tasti di {l}',\r\n  pins:'{n} pin', sources:'Fonti', uncertain:'Dati da verificare', none:'\u2014',\r\n  colH:'linee pilotate', rowH:'linee lette'\r\n },\r\n en:{\r\n  title:'Keyboard Explorer',\r\n  intro:'The keyboards of Commodore, Amiga, Sinclair, Atari, MSX, Amstrad, Oric, Philips, Texas Instruments and VTech computers with their matrix. Click a key to see the two lines it connects, which keyboard connector pins they reach and which chip they go to on the motherboard. With \u201cFind the fault\u201d you select the keys that do not work and the page tells you which line they share.',\r\n  mKey:'Key by key', mDiag:'Find the fault', clear:'Clear',\r\n  hKey:'Click a key or a connector pin.', hDiag:'Click every key that does not work.',\r\n  conn:'Keyboard connector', matrix:'Matrix table', about:'How scanning works and repair notes',\r\n  credits:'Matrices and pinouts taken from the original schematics and service manuals, cross-checked against the MAME and VICE emulator source; for the C64, VIC-20 and C128 the board paths come from the KiCad replicas used in the PCB Explorer. The sources for each machine are listed in its notes. Component references change between board revisions: always check the schematic of your own board before desoldering.',\r\n  how:'How to use it', i1:'Click a key: the line driven by the scan is shown in cyan, the line it reads in magenta. Every other key on the same lines lights up too.',\r\n  i2:'Click a connector pin (or a table header) to see every key on that line.',\r\n  i3:'In \u201cFind the fault\u201d select the keys that do not respond: the page looks for the line they share and tells you which other keys to try.',\r\n  board:'Board references', key:'Key', line:'Line', drv:'driven by the scan', rd:'read by the scan', ext:'separate line',\r\n  chipPin:'{c} pin {p}', connPin:'connector pin {p}', also:'Shared with', onLine:'Keys on this line ({n})',\r\n  path:'Path on the {b} board', openPcb:'Open in the PCB Explorer', notMatrix:'Outside the matrix',\r\n  keyTip:'If only this key fails, the fault is nearly always in the key itself: worn conductive pad, dirty contact or a broken membrane track right under the key.',\r\n  dNone:'No keys selected. Click the keys that do not work on the drawing.',\r\n  dOne:'A single key: usually it is the key itself (pad, contact, membrane). If a whole line has failed, the other keys marked in yellow stop working too: try them and select them if they fail.',\r\n  dAll:'All the selected keys are on line {l}.', dAll2:'The selected keys are on lines {l}: each crossing only gives one key, so check both.',\r\n  dCheck:'Try these other keys on the same line too: if they fail as well, the line is broken (connector, membrane or track) or the chip pin is faulty.',\r\n  dAllDead:'No key on this line works: check continuity from the connector pin to the chip pin, then the chip.',\r\n  dMix:'The selected keys are not on a single line. The lines that cover most of them:',\r\n  dMix2:'It may be two failed lines, a membrane cracked in several places or the scanning chip. Check the lines at the top of the list first.',\r\n  dCnt:'{n} of {t} selected', dRest:'The other keys on {l}',\r\n  pins:'{n} pins', sources:'Sources', uncertain:'Data still to be checked', none:'\u2014',\r\n  colH:'driven lines', rowH:'read lines'\r\n }\r\n};\r\nvar TT = T[LG];\r\nfunction tr(k, o){ var s = TT[k] || k; if (o) for (var x in o) s = s.split('{' + x + '}').join(o[x]); return s; }\r\nfunction loc(o, k){ return o ? (o[k + '_' + LG] || o[LG] || o[k] || o[k + '_it'] || o.it || '') : ''; }\r\nfunction esc(s){ return String(s == null ? '' : s).replace(\/[&<>\"]\/g, function(c){ return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;'}[c]; }); }\r\nvar $ = function(id){ return document.getElementById(id); };\r\nvar root = document.querySelector('.rfkb');\r\n[].forEach.call(root.querySelectorAll('[data-t]'), function(e){ e.textContent = tr(e.getAttribute('data-t')); });\r\n\r\n\/\/ ---------- preparazione dei dati ----------\r\nfunction prep(m){\r\n  if (m.ready) return m;\r\n  m.L = {}; m.lines.forEach(function(l){ m.L[l.id] = l; });\r\n  m.K = {}; m.layout.forEach(function(k){ m.K[k.id] = k; });\r\n  m.special = m.special || {};\r\n  m.conns = m.connectors || (m.connector ? [m.connector] : []);\r\n  m.on = {};\r\n  var add = function(l, k){ (m.on[l] = m.on[l] || []).indexOf(k) < 0 && m.on[l].push(k); };\r\n  m.layout.forEach(function(k){ keyLines(m, k.id).forEach(function(l){ if (m.L[l]) add(l, k.id); }); });\r\n  \/\/ lati della matrice: il primo elemento di ogni coppia e' la linea pilotata, il secondo quella letta\r\n  var a = {}, b = {};\r\n  Object.keys(m.matrix).forEach(function(k){ a[m.matrix[k][0]] = 1; m.matrix[k].slice(1).forEach(function(l){ b[l] = 1; }); });\r\n  m.cols = m.lines.filter(function(l){ return a[l.id]; }).map(function(l){ return l.id; });\r\n  m.rows = m.lines.filter(function(l){ return b[l.id] && !a[l.id]; }).map(function(l){ return l.id; });\r\n  m.W = 0; m.H = 0;\r\n  m.layout.forEach(function(k){ m.W = Math.max(m.W, k.x + (k.w || 1)); m.H = Math.max(m.H, k.y + (k.h || 1)); });\r\n  m.ready = true;\r\n  return m;\r\n}\r\nfunction keyLines(m, k){\r\n  return m.matrix[k] || (m.special[k] && m.special[k].lines) || [];\r\n}\r\nfunction side(m, l){ return m.cols.indexOf(l) >= 0 ? 'a' : m.rows.indexOf(l) >= 0 ? 'b' : 'c'; }\r\nfunction keyName(m, k){\r\n  var o = m.K[k]; if (!o) return k;\r\n  return String(o.t).replace(\/\\n\/g, ' ') + (o.t2 && o.t2.length < 4 && o.t.length < 3 ? ' ' + o.t2 : '');\r\n}\r\n\r\n\/\/ ---------- stato ----------\r\nvar cur = null, mode = 'key', selKey = null, selLine = null, diag = [];\r\n\r\n\/\/ ---------- selettore macchina ----------\r\nvar bar = $('rfkMachines');\r\nGROUPS.forEach(function(g){\r\n  var ids = g[1].filter(function(id){ return DATA[id]; });\r\n  if (!ids.length) return;\r\n  var d = document.createElement('div'); d.className = 'grp';\r\n  d.innerHTML = '<span>' + g[0] + '<\/span><div class=\"seg\" role=\"group\">' + ids.map(function(id){\r\n    return '<button data-id=\"' + id + '\" aria-pressed=\"false\">' + SHORT[id] + '<\/button>'; }).join('') + '<\/div>';\r\n  bar.appendChild(d);\r\n});\r\nbar.addEventListener('click', function(e){ var b = e.target.closest('button[data-id]'); if (b) pick(b.getAttribute('data-id')); });\r\n$('rfkMode').addEventListener('click', function(e){\r\n  var b = e.target.closest('button[data-m]'); if (!b) return;\r\n  mode = b.getAttribute('data-m');\r\n  [].forEach.call(this.children, function(x){ x.setAttribute('aria-pressed', x === b); });\r\n  selKey = selLine = null; diag = [];\r\n  update();\r\n});\r\n$('rfkClear').addEventListener('click', function(){ selKey = selLine = null; diag = []; update(); });\r\ndocument.addEventListener('keydown', function(e){ if (e.key === 'Escape' && (selKey || selLine || diag.length)) { selKey = selLine = null; diag = []; update(); } });\r\n\r\nfunction pick(id, key){\r\n  cur = prep(DATA[id]);\r\n  [].forEach.call(bar.querySelectorAll('button[data-id]'), function(b){ b.setAttribute('aria-pressed', b.getAttribute('data-id') === id); });\r\n  selKey = key && cur.K[key] ? key : null; selLine = null; diag = [];\r\n  drawKb(); drawConn(); drawMx(); drawAbout(); update();\r\n}\r\n\r\n\/\/ ---------- disegno della tastiera ----------\r\nvar U = 60, GAP = 5;\r\nfunction drawKb(){\r\n  var m = cur, c = CAP[m.id] || CAP.c64;\r\n  var vw = m.W * U, vh = m.H * U;\r\n  var s = '<div class=\"mname\">' + esc(loc(m, 'name')) + (loc(m, 'board') ? ' \u00b7 ' + esc(loc(m, 'board')) : '') + '<\/div>' +\r\n    '<svg viewBox=\"-4 -4 ' + (vw + 8) + ' ' + (vh + 8) + '\" style=\"--cap:' + c[0] + ';--capt:' + c[1] + ';--capf:' + c[2] + ';--capft:' + c[3] + ';min-width:' + Math.round(Math.max(700, m.W * 34)) + 'px;max-width:' + Math.round(m.W * 58) + 'px\" role=\"group\" aria-label=\"' + esc(loc(m, 'name')) + '\">';\r\n  m.layout.forEach(function(k){\r\n    var w = (k.w || 1) * U - GAP, h = (k.h || 1) * U - GAP, x = k.x * U, y = k.y * U;\r\n    var cls = 'k' + (\/^f\\d+$\/.test(k.id) || k.fk ? ' fk' : '') + (m.matrix[k.id] && !m.special[k.id] ? '' : ' sp');\r\n    var ln = keyLines(m, k.id);\r\n    s += '<g class=\"' + cls + '\" data-k=\"' + esc(k.id) + '\" tabindex=\"0\" role=\"button\" aria-label=\"' + esc(keyName(m, k.id)) + '\">' +\r\n      '<title>' + esc(keyName(m, k.id)) + (ln.length ? ' \u2014 ' + esc(ln.join(' \u00d7 ')) : '') + '<\/title>' +\r\n      '<rect x=\"' + x + '\" y=\"' + y + '\" width=\"' + w + '\" height=\"' + h + '\" rx=\"7\"\/>' + label(k, x, y, w, h) + '<\/g>';\r\n  });\r\n  $('rfkKbd').innerHTML = s + '<\/svg>';\r\n}\r\nfunction label(k, x, y, w, h){\r\n  var t = String(k.t == null ? '' : k.t), parts = t.split('\\n');\r\n  if (parts.length === 1 && t.length > 5 && t.indexOf(' ') > 0 && t.length * 9 > w) parts = t.split(' ');\r\n  var longest = Math.max.apply(null, parts.map(function(p){ return p.length; }));\r\n  var fs = longest <= 1 ? 22 : longest <= 2 ? 18 : Math.max(9, Math.min(15, (w - 8) \/ (longest * 0.62)));\r\n  var low = h < 40;  \/\/ tasti bassi (la fila dei tasti funzione del Plus\/4): la seconda scritta va a sinistra\r\n  fs = Math.min(fs, (h - (k.t2 && !low ? 22 : 10)) \/ parts.length \/ 1.1);\r\n  var s = '', cy = y + h \/ 2 + (k.t2 && !low ? 7 : 0) - (parts.length - 1) * fs * 0.55 + fs * 0.35;\r\n  parts.forEach(function(p, i){ s += '<text x=\"' + (x + w \/ 2) + '\" y=\"' + (cy + i * fs * 1.1).toFixed(1) + '\" font-size=\"' + fs.toFixed(1) + '\">' + esc(p) + '<\/text>'; });\r\n  if (k.t2) {\r\n    var f2 = String(k.t2).length > 3 ? Math.max(8, Math.min(11, (w - 10) \/ (String(k.t2).length * 0.6))) : 12;\r\n    s += '<text class=\"t2\" x=\"' + (x + 6) + '\" y=\"' + (low ? y + h \/ 2 + f2 * 0.35 : y + f2 + 3).toFixed(1) + '\" font-size=\"' + f2.toFixed(1) + '\">' + esc(k.t2) + '<\/text>';\r\n  }\r\n  return s;\r\n}\r\n$('rfkKbd').addEventListener('click', function(e){ var g = e.target.closest('.k'); if (g) keyClick(g.getAttribute('data-k')); });\r\n$('rfkKbd').addEventListener('keydown', function(e){\r\n  if (e.key !== 'Enter' && e.key !== ' ') return;\r\n  var g = e.target.closest('.k'); if (g) { e.preventDefault(); keyClick(g.getAttribute('data-k')); }\r\n});\r\nfunction keyClick(k){\r\n  if (mode === 'diag') {\r\n    var i = diag.indexOf(k); if (i >= 0) diag.splice(i, 1); else diag.push(k);\r\n  } else { selKey = selKey === k ? null : k; selLine = null; }\r\n  update();\r\n}\r\n\r\n\/\/ ---------- connettore ----------\r\nfunction drawConn(){\r\n  var m = cur, s = '';\r\n  m.conns.forEach(function(c){\r\n    s += '<div class=\"conn\"><div class=\"cn\">' + esc((c.ref ? c.ref + ' \u00b7 ' : '') + loc(c, '')) + ' <span class=\"hint\">(' + tr('pins', {n:c.pins.length}) + ')<\/span><\/div><div class=\"pins\">';\r\n    c.pins.forEach(function(p){\r\n      var l = m.L[p.sig], g = l ? side(m, p.sig) : '';\r\n      var cls = 'pin ' + (g === 'a' ? 'col' : g === 'b' ? 'row' : l ? 'ext' : 'pw');\r\n      var lab = esc(p.sig) + (l && loc(l, 'name') !== p.sig ? '<br>' + esc(loc(l, 'name')) : '');\r\n      s += l ? '<button class=\"' + cls + '\" data-l=\"' + esc(p.sig) + '\" title=\"' + esc(loc(p, 'note')) + '\"><b>' + esc(p.n) + '<\/b>' + lab + '<\/button>'\r\n             : '<span class=\"' + cls + '\" title=\"' + esc(loc(p, 'note')) + '\"><b>' + esc(p.n) + '<\/b>' + lab + '<\/span>';\r\n    });\r\n    s += '<\/div><\/div>';\r\n  });\r\n  $('rfkConn').innerHTML = s || '<p class=\"hint\">' + tr('none') + '<\/p>';\r\n}\r\n$('rfkConn').addEventListener('click', function(e){ var b = e.target.closest('[data-l]'); if (b) lineClick(b.getAttribute('data-l')); });\r\nfunction lineClick(l){ selLine = selLine === l ? null : l; selKey = null; if (mode === 'diag') { mode = 'key'; syncMode(); diag = []; } update(); }\r\nfunction syncMode(){ [].forEach.call($('rfkMode').children, function(x){ x.setAttribute('aria-pressed', x.getAttribute('data-m') === mode); }); }\r\n\r\n\/\/ ---------- tabella della matrice ----------\r\nfunction drawMx(){\r\n  var m = cur, at = {};\r\n  \/\/ i tasti a doppio contatto della CreatiVision chiudono una linea pilotata su due linee lette: vanno in entrambe le caselle\r\n  Object.keys(m.matrix).forEach(function(k){ var p = m.matrix[k]; p.slice(1).forEach(function(r){ var key = p[0] + '|' + r; (at[key] = at[key] || []).push(k); }); });\r\n  var s = '<table><tr><th><\/th>' + m.cols.map(function(c){ return '<th class=\"c\" data-l=\"' + esc(c) + '\">' + esc(c) + (loc(m.L[c], 'name') !== c ? '<small>' + esc(loc(m.L[c], 'name')) + '<\/small>' : '') + '<\/th>'; }).join('') + '<\/tr>';\r\n  m.rows.forEach(function(r){\r\n    s += '<tr><th class=\"r\" data-l=\"' + esc(r) + '\">' + esc(r) + (loc(m.L[r], 'name') !== r ? '<small>' + esc(loc(m.L[r], 'name')) + '<\/small>' : '') + '<\/th>';\r\n    m.cols.forEach(function(c){\r\n      var ks = at[c + '|' + r] || [];\r\n      s += '<td data-c=\"' + esc(c) + '\" data-r=\"' + esc(r) + '\"' + (ks.length ? ' data-k=\"' + esc(ks[0]) + '\" data-ks=\" ' + esc(ks.join(' ')) + ' \"' : '') + '>' + ks.map(function(k){ return esc(keyName(m, k)); }).join(' \/ ') + '<\/td>';\r\n    });\r\n    s += '<\/tr>';\r\n  });\r\n  $('rfkMx').innerHTML = s + '<\/table>';\r\n}\r\n$('rfkMx').addEventListener('click', function(e){\r\n  var c = e.target.closest('[data-l]'); if (c) return lineClick(c.getAttribute('data-l'));\r\n  var d = e.target.closest('td[data-k]'); if (d) keyClick(d.getAttribute('data-k'));\r\n});\r\n\r\n\/\/ ---------- note ----------\r\nfunction drawAbout(){\r\n  var m = cur, s = '<p>' + esc(loc(m, 'scan')) + '<\/p>';\r\n  var notes = m['notes_' + LG] || m.notes_it || [];\r\n  if (notes.length) s += '<ul>' + notes.map(function(n){ return '<li>' + esc(n) + '<\/li>'; }).join('') + '<\/ul>';\r\n  if (m.sources && m.sources.length) s += '<div class=\"lbl mt\">' + tr('sources') + '<\/div><ul>' + m.sources.map(function(x){\r\n    return '<li>' + (x.u ? '<a href=\"' + esc(x.u) + '\" target=\"_blank\" rel=\"noopener\">' + esc(x.t) + '<\/a>' : esc(x.t)) + '<\/li>'; }).join('') + '<\/ul>';\r\n  $('rfkAbout').innerHTML = s;\r\n}\r\n\r\n\/\/ ---------- descrizione di una linea ----------\r\nfunction lineBox(m, l, cls, opt){\r\n  var o = m.L[l]; if (!o) return '<div class=\"ln ' + cls + '\"><div class=\"h\">' + esc(l) + '<\/div><\/div>';\r\n  var g = side(m, l), bits = [];\r\n  if (o.chip) bits.push(esc(tr('chipPin', {c:o.chip + (o.chip_part ? ' (' + o.chip_part + ')' : ''), p:o.chip_pin || '?'})));\r\n  if (o.conn_pin) bits.push(esc(tr('connPin', {p:(o.conn ? o.conn + ' ' : '') + o.conn_pin})));\r\n  var s = '<div class=\"ln ' + cls + '\"><div class=\"h\">' + esc(l) + (loc(o, 'name') && loc(o, 'name') !== l ? ' \u00b7 ' + esc(loc(o, 'name')) : '') +\r\n    ' <span class=\"hint\">\u2014 ' + tr(g === 'a' ? 'drv' : g === 'b' ? 'rd' : 'ext') + '<\/span><\/div>';\r\n  if (bits.length) s += '<div class=\"d\">' + bits.join(' \u00b7 ') + '<\/div>';\r\n  if (loc(o, 'also')) s += '<div class=\"d\">' + tr('also') + ': ' + esc(loc(o, 'also')) + '<\/div>';\r\n  var path = o['path_' + LG] || o.path;\r\n  if (path && path.length) {\r\n    s += '<div class=\"d\">' + tr('path', {b:o.path_board || ''}) + ': ' + path.map(function(p){\r\n      var ref = p.split(' ')[0];\r\n      return PCB[m.id] ? '<a href=\"' + PCBURL + PCB[m.id] + ':' + esc(ref) + '\" target=\"_blank\" rel=\"noopener\">' + esc(p) + '<\/a>' : esc(p);\r\n    }).join(', ') + '<\/div>';\r\n  }\r\n  if (opt && opt.keys) {\r\n    var ks = m.on[l] || [];\r\n    s += '<div class=\"ks\"><span class=\"hint\">' + tr('onLine', {n:ks.length}) + ':<\/span><br>' + ks.map(function(k){\r\n      var c = diag.indexOf(k) >= 0 ? ' x' : opt.mark && k !== selKey ? ' q' : '';\r\n      return '<button class=\"chip' + c + '\" data-k=\"' + esc(k) + '\">' + esc(keyName(m, k)) + '<\/button>'; }).join('') + '<\/div>';\r\n  }\r\n  return s + '<\/div>';\r\n}\r\n\r\n\/\/ ---------- aggiornamento ----------\r\nfunction update(){\r\n  var m = cur; if (!m) return;\r\n  var A = {}, B = {}, C = {}, chk = {}, ha = null, hb = null, hb2 = null, hc = null, s = '';\r\n  $('rfkHint').textContent = tr(mode === 'diag' ? 'hDiag' : 'hKey');\r\n  if (mode === 'key' && selKey) {\r\n    var k = m.K[selKey], ln = keyLines(m, selKey), sp = m.special[selKey];\r\n    ha = ln[0]; hb = ln[1]; hb2 = ln[2] || null;\r\n    s += '<h3>' + esc(keyName(m, selKey)) + '<\/h3><div class=\"sub\">' + tr('key') + (ln.length ? ' \u00b7 ' + esc(ln.join(' \u00d7 ')) : '') + '<\/div>';\r\n    if (sp) s += '<div class=\"note\"><b>' + tr('notMatrix') + ':<\/b> ' + esc(loc(sp, '')) + '<\/div>';\r\n    ln.forEach(function(l, i){ s += lineBox(m, l, i ? 'b' : 'a', {keys:true}); });\r\n    if (m.matrix[selKey] && !sp) s += '<p class=\"hint\" style=\"margin-top:10px\">' + tr('keyTip') + '<\/p>';\r\n  } else if (mode === 'key' && selLine) {\r\n    hc = selLine;\r\n    s += '<h3>' + esc(selLine) + '<\/h3><div class=\"sub\">' + tr('line') + '<\/div>' + lineBox(m, selLine, 'c', {keys:true});\r\n  } else if (mode === 'diag') {\r\n    s += diagInfo(m, function(l){ hc = l; }, chk);\r\n  } else {\r\n    s += '<h3>' + esc(loc(m, 'name')) + '<\/h3><div class=\"sub\">' + esc(loc(m, 'board')) + '<\/div><p>' + esc(loc(m, 'scan')) + '<\/p>' +\r\n      '<div class=\"lbl mt\">' + tr('how') + '<\/div><ul><li>' + tr('i1') + '<\/li><li>' + tr('i2') + '<\/li><li>' + tr('i3') + '<\/li><\/ul>';\r\n  }\r\n  [ha, hb, hc, hb2].forEach(function(l, i){ (m.on[l] || []).forEach(function(k){ (i === 0 ? A : i === 2 ? C : B)[k] = 1; }); });\r\n  [].forEach.call($('rfkKbd').querySelectorAll('.k'), function(g){\r\n    var k = g.getAttribute('data-k'), on = mode === 'key' && k === selKey, dg = mode === 'diag' && diag.indexOf(k) >= 0;\r\n    g.classList.toggle('on', on);\r\n    g.classList.toggle('dg', dg);\r\n    g.classList.toggle('ca', !on && !dg && (!!A[k] || !!C[k]));\r\n    g.classList.toggle('cb', !on && !dg && !!B[k]);\r\n    g.classList.toggle('chk', !!chk[k] && !dg);\r\n  });\r\n  [].forEach.call($('rfkConn').querySelectorAll('[data-l]'), function(p){\r\n    var l = p.getAttribute('data-l');\r\n    p.classList.toggle('ha', l === ha); p.classList.toggle('hb', !!l && (l === hb || l === hb2)); p.classList.toggle('hc', l === hc);\r\n  });\r\n  [].forEach.call($('rfkMx').querySelectorAll('td'), function(td){\r\n    var c = td.getAttribute('data-c'), r = td.getAttribute('data-r'), k = td.getAttribute('data-k');\r\n    td.classList.toggle('ha', c === ha || c === hc || r === hc);\r\n    td.classList.toggle('hb', !!r && (r === hb || r === hb2));\r\n    var ks = td.getAttribute('data-ks') || '';\r\n    td.classList.toggle('on', !!k && mode === 'key' && ks.indexOf(' ' + selKey + ' ') >= 0);\r\n    td.classList.toggle('dg', !!k && mode === 'diag' && diag.indexOf(k) >= 0);\r\n  });\r\n  $('rfkInfo').innerHTML = s;\r\n  var h = '#kb=' + m.id + (selKey ? ':' + selKey : '');\r\n  if (location.hash !== h && history.replaceState) history.replaceState(null, '', h);\r\n}\r\n$('rfkInfo').addEventListener('click', function(e){\r\n  var b = e.target.closest('button[data-k]'); if (!b) return;\r\n  var k = b.getAttribute('data-k');\r\n  if (mode === 'diag') keyClick(k); else { selKey = k; selLine = null; update(); }\r\n});\r\n\r\n\/\/ ---------- ricerca del guasto ----------\r\nfunction diagInfo(m, hl, chk){\r\n  var n = diag.length, s = '<h3>' + tr('mDiag') + '<\/h3>';\r\n  if (!n) return s + '<p class=\"hint\">' + tr('dNone') + '<\/p>';\r\n  var cnt = {};\r\n  diag.forEach(function(k){ keyLines(m, k).forEach(function(l){ if (m.L[l]) cnt[l] = (cnt[l] || 0) + 1; }); });\r\n  var ls = Object.keys(cnt).sort(function(a, b){ return cnt[b] - cnt[a] || (m.on[a] || []).length - (m.on[b] || []).length; });\r\n  var full = ls.filter(function(l){ return cnt[l] === n; });\r\n  var mark = function(l){ (m.on[l] || []).forEach(function(k){ if (diag.indexOf(k) < 0) chk[k] = 1; }); };\r\n  if (n === 1) {\r\n    var ln = keyLines(m, diag[0]);\r\n    s += '<p>' + tr('dOne') + '<\/p>';\r\n    ln.forEach(function(l, i){ mark(l); s += lineBox(m, l, i ? 'b' : 'a', {keys:true, mark:true}); });\r\n    return s;\r\n  }\r\n  if (full.length) {\r\n    var one = full.length === 1;\r\n    s += '<div class=\"ok\">' + tr(one ? 'dAll' : 'dAll2', {l:full.join(' + ')}) + '<\/div>';\r\n    full.forEach(function(l){\r\n      hl(l); mark(l);\r\n      var rest = (m.on[l] || []).filter(function(k){ return diag.indexOf(k) < 0; });\r\n      s += lineBox(m, l, 'c', {keys:true, mark:true});\r\n      s += '<p class=\"hint\">' + (rest.length ? tr('dCheck') : tr('dAllDead')) + '<\/p>';\r\n    });\r\n    return s;\r\n  }\r\n  s += '<div class=\"warn\">' + tr('dMix') + '<\/div>';\r\n  ls.slice(0, 4).forEach(function(l, i){\r\n    if (!i) { hl(l); mark(l); }\r\n    s += '<div class=\"hint\" style=\"margin-top:8px\">' + esc(l) + ': ' + tr('dCnt', {n:cnt[l], t:n}) + '<\/div>' + lineBox(m, l, i ? '' : 'c', {keys:true, mark:!i});\r\n  });\r\n  return s + '<p class=\"hint\">' + tr('dMix2') + '<\/p>';\r\n}\r\n\r\n\/\/ ---------- avvio ----------\r\nvar first = null;\r\nGROUPS.forEach(function(g){ g[1].forEach(function(id){ if (!first && DATA[id]) first = id; }); });\r\nvar hm = \/#kb=([a-z0-9]+)(?::([a-z0-9_]+))?\/.exec(location.hash);\r\nif (hm && DATA[hm[1]]) pick(hm[1], hm[2]); else if (DATA.c64) pick('c64'); else if (first) pick(first);\r\n})();\r\n<\/script>\r\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>Keyboard Explorer Le tastiere dei computer Commodore, Amiga, Sinclair, Atari, MSX, Amstrad, Oric, Philips, Texas Instruments e VTech con la loro matrice. Clicca un tasto: vedi<span class=\"excerpt-hellip\"> [\u2026]<\/span><\/p>\n","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-11519","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/retrofixer.it\/en\/wp-json\/wp\/v2\/pages\/11519","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=11519"}],"version-history":[{"count":12,"href":"https:\/\/retrofixer.it\/en\/wp-json\/wp\/v2\/pages\/11519\/revisions"}],"predecessor-version":[{"id":11541,"href":"https:\/\/retrofixer.it\/en\/wp-json\/wp\/v2\/pages\/11519\/revisions\/11541"}],"wp:attachment":[{"href":"https:\/\/retrofixer.it\/en\/wp-json\/wp\/v2\/media?parent=11519"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/retrofixer.it\/en\/wp-json\/wp\/v2\/categories?post=11519"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/retrofixer.it\/en\/wp-json\/wp\/v2\/tags?post=11519"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}