Herramientas de usuario

Herramientas del sitio


software:sistema

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
software:sistema [2026/05/03 07:18] jesussoftware:sistema [2026/05/05 18:04] (actual) jesus
Línea 2: Línea 2:
 <html> <html>
 <style> <style>
-  /* --- MOTOR VISUAL CRT (ORIGINAL BLINDADO) --- */ +  .system-terminal { background-color: #000b00; font-family: 'Courier New', monospace; padding: 30px; color: #00ff00; border: 2px solid #004400; display: flex; flex-direction: column; align-items: center; position: relative; } 
-  .system-terminal { background-color: #000b00 !important; font-family: 'Courier New', monospace !important; padding: 30px; color: #00ff00 !important; border: 2px solid #004400; } +  .main-system-title { font-size: 2.2em; color: #00ff00; text-align: center; text-transform: uppercase; font-weight: 900; margin-bottom: 20px; text-shadow: 0 0 15px rgba(0, 255, 0, 0.7); } 
-  .main-system-title { font-size: 2.8em; color: #00ff00; text-align: center; text-transform: uppercase; font-weight: 900; margin-bottom: 20px; text-shadow: 0 0 20px rgba(0, 255, 0, 0.7); letter-spacing: 4px; } +  .selector-panel { background: rgba(0, 40, 0, 0.3); border: 2px solid #00ff00; padding: 15px; text-align: center; border-radius: 4px; display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; margin-bottom: 20px; } 
-  .selector-panel { background: rgba(0, 40, 0, 0.3); border: 1px solid #004400; padding: 15px; margin-bottom: 30px; text-align: center; border-radius: 4px; } +  .btn-model { background: transparent; color: #00ff00; border: 1px solid #00ff00; padding: 6px 12px; cursor: pointer; font-family: 'Courier New', monospace; font-weight: bold; transition: 0.3s; font-size: 12px; } 
-  .btn-model { background: transparent; color: #00ff00; border: 1px solid #00ff00; padding: 6px 12px; cursor: pointer; font-family: 'Courier New', monospace; font-weight: bold; margin: 3px; transition: 0.3s; font-size: 11px; } +  .btn-model:hover, .btn-model.active { background: #00ff00 !important; color: #000 !important; box-shadow: 0 0 10px #00ff00; } 
-  .btn-model:hover, .btn-model.active { background: #00ff00; color: #000; box-shadow: 0 0 10px #00ff00; } +  .lang-selector { margin-bottom: 20px; display: flex; gap: 15px; justify-content: center; min-height: 50px; } 
-  .flag-btn { width: 45px; height: auto; cursor: pointer; filtergrayscale(1) opacity(0.5); transition: 0.3s; margin: 0 8pxborder1px solid transparentvertical-alignmiddle; } +  .flag-btn { width: 60px; height: auto; cursor: pointer; border1px solid #004400; transition: 0.3s; filtergrayscale(0.7)padding2pxbackground#111; } 
-  .flag-btn:hover, .flag-btn.active { filter: grayscale(0) opacity(1); border-color: #00ff00; transform: scale(1.1); +  .flag-btn:hover, .flag-btn.active { filter: grayscale(0); border-color: #00ff00; transform: scale(1.1); box-shadow0 0 10px #00ff00; }
-  #display-screen { border2px solid #00ff00; background: rgba(0,30,0,0.4); margin: 20px auto; min-height: 120px; width: 100%; display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; padding: 15px; box-sizing: border-box; }+
      
-  .blink-yellow color: #ffff00 !importantanimationblinker-msg 1s linear infinitefont-weightbold; } +  #display-screen border1px solid #004400backgroundrgba(0,20,0,0.2); width: 100%; min-height: 280pxpadding: 20px; box-sizingborder-box; display: flex; flex-direction: column; align-items: center; } 
-  .status-green { color: #00ff00 !important; font-weight: bold; animation: none !important; } +  .disk-grid display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 15px; justify-items: center; width: 100%; margin-bottom: 25px; } 
-  @keyframes blinker-msg 50% { opacity: 0; }+  .disk-item { text-align: center; font-size: 10px; color: #00ff00; font-weight: bold; } 
 +  .disk-item img border: 1px solid #00ff00; background: #000; width: 130px; height: auto; display: block; margin: 0 auto 5px auto; cursor: zoom-in; }
  
-  .download-link { margin-top: 10px; display: inline-block; padding8px 20pxborder1px solid #ffff00; color: #ffff00 !importanttext-decorationnone !important; font-weight: bold; font-size12px; text-transformuppercase; transition: 0.3s; } +  .download-zone { margin-top: 10px; text-align: center; width: 100%; } 
-  .download-link:hover { background: #ffff00; color: #000 !important; }+  .btn-download { display: inline-block; backgroundtransparentcolor: #ffff00; border2px solid #ffff00; padding: 10px 20px; font-family'Courier New', monospace; font-weight: bold; cursorpointer; text-decorationnone; transition: 0.3s; font-size: 13px; } 
 +  .btn-download:hover { background: #ffff00; color: #000; box-shadow: 0 0 15px rgba(255,255,0,0.5); }
  
-  /* UNIDAD DE DISCO VIRTUAL (BLINDADA) */ +  #disk-modal { display: none; position: fixedz-index9999; left: 0; top: 0; width: 100%; height: 100%; background-colorrgba(0,11,0,0.9); align-items: center; justify-content: center; flex-direction: column; } 
-  .drive-bay { background: linear-gradient(180deg, #222 0%, #111 100%); border: 4px solid #333; width: 380px; height: 110px; margin: 0 auto 30px auto; position: relative; border-radius: 6px; } +  #modal-img { border: 3px solid #00ff00max-width80%max-height80%; } 
-  .disk-slot { background: #000; width: 320px; height: 10px; margin: 35px auto 0 auto; box-shadow: inset 0 2px 5px rgba(0,0,0,0.8); border-bottom: 1px solid rgba(0,255,0,0.3);+  .close-modal { margin-top: 20px; background: transparent; color: #00ff00; border: 2px solid #00ff00; padding: 10px 20px; cursor: pointer; font-family'Courier New', monospace; }
-  .eject-button { width: 45px; height: 20px; background: #0a0a0a; position: absolute; bottom: 12px; left: 30px; border: 2px solid #555; border-radius: 2px; cursor: pointer; } +
-  .drive-led { width: 16px; height: 8px; background: #300; position: absolute; bottom: 15px; right: 30px; border-radius: 2px; } +
-  .led-active { background: #ff0000; box-shadow: 0 0 15px #ff0000; } +
-  .led-reading { animation: led-blink-fast 0.08s infinite; } +
-  @keyframes led-blink-fast { 50% { opacity: 0.3; } } +
- +
-  /* ESTRUCTURA FÍSICA DISCO (BLINDADA) */ +
-  .disk-shelf { display: none; flex-wrap: wrap; gap: 40px; justify-content: center; margin-top: 50px; perspective: 1200px; } +
-  .disk-wrapper { display: flex; flex-direction: column; align-items: center; gap: 15px; } +
-  .disk-container { width: 175px; height: 225px; position: relativetransition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1); transform-stylepreserve-3d+
-  .is-flipped { transform: rotateY(180deg);+
-  .disk-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; background: #111; border-radius: 4px; border: 1px solid #000; overflow: hidden; } +
-  .disk-back { transform: rotateY(180deg);+
-  .disk-container .disk-back { pointer-events: none; } +
-  .disk-container.is-flipped .disk-back { pointer-events: auto; } +
-  .disk-container.is-flipped .disk-front { pointer-events: none; } +
-  .hole-left-rect { positionabsolute; top: 0px; left: 12px; width: 6px; height: 12px; background: #fff; border-radius: 0 0 1px 1px; } +
-  .hole-right-circ { position: absolute; top: 6px; right: 14px; width: 6px; height: 6px; background: #fff; border-radius: 50%; } +
-  .disk-hub-wrapper { position: absolute; top: 85px; left: 50%; margin-left: -20px; width: 40px; height: 40px; z-index: 5; } +
-  .hub-3inch { background: #fdfdfd; border-radius: 50%; border: 1px solid #ccc; width: 100%; height: 100%; position: relative; } +
-  .hub-3inch::after { content: ''; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 8px; height: 8px; background: #000; border-radius50%; } +
-  .hub-3inch-notch { position: absolute; top: 5px; left: 50%; margin-left: -1.5px; width: 3px; height: 10px; background: #000; border-radius: 1px; } +
-  .spinning { animation: rotate-hub 0.5s linear infinite !important; } +
-  @keyframes rotate-hub { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } +
- +
-  /* ETIQUETAS (BLINDADO MÁSTER) */ +
-  .disk-label-amsoft { position: absolute; bottom: 8px; left: 8px; right: 8px; height: 82px; background: #fff; border-radius: 2px; overflow: hidden; display: flex; flex-direction: column; font-family: Arial, sans-serif; z-index: 10; cursor: pointer;} +
-  .header-de { background: #bcbcbc; border-bottom: 1.2px solid #000; } +
-  .header-es { background: #e18dae; border-bottom: 1.2px solid #c07090; } +
-  .header-uk { background: #2a7089; border-bottom: 1.2px solid #1a5a70; } +
-  .header-fr { background: #7ae500; border-bottom: 1.2px solid #5ba800; } +
-  .label-header { height: 22px; padding: 6px; display: flex; align-items: center; justify-content: space-between;+
-  .amsoft-logo-text { color: #fff; font-weight: bold; font-style: italic; font-size: 12.5px; font-family: "Times New Roman"Timesserif; text-shadow: -1px -1px 0 #000, 1px -1px #000, -1px 1px 0 #000, 1px 1px 0 #000; } +
-  .amstrad-subtext-black { color: #000; font-size: 4.8px; font-weight: 900; text-transform: uppercase; line-height: 0.95; } +
-  .side-indicator-container { display: flex; align-items: center; gap: 4px; color: #000; font-size: 11px; font-weight: 900; } +
-  .arrow-cajetin { background: #fff; border: 1.2px solid #000; display: flex; align-items: center; justify-content: center; height: 11px; width: 10px; font-size: 12px; } +
-  .label-body-replica { flex: 1; padding: 3px 6px 0 6px; color: #000; text-align: left; position: relative; display: flex; flex-direction: column; } +
-  .txt-desc-top font-size: 5px; font-weight: 900; text-transform: uppercase; margin-bottom: 1px; } +
-  .serial-box-only { position: absolute; border: 1px solid #000background: #fff; z-index12display: flex; align-itemscenter; justify-content: center; text-align: center; box-sizing: border-box; white-space: nowrap; overflow: hidden; } +
-  .txt-small-legales font-size: 3.5px; font-weight: 900; text-transform: uppercase; line-height: 1.1; margin-top: automargin-bottom: 2px; } +
-  .label-footer-grey { background: #bcbcbc; height: 15px; border-top: 1px solid #000; padding: 0 6px; display: flex; align-items: center; gap: 5px; } +
-  .cs-logo-label { border: 1px solid #000; color: #fff; font-size: 6px; font-weight: 900; padding: 0 2px; background: #000; } +
-  .copy-text-replica { font-size: 3.4px; color: #000; font-weight: bold; } +
-   +
-  /* CORRECCIÓN BOTÓN GIRAR DISCO */ +
-  .flip-btn { background: transparent; color: #00ff00; border: 1px solid #00ff00; font-size: 10px; cursor: pointer; padding: 5px 12px; border-radius: 3px; text-transform: uppercase; font-weightbold; margin-top: 10px; transition: 0.2s; outline: none; } +
-  .flip-btn:hover { background: #00ff00; color: #000; box-shadow: 0 0 8px #00ff00; } +
-  .flip-btn:active { background: #004400; color: #00ff00; } +
- +
-  /* SCHNEIDER (BLINDADO) */ +
-  .schneider-container { display: flex; align-items: center; gap: 3px; transform: scale(0.9); transform-origin: left; } +
-  .schneider-symbol { position: relative; width: 13px; height: 10px; } +
-  .u-shape { position: absolute; width: 7.2px; height: 4.2px; border: 2.3px solid; border-radius: 2.2px 0 0 2.2px; border-right:0;+
-  .u-black { border-color: #000; top: -1px; left: 0; } +
-  .u-red { border-color: #ff0000; bottom: -1px; right: 0; transform: rotate(180deg);+
-  .schneider-text-logo { font-size: 10.2px; font-weight: 900; color: #000; letter-spacing: -0.4px; } +
-  .schneider-subtext { font-size: 3.4px; font-weight: 900; text-transform: uppercase; color: #000; line-height: 1; }+
 </style> </style>
  
 <div class="system-terminal"> <div class="system-terminal">
-  <div class="main-system-title">Discos de Sistema</div> +  <div class="main-system-title">DISCOS DE SISTEMA</div> 
-  <div id="main-app"> +  <div class="selector-panel"> 
-    <div class="selector-panel"> +    <button class="btn-model" onclick="seleccionarPCW('8256', this)">PCW 8256</button> 
-      <button class="btn-model" onclick="selectModel('8256', this)">PCW 8256</button> +    <button class="btn-model" onclick="seleccionarPCW('8512', this)">PCW 8512</button> 
-      <button class="btn-model" onclick="selectModel('8512', this)">PCW 8512</button> +    <button class="btn-model" onclick="seleccionarPCW('9512', this)">PCW 9512</button> 
-      <button class="btn-model" onclick="selectModel('9256', this)">PCW 9256</button> +    <button class="btn-model" onclick="seleccionarPCW('9256', this)">PCW 9256</button> 
-      <button class="btn-model" onclick="selectModel('9512', this)">PCW 9512</button> +    <button class="btn-model" onclick="seleccionarPCW('9512plus', this)">PCW 9512+</button> 
-      <button class="btn-model" onclick="selectModel('9512+', this)">PCW 9512+</button> +    <button class="btn-model" onclick="seleccionarPCW('10', this)">PCW 10</button> 
-      <button class="btn-model" onclick="selectModel('10', this)">PCW 10</button> +    <button class="btn-model" onclick="seleccionarPCW('16', this)">PCW 16</button>
-      <button class="btn-model" onclick="selectModel('16', this)">PCW 16</button+
-      <div id="lang-selector" style="display:none; margin-top:15px;"> +
-        <img id="flag-es" src="/lib/exe/fetch.php?media=botones:espana.jpg" class="flag-btn" onclick="selectLang('es', this)"> +
-        <img id="flag-uk" src="/lib/exe/fetch.php?media=botones:reino_unido.jpg" class="flag-btn" onclick="selectLang('uk', this)"> +
-        <img id="flag-fr" src="/lib/exe/fetch.php?media=botones:francia.jpg" class="flag-btn" onclick="selectLang('fr', this)"> +
-        <img id="flag-de" src="/lib/exe/fetch.php?media=botones:alemania.jpg" class="flag-btn" onclick="selectLang('de', this)"> +
-      </div> +
-    </div> +
-    <div class="drive-bay"><div class="disk-slot"></div><div class="eject-button" onclick="location.reload()"></div><div class="drive-led" id="drive-led"></div></div> +
-    <div id="display-screen"><div id="status-msg" class="blink-yellow">POR FAVOR, SELECCIONE SU MODELO DE AMSTRAD PCW</div><div id="download-zone" style="display:none;"></div></div> +
-    <div id="disk-shelf-display" class="disk-shelf"></div>+
   </div>   </div>
 +  <div id="lang-container" class="lang-selector"></div>
 +  <div id="display-screen"><div style="text-align:center; padding-top:100px; opacity:0.5;">SELECCIONE MODELO:</div></div>
 </div> </div>
 +
 +<div id="disk-modal" onclick="cerrarZoom()">
 +  <img id="modal-img" src="">
 +  <button class="close-modal">CERRAR [ESC]</button>
 +</div>
 +
 <script> <script>
-let currentModel ""let currentLang = ""; let currentLoading = null+var pcwActual ''; 
-let audioCtx null; let motorNode null; let motorLFO = null; +var rutaBanderas = "/lib/exe/fetch.php?media=botones:"; 
-let isSystemLoaded = false+var rutaDiscos "/lib/exe/fetch.php?media=sistema:discos:imagenes:";
  
-const translations = +function seleccionarPCW(modelo, boton) 
-  es: { code: "es", name: "ESPAÑOL", header: "header-es", amstrad: "AMSTRAD CONSUMER<br>ELECTRONICS plc", d1: desc: "PROCESADOR DE TEXTOS", t2: "LOCO SCRIPT", ser: "2433345" }, d2: { desc: "SISTOPERATIVO/UTILID.", t2: "CP/M PLUS", ser: "VER LA OTRA CARA" }, d3: { desc: "", t2: "UTILIDADES DE <br> PROGRAMACION", ser: "2433347" }, d4: { desc: "", t2: "DRLOGO Y AYUDA", ser: "VER LA OTRA CARA" }, lic: "EL USO DE ESTOS PROGRAMAS ESTA SUJETO A CONDICIONES DEL ACUERDO DE LICENCIA DE USUARIO FINAL ESTABLECIDAS EN EL APENDICE DEL MANUAL DE INSTRUCCIONES DEL USUARIO DE ESTE PRODUCTO.", copy: "PROGRAMAS COPYRIGHT © 1985 LOCOMOTIVE SOFTWARE LTD & AMSTRAD plc." }, +  pcwActual = modelo; 
-  uk: { code: "en", name: "INGLÉS", header: "header-uk", amstrad: "AMSTRAD CONSUMER<br>ELECTRONICS plc", d1{ desc"WORDPROCESSOR", t2: "LOCO SCRIPT", ser"2119203" }, d2: { desc: "SYSTEM/UTILITIES/BASIC DISC", t2: "CP/M PLUS", ser: "SEE OTHER SIDE" }, d3: { desc: "", t2: "PROGRAMMING<br>UTILITIES", ser: "2119205" }, d4: { desc: "", t2: "DRLOGO & HELP", ser: "SEE OTHER SIDE" }, lic: "THE USE OF THIS SOFTWARE IS SUBJECT TO THE CONDITIONS OF THE END USER LICENSE AGREEMENT APPENDIX IN THE PRODUCT´S USER INSTRUCTION MANUAL", copy: "PROGRAMMES COPYRIGHT © 1985 LOCOMOTIVE SOFTWARE LTD & AMSTRAD plc." }, +  var botones = document.getElementsByClassName('btn-model'); 
-  fr: code"fr"name"FRANCÉS", header: "header-fr", amstrad: "AMSTRAD CONSUMER<br>ELECTRONICS plc", d1: { desc: "TRAITEMENT DE TEXTES", t2: "LOCO SCRIPT", ser: "3210101" }, d2: desc"SYSTEME / UTILITAIRES / BASIC"t2"CP/M PLUS", ser: "VOIR AUTRE COTE" }, d3: { desc: "", t2: "UTILITAIRES DE<br>PROGRAMMATION", ser: "3210103" }, d4: { desc: "", t2: "DRLOGO & HELP", ser: "VOIR AUTRE COTE" }, lic: "L'UTILISATION DE CE LOGICIEL EST DEFINIE POR LES CONDITIONS DE LICENSE PARA UTILISATEUR FINAL INDIQUEES DANS L´ANNEXE DU GUIDE DE L´UTILISATEUR.", copy: "PROGRAMMES COPYRIGHT © 1985 LOCOMOTIVE SOFTWARE LTD & AMSTRAD plc." }, +  for (var i = 0; i botones.length; i++) botones[i].classList.remove('active'); } 
-  de: code"de"name"ALEMÁN", header: "header-de", amstrad: "COMPUTER SOFTWARE", d1: { desc: "TEXTVERARBEITUNGSSYSTEM", t2: "LOCO SCRIPT", ser: "2202187" }, d2: desc"SYSTEM/DIENSTPROGRAMME-BASIC"t2"CP/M PLUS", ser: "vglandere Seite" }, d3: { desc""t2"DIENSTPROGRAMME", ser: "2202189" }, d4: { desc: "", t2: "DRLOGO UND HELP", ser: "vgl. andere Seite" }, lic: "Für die aplicación dieser Software son die Condiciones del Lizenzabkommens für Endbenutzer maßgebend (vgl. Anhang Benutzerhandbuch).", copy: "PROGRAMME COPYRIGHT © 1985 LOCOMOTIVE SOFTWARE LTD & AMSTRAD CONSUMER ELECTRONICS pls." } +  boton.classList.add('active'); 
-}; +  document.getElementById('display-screen').innerHTML = '<div style="text-align:center; padding-top:100px; opacity:0.5;">SELECCIONE IDIOMA:</div>'; 
- +   
-function initAudio() { if (!audioCtx) audioCtx = new (window.AudioContext || window.webkitAudioContext)(); }+  var contenedor = document.getElementById('lang-container'); 
 +  contenedor.innerHTML = ''; 
 +   
 +  var listaIdiomas = (modelo === '8256' || modelo === '8512') ?  
 +    [{id:'es'img:'españa.jpg'}, {id:'en'img:'reino_unido.jpg'}, {id:'de'img:'alemania.jpg'}, {id:'fr'img:'francia.jpg'} 
 +    [{id:'en'img:'reino_unido.jpg'}];
  
-function playBuzzerError() { +  listaIdiomas.forEach(function(lang) { 
-  initAudio(); const now audioCtx.currentTime+    var img document.createElement('img')
-  const osc = audioCtx.createOscillator(); const gain audioCtx.createGain()+    img.src rutaBanderas + lang.img
-  osc.type = 'square'; osc.frequency.setValueAtTime(3750, now); +    img.className = 'flag-btn'; 
-  gain.gain.setValueAtTime(0.08, now); gain.gain.exponentialRampToValueAtTime(0.001, now 0.12); +    img.onclick = function() { 
-  osc.connect(gain); gain.connect(audioCtx.destination); +      var flags = document.getElementsByClassName('flag-btn'); 
-  osc.start(); osc.stop(now + 0.12);+      for (var j = 0; j < flags.length; j++) { flags[j].classList.remove('active'); } 
 +      this.classList.add('active'); 
 +      mostrarDiscos(lang.id); 
 +    }; 
 +    contenedor.appendChild(img); 
 +  });
 } }
  
-function playRecalibrate() { +function mostrarDiscos(idLang) { 
-  initAudio(); const startTime audioCtx.currentTime+  var pantalla = document.getElementById('display-screen'); 
-  for(let i=0; i<12; i++) { +  var htmlDiscos ''
-    const t startTime + (i * 0.045); const osc audioCtx.createOscillator(); const gain audioCtx.createGain(); +   
-    osc.type = 'square'; osc.frequency.setValueAtTime(90, t); +  if (pcwActual === '8256' || pcwActual === '8512') { 
-    gain.gain.setValueAtTime(0.18, t); gain.gain.linearRampToValueAtTime(0, t + 0.03); +    htmlDiscos '<div class="disk-grid">' + 
-    osc.connect(gain); gain.connect(audioCtx.destination); +      '<div class="disk-item"><img src="' + rutaDiscos + 'systemdisk_' + idLang + '_side1.jpg" onclick="abrirZoom(this.src)">DISCO 1</div>'
-    osc.start(t); osc.stop(0.03);+      '<div class="disk-item"><img src="' + rutaDiscos + 'systemdisk_' + idLang + '_side2.jpg" onclick="abrirZoom(this.src)">DISCO 2</div>'
 +      '<div class="disk-item"><img src="' + rutaDiscos + 'systemdisk_' + idLang + '_side3.jpg" onclick="abrirZoom(this.src)">DISCO 3</div>' + 
 +      '<div class="disk-item"><img src="+ rutaDiscos + 'systemdisk_' + idLang + '_side4.jpg" onclick="abrirZoom(this.src)">DISCO 4</div>'
 +      '</div>'; 
 +  } else if (pcwActual === '9512plus') { 
 +    htmlDiscos = '<div class="disk-grid">'
 +      '<div class="disk-item"><img src="' + rutaDiscos + 'locoscript2_9512plus_bubblejet_disk_front.jpg" onclick="abrirZoom(this.src)">LOCO FRONT</div>'
 +      '<div class="disk-item"><img src="' + rutaDiscos + 'locoscript2_9512plus_bubblejet_disk_back.jpg" onclick="abrirZoom(this.src)">LOCO BACK</div>' + 
 +      '<div class="disk-item"><img src="' + rutaDiscos + 'cpm_plus_9512plus_bubblejet_disk_front.jpg" onclick="abrirZoom(this.src)">CPM FRONT</div>'
 +      '<div class="disk-item"><img src="' + rutaDiscos + 'cpm_plus_9512plus_bubblejet_disk_back.jpg" onclick="abrirZoom(this.src)">CPM BACK</div>'
 +      '</div>'
 +  } else if (pcwActual === '9512' || pcwActual === '10' || pcwActual === '16' || pcwActual === '9256'
 +     var discosData = { 
 +        '9512': ['systemdisk_9512_en_disc1.jpg', 'systemdisk_9512_en_disc2.jpg'], 
 +        '10': ['systemdisk_10_en_disc2.jpg', 'systemdisk_10_en_disc1.jpg'], 
 +        '16': ['systemdisk_16_en_rescue.jpg'], 
 +        '9256': ['systemdisk_9256_en_disc1.jpg', 'systemdisk_9256_en_disc2.jpg'
 +     }; 
 +     var lista = discosData[pcwActual] || []; 
 +     htmlDiscos = '<div class="disk-grid">'; 
 +     lista.forEach(function(img, index){ 
 +        htmlDiscos += '<div class="disk-item"><img src="' + rutaDiscos + img + '" onclick="abrirZoom(this.src)">DISCO ' + (index+1) + '</div>'; 
 +     }); 
 +     htmlDiscos += '</div>';
   }   }
-} 
- 
-function playStepSound() { 
-  initAudio(); const now = audioCtx.currentTime; 
-  const osc = audioCtx.createOscillator(); const gain = audioCtx.createGain(); const filter = audioCtx.createBiquadFilter(); 
-  osc.type = 'triangle'; osc.frequency.setValueAtTime(130, now); 
-  filter.type = 'bandpass'; filter.frequency.setValueAtTime(1100, now); 
-  gain.gain.setValueAtTime(0.22, now); gain.gain.exponentialRampToValueAtTime(0.001, now + 0.035); 
-  osc.connect(filter); filter.connect(gain); gain.connect(audioCtx.destination); 
-  osc.start(); osc.stop(now + 0.035); 
-} 
- 
-function startMotorSound() { 
-  initAudio(); motorNode = audioCtx.createOscillator(); const motorGain = audioCtx.createGain(); 
-  motorNode.type = 'sine'; motorNode.frequency.setValueAtTime(42, audioCtx.currentTime); 
-  motorLFO = audioCtx.createOscillator(); const lfoGain = audioCtx.createGain(); 
-  motorLFO.frequency.setValueAtTime(6, audioCtx.currentTime); lfoGain.gain.setValueAtTime(0.004, audioCtx.currentTime); 
-  motorLFO.connect(lfoGain); lfoGain.connect(motorGain.gain); 
-  motorGain.gain.setValueAtTime(0.007, audioCtx.currentTime); motorNode.connect(motorGain); motorGain.connect(audioCtx.destination); 
-  motorNode.start(); motorLFO.start(); 
-} 
- 
-function stopMotorSound() { if (motorNode) { motorNode.stop(); motorNode = null; } if (motorLFO) { motorLFO.stop(); motorLFO = null; } } 
- 
-function selectModel(model, btn) { 
-  if (isSystemLoaded) { playBuzzerError(); document.getElementById('status-msg').innerHTML = `<span class="blink-yellow">PULSE EJECT PARA EXTRAER EL DISCO</span>`; return; } 
-  document.querySelectorAll('.btn-model').forEach(b => b.classList.remove('active')); 
-  btn.classList.add('active'); currentModel = model; 
-  document.getElementById('lang-selector').style.display = 'block'; 
-  const flags = { es: document.getElementById('flag-es'), fr: document.getElementById('flag-fr'), de: document.getElementById('flag-de') }; 
-  const showAll = (model === '8256' || model === '8512'); 
-  Object.values(flags).forEach(f => { if(f) f.style.display = showAll ? 'inline-block' : 'none'; }); 
-  const status = document.getElementById('status-msg'); status.className = ""; 
-  status.innerHTML = `<span class="status-green">PCW ${model} SELECCIONADO.</span><br><span class="blink-yellow" style="display:block; margin-top:5px;">SELECCIONE EL IDIOMA DEL DISCO DE SISTEMA</span>`; 
-} 
  
-function selectLang(lang, btn) { +  if (htmlDiscos !== ''
-  if (isSystemLoaded) { playBuzzerError(); document.getElementById('status-msg').innerHTML `<span class="blink-yellow">PULSE EJECT PARA EXTRAER EL DISCO</span>`; return; } +    var sufijo = (idLang === 'es'? "" : idLang
-  document.querySelectorAll('.flag-btn').forEach(=> b.classList.remove('active'))+    // URL Corregida: sistema (en singular
-  btn.classList.add('active'); currentLang = lang; +    var urlFinal "doku.php?id=sistema:discos:descargas:pcw" + pcwActual + sufijo
-  isSystemLoaded true;  +     
-  const status document.getElementById('status-msg'); status.className = ""; +    htmlDiscos += '<div class="download-zone">' + 
-  if (currentModel === '8256' || currentModel === '8512') { +                  '<a href="+ urlFinal + '" target="_blank" class="btn-download">DESCARGAR DISCOS SISTEMA ' + pcwActual.toUpperCase() + ' (' + idLang.toUpperCase() + ')</a>' + 
-    status.innerHTML `<span class="status-green">SISTEMA PCW ${currentModel} (${translations[lang].name}LISTO.</span><br><span class="blink-yellow" style="display:block; margin-top:5px;">PULSE EJECT PARA REINICIAR O CARGUE UN DISCO</span>`+                  '</div>'
-    updateShelf();+    pantalla.innerHTML = htmlDiscos;
   } else {   } else {
-    status.innerHTML = `<span class="status-green">PCW ${currentModel} (${translations[lang].name}) SELECCIONADO.</span><br><span style="color:#ff0000 !importantfont-weight:900display:block; margin-top:5px;" class="blink-yellow">ERROR: Disco de Sistema no disponible</span>`;+    pantalla.innerHTML = '<div style="text-align:centerpadding-top:100pxopacity:0.5;">CONTENIDO NO DISPONIBLE_</div>';
   }   }
 } }
  
-function updateShelf() { +function abrirZoom(src) { 
-  const shelf = document.getElementById('disk-shelf-display')+  document.getElementById('modal-img').src src
-  shelf.innerHTML ""; shelf.style.display = 'flex'+  document.getElementById('disk-modal').style.display = 'flex';
-  for(let i=1; i<=2; i++) { +
-    shelf.innerHTML += ` +
-      <div class="disk-wrapper"> +
-        <div class="disk-container" id="disk${i}"> +
-          <div class="disk-face disk-front" onclick="triggerLoadFromDisk(${i}, false)"> +
-             <div class="hole-left-rect"></div><div class="hole-right-circ"></div> +
-             <div class="disk-hub-wrapper"><div class="hub-3inch" id="hub${i}front"><div class="hub-3inch-notch"></div></div></div> +
-             <div class="disk-label-amsoft">${getLabelHTML(i, 'A')}</div> +
-          </div> +
-          <div class="disk-face disk-back" onclick="triggerLoadFromDisk(${i}, true)"> +
-             <div class="hole-left-rect"></div><div class="hole-right-circ"></div> +
-             <div class="disk-hub-wrapper"><div class="hub-3inch" id="hub${i}back"><div class="hub-3inch-notch"></div></div></div> +
-             <div class="disk-label-amsoft">${getLabelHTML(i, 'B')}</div> +
-          </div> +
-        </div> +
-        <button class="flip-btn" onclick="document.getElementById('disk${i}').classList.toggle('is-flipped')this.blur();">⟲ GIRAR DISCO ${i}</button> +
-      </div>`; +
-  }+
 } }
  
-function getLabelHTML(diskNum, side) { +function cerrarZoom() { 
-  const t = translations[currentLang]; const isA = (side === 'A'); +  document.getElementById('disk-modal').style.display = 'none';
-  const sideNum = (diskNum === 1) ? (isA ? "1" : "2") : (isA ? "3" : "4"); +
-  let data = t['d' + sideNum]; +
-  let isLongSer = !isA; +
-  let serStyle = isLongSer ? `width: 54px; height: 11px; right: 2px; font-size: 3.6px; top: 4px;` : `width: 44px; height: 13px; right: 6px; font-size: 8px; top: 4px;`; +
-  if (currentLang === 'de' && !isAserStyle = `width: 52px; height: 11px; right: 2px; font-size: 3.8px; top: 4px;`; +
-  let logo = (currentLang === 'de') ? `<div class="schneider-container"><div class="schneider-symbol"><div class="u-shape u-black"></div><div class="u-shape u-red"></div></div><div style="display:flex;flex-direction:column;"><span class="schneider-text-logo">Schneider</span><span class="schneider-subtext">COMPUTER SOFTWARE</span></div></div>` : `<div style="display:flex; align-items:center; gap:8px;"><span class="amsoft-logo-text">Amsoft</span><span class="amstrad-subtext-black">${t.amstrad}</span></div>`; +
-  let finalStyle = "font-size: 11px; font-weight: 900; display: block; text-transform: uppercase; line-height: 1.1; margin-top: -1px; white-space: nowrap;"; +
-  if (sideNum === "3") { +
-      let esMargin = (currentLang === 'es') ? "margin-top: -1px;" : "margin-top: -4px;"; +
-      finalStyle = `font-size: 10.5px; font-weight: 900; line-height: 0.95; ${esMargin} display: block; width: 130px; white-space: normal;`; +
-      if(currentLang === 'fr' || currentLang === 'uk') finalStyle = "font-size: 9.2px; font-weight: 900; line-height: 0.95; margin-top: 2px; display: block; width: 125px; white-space: normal;"; +
-      if(currentLang === 'fr') finalStyle += "transform: scaleX(0.92); transform-origin: left;"; +
-      if(currentLang === 'de') finalStyle = "font-size: 10.5px; font-weight: 950; line-height: 1; margin-top: -1px; transform: scaleX(0.8); transform-origin: left; display: block; width: 140px;"; +
-  } +
-  if (sideNum === "4") { +
-      finalStyle = "font-size: 9.2px; font-weight: 900; display: block; text-transform: uppercase; line-height: 1; margin-top: 1px; white-space: nowrap; transform: scaleX(0.9); transform-origin: left;"; +
-      if (currentLang === 'de') finalStyle = "font-size: 8.8px; font-weight: 950; line-height: 1; transform: scaleX(0.88); transform-origin: left; width: 150px; letter-spacing: -0.1px;"; +
-  } +
-  return `<div class="label-header ${t.header}">${logo}<div class="side-indicator-container">${sideNum} <div class="arrow-cajetin">↑</div></div></div><div class="label-body-replica"><span class="txt-desc-top">${data.desc}</span><span style="${finalStyle}">${data.t2}</span><div class="serial-box-only" style="${serStyle}"><span>${data.ser}</span></div><div class="txt-small-legales">${t.lic}</div></div><div class="label-footer-grey"><div class="cs-logo-label">CS</div><span class="copy-text-replica">${t.copy}</span></div>`;+
 } }
  
-function triggerLoadFromDisk(idx, isBack) { +document.onkeydown function(evt) { 
-  const sideChar = isBack ? 'B' : 'A'; const sideNum = (idx === 1) ? (isBack ? "2" : "1") : (isBack ? "4" : "3"); +  if (evt.key === "Escape"cerrarZoom(); 
-  if(currentLoading) clearInterval(currentLoading); +};
-  const t = translations[currentLang]; let name = (t['d' + sideNum].t2 || t['d' + sideNum].desc).replace(/<[^>]*>?/gm, ' ').replace(/\s\s+/g, ' '); +
-  const status = document.getElementById('status-msg'); const led document.getElementById('drive-led'); const dlZone = document.getElementById('download-zone'); +
-  dlZone.style.display = 'none'; status.className = ""; status.style.color = "#ffff00"; led.className = "drive-led led-active led-reading";  +
-  const hub = document.getElementById(`hub${idx}${isBack ? 'back' : 'front'}`); +
-  document.querySelectorAll('.hub-3inch').forEach(h => h.classList.remove('spinning')); +
-  if(hub) hub.classList.add('spinning'); +
-  playRecalibrate(); setTimeout(() => startMotorSound(), 550); +
-  let track 0; +
-  currentLoading = setInterval(() => { +
-    status.innerHTML = `LEYENDO DISCO ${idx} [CARA ${sideChar}] - PISTA ${track}...<br>CARGANDO: <span style="color:#fff; font-weight:bold;">${name}</span>`; +
-    if (track > 0playStepSound();  +
-    track++; +
-    if (track > 40) {  +
-      clearInterval(currentLoading); stopMotorSound(); led.className = "drive-led"; if(hub) hub.classList.remove('spinning'); +
-      status.innerHTML = `<span class="status-green">SISTEMA MONTADO: ${name}</span><br><span style='color:#fff;'>DISCO LISTO</span>`; +
-      const fileName = `Disco_sistema_${currentModel}_${t.code}_d${idx}_${sideChar}.zip`; +
-      dlZone.innerHTML = `<a href="/lib/exe/fetch.php?media=sistema:descargas:${fileName}" class="download-link">OBTENER IMAGEN .DSK DEL SISTEMA</a>`; +
-      dlZone.style.display = 'block'; +
-    } +
-  }, 180); +
-}+
 </script> </script>
 </html> </html>
  
software/sistema.1777792716.txt.gz · Última modificación: por jesus