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/02 11:19] jesussoftware:sistema [2026/05/05 18:04] (actual) jesus
Línea 1: Línea 1:
 ~~NOTOC~~ ~~NOTOC~~
- 
 <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-shadow: 0 0 10px #00ff00; } 
-  #display-screen { border: 2px solid #00ff00; background: rgba(0,30,0,0.4); margin20px auto; min-height: 120pxwidth100%; display: flex; flex-direction: column; justify-content: center; align-itemscentertext-aligncenterpadding: 15px; box-sizingborder-box; } +   
-  .blink-yellow color#ffff00 !important; animation: blinker-msg 1s linear infinite; font-weightbold+  #display-screen { border: 1px solid #004400; background: rgba(0,20,0,0.2); width100%; min-height: 280pxpadding20px; box-sizing: border-box; display: flex; flex-direction: column; align-items: center; 
-  .status-green { color: #00ff00 !important; font-weight: bold; +  .disk-grid { displaygridgrid-template-columnsrepeat(auto-fit, minmax(140px, 1fr))gap: 15px; justify-itemscenter; width: 100%; margin-bottom: 25px; } 
-  @keyframes blinker-msg { 50% { opacity: 0; } +  .disk-item text-aligncenter; font-size10px; color: #00ff00; font-weight: bold; } 
-  .download-link margin-top: 10px; display: inline-block; padding: 8px 20px; border: 1px solid #ffff00color: #ffff00 !importanttext-decorationnone !importantfont-weightboldfont-size12pxtext-transformuppercasetransition0.3s; } +  .disk-item img { border: 1px solid #00ff00background: #000width130pxheightautodisplayblockmargin0 auto 5px autocursorzoom-in; }
-  .download-link:hover { background: #ffff00; color: #000 !important; }+
  
-  /* UNIDAD DE DISCO VIRTUAL (BLINDADA) */ +  .download-zone { margin-top10pxtext-aligncenter; width: 100%; } 
-  .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-radius6px+  .btn-download displayinline-blockbackgroundtransparentcolor: #ffff00; border: 2px solid #ffff00padding10px 20pxfont-family'Courier New', monospacefont-weightboldcursorpointertext-decorationnonetransition0.3sfont-size13px; } 
-  .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); } +  .btn-download:hover { background: #ffff00; color: #000; box-shadow: 0 0 15px rgba(255,255,0,0.5); }
-  .eject-button width45pxheight20pxbackground: #0a0a0a; position: absolute; bottom: 12px; left: 30px; border: 2px solid #555border-radius2pxcursorpointer+
-  .drive-led { width16pxheight8pxbackground#300positionabsolutebottom: 15px; right: 30px; border-radius2px; } +
-  .led-active { background: #ff0000; box-shadow: 0 0 15px #ff0000; animation: led-blink 0.1s infinite; }+
  
-  /* ESTRUCTURA FÍSICA DISCO (BLINDADA) */ +  #disk-modal { display: none; position: fixed; z-index: 9999left0top0; width: 100%; height: 100%; background-colorrgba(0,11,0,0.9); align-items: center; justify-content: center; flex-direction: column; } 
-  .disk-shelf { display: none; flex-wrap: wrap; gap: 40px; justify-content: center; margin-top: 50px; perspective: 1200px; } +  #modal-img { border: 3px solid #00ff00max-width80%max-height80%; } 
-  .disk-wrapper { display: flex; flex-direction: column; align-items: center; gap: 15px; } +  .close-modal { margin-top: 20px; background: transparent; color: #00ff00; border: 2px solid #00ff00; padding: 10px 20px; cursor: pointer; font-family'Courier New', monospace; }
-  .disk-container { width: 175px; height: 225px; position: relative; transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1); transform-style: preserve-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; } +
-  .disk-hub-wrapper { position: absolute; top: 85px; left: 50%; margin-left: -20px; width: 40px; height: 40px; z-index: 5+
-  .hub-3inch { background#fdfdfdborder-radius50%; border: 1px solid #ccc; width: 100%; height: 100%; position: relative; } +
-  .hub-3inch-notch { position: absolute; top: 5px; left: 50%; margin-left: -1.5px; width: 3px; height: 10px; background: #000; border-radius1px; } +
-  .spinning { animation: rotate-hub 0.5s linear infinite !important; } +
-  @keyframes rotate-hub { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } +
-  @keyframes led-blink { 0% { opacity: 1; } 50% { opacity: 0.4; } 100% { opacity: 1; } } +
- +
-  /* ETIQUETAS (BLINDADO) */ +
-  .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: Arialsans-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: 0 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"Times, serif; 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; } +
-  .flip-btn { background: #004400; 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;} +
- +
-  /* SCHNEIDER */ +
-  .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 src="/lib/exe/fetch.php?media=botones:espana.jpg" class="flag-btn" onclick="selectLang('es', this)"> +
-        <img src="/lib/exe/fetch.php?media=botones:reino_unido.jpg" class="flag-btn" onclick="selectLang('uk', this)"> +
-        <img src="/lib/exe/fetch.php?media=botones:francia.jpg" class="flag-btn" onclick="selectLang('fr', this)"> +
-        <img 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 id="disk-modal" onclick="cerrarZoom()">
 +  <img id="modal-img" src="">
 +  <button class="close-modal">CERRAR [ESC]</button>
 </div> </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:"; 
 +var rutaDiscos "/lib/exe/fetch.php?media=sistema:discos:imagenes:";
  
-const translations = +function seleccionarPCW(modelo, boton) 
-  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: { 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: 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: 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>'; 
 +   
 +  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 initAudio() { if (!audioCtxaudioCtx new (window.AudioContext || window.webkitAudioContext)(); }+  listaIdiomas.forEach(function(lang) { 
 +    var img = document.createElement('img')
 +    img.src rutaBanderas + lang.img; 
 +    img.className = 'flag-btn'; 
 +    img.onclick = function() { 
 +      var flags = document.getElementsByClassName('flag-btn'); 
 +      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(); +  var pantalla = document.getElementById('display-screen'); 
-  const startTime audioCtx.currentTime+  var htmlDiscos ''
-  for(let i=0; i<12; i++) { +   
-    const t startTime + (i * 0.045); +  if (pcwActual === '8256' || pcwActual === '8512') { 
-    const osc audioCtx.createOscillator(); +    htmlDiscos '<div class="disk-grid">' + 
-    const gain audioCtx.createGain(); +      '<div class="disk-item"><img src="' + rutaDiscos + 'systemdisk_' + idLang + '_side1.jpg" onclick="abrirZoom(this.src)">DISCO 1</div>' + 
-    osc.type = 'square'; osc.frequency.setValueAtTime(90, t); +      '<div class="disk-item"><img src="' + rutaDiscos + 'systemdisk_' + idLang + '_side2.jpg" onclick="abrirZoom(this.src)">DISCO 2</div>' + 
-    gain.gain.setValueAtTime(0.18, t); +      '<div class="disk-item"><img src="' + rutaDiscos + 'systemdisk_' + idLang + '_side3.jpg" onclick="abrirZoom(this.src)">DISCO 3</div>' + 
-    gain.gain.linearRampToValueAtTime(0, t + 0.03); +      '<div class="disk-item"><img src="+ rutaDiscos + 'systemdisk_' + idLang + '_side4.jpg" onclick="abrirZoom(this.src)">DISCO 4</div>'
-    osc.connect(gain); gain.connect(audioCtx.destination); +      '</div>'; 
-    osc.start(t); osc.stop(0.03);+  } 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() { +  if (htmlDiscos !== '') { 
-  initAudio(); +    var sufijo = (idLang === 'es'? "" : idLang
-  const now audioCtx.currentTime; +    // URL Corregida: sistema (en singular
-  const osc audioCtx.createOscillator(); +    var urlFinal "doku.php?id=sistema:discos:descargas:pcw" + pcwActual + sufijo
-  const gain = audioCtx.createGain(); +     
-  const filter audioCtx.createBiquadFilter()+    htmlDiscos += '<div class="download-zone">+ 
-  osc.type = 'triangle'; osc.frequency.setValueAtTime(130, now); +                  '<a href="+ urlFinal + '" target="_blank" class="btn-download">DESCARGAR DISCOS SISTEMA ' + pcwActual.toUpperCase() + ' (' + idLang.toUpperCase() + ')</a>'
-  filter.type = 'bandpass'; filter.frequency.setValueAtTime(1100, now)+                  '</div>'
-  gain.gain.setValueAtTime(0.22, now); +    pantalla.innerHTML = htmlDiscos
-  gain.gain.exponentialRampToValueAtTime(0.001, now + 0.035)+  } else { 
-  osc.connect(filter)filter.connect(gain)gain.connect(audioCtx.destination)+    pantalla.innerHTML = '<div style="text-align:centerpadding-top:100pxopacity:0.5;">CONTENIDO NO DISPONIBLE_</div>'
-  osc.start(); osc.stop(now + 0.035);+  }
 } }
  
-function startMotorSound() { +function abrirZoom(src) { 
-  initAudio(); +  document.getElementById('modal-img').src src
-  motorNode = audioCtx.createOscillator(); +  document.getElementById('disk-modal').style.display = 'flex';
-  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() {  +function cerrarZoom() { 
-  if (motorNode) { motorNode.stop(); motorNode = null; } +  document.getElementById('disk-modal').style.display 'none';
-  if (motorLFO) { motorLFO.stop(); motorLFO null}+
 } }
  
-function selectModel(model, btn) { +document.onkeydown = function(evt) { 
-  document.querySelectorAll('.btn-model').forEach(b => b.classList.remove('active')); +  if (evt.key === "Escape"cerrarZoom(); 
-  btn.classList.add('active'); currentModel = model; +};
-  document.getElementById('lang-selector').style.display = 'block'; +
-  const status = document.getElementById('status-msg'); +
-  status.classList.remove('blink-yellow'); +
-  status.innerHTML = `<span class="status-green">EL MODELO SELECCIONADO ES EL PCW ${model}.</span><br><span class="blink-yellow">SELECCIONE EL IDIOMA DEL DISCO DE SISTEMA</span>`; +
-+
- +
-function selectLang(lang, btn) { +
-  document.querySelectorAll('.flag-btn').forEach(b => b.classList.remove('active')); +
-  btn.classList.add('active'); currentLang = lang; +
-  const status = document.getElementById('status-msg'); +
-  const langName = translations[lang].name; +
-  status.classList.remove('blink-yellow'); +
-  status.innerHTML = `<span class="status-green">DISCO SISTEMA PCW ${currentModel} EN EL IDIOMA ${langName} SELECCIONADO.</span><br><span class="blink-yellow">PULSE EL BOTON DE EXTRACCION DE LA UNIDAD PARA REINICIAR</span>`; +
-  updateShelf(); +
-+
- +
-function updateShelf() { +
-  const shelf = document.getElementById('disk-shelf-display'); +
-  shelf.innerHTML = ""; shelf.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')">⟲ GIRAR DISCO ${i}</button> +
-      </div>`; +
-  } +
-+
- +
-function getLabelHTML(diskNum, side) { +
-  const t = translations[currentLang]; const isA = (side === 'A'); +
-  const sideNum = (diskNum === 1) ? (isA ? "1" : "2") : (isA ? "3" : "4"); +
-  let data = t['d' + sideNum]; +
-  let isLongTextSerial = !isA; +
-  let serialBoxStyle = isLongTextSerial ? `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' && !isA) serialBoxStyle = `width: 52px; height: 11px; right: 2px; font-size: 3.8px; top: 4px;`; +
-  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; ${esMargindisplay: blockwidth: 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 === '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;"; +
-  } +
-  let logoBlock = (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>`; +
-  return `<div class="label-header ${t.header}"><div style="display:flex; align-items:center; gap:8px;">${logoBlock}</div><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="${serialBoxStyle}"><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) { +
-  const sideSuffix = isBack ? 'back' : 'front'; +
-  const sideChar = isBack ? 'B' : 'A'; +
-  const sideNum = (idx === 1) ? (isBack ? "2" : "1") : (isBack ? "4" : "3"); +
-  if(currentLoading) clearInterval(currentLoading); +
-  const t = translations[currentLang]; +
-  let name = (t['d' + sideNum].t2 || t['d' + sideNum].desc).replace(/<[^>]*>?/gm, ' ').replace(/\n/g, ' ').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.classList.remove('blink-yellow'); +
-  status.style.color = "#ffff00"; led.classList.add('led-active'); +
-  document.querySelectorAll('.hub-3inch').forEach(h => h.classList.remove('spinning')); +
-  const hub = document.getElementById(`hub${idx}${sideSuffix}`); +
-  if(hub) hub.classList.add('spinning'); +
- +
-  playRecalibrate(); // Grummm inicial +
-  setTimeout(() => startMotorSound(), 600); +
- +
-  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 > 0) playStepSound(); // Tac-tac metálico +
-    track++; +
-    if (track > 40) {  +
-      clearInterval(currentLoading); stopMotorSound(); +
-      led.classList.remove('led-active'); if(hub) hub.classList.remove('spinning'); +
-      status.style.color = "#00ff00"; status.innerHTML = "SISTEMA MONTADO: " + name + "<br><span style='color:#fff;'>DISCO LISTO</span>"; +
-      dlZone.innerHTML = `<a href="/lib/exe/fetch.php?media=sistema:descargas:${currentModel}_${currentLang}_d${sideNum}.zip" class="download-link">OBTENER IMAGEN .DSK DEL SISTEMA SELECCIONADO</a>`; +
-      dlZone.style.display = 'block'; +
-    } +
-  }, 180); +
-}+
 </script> </script>
 </html> </html>
  
software/sistema.1777720744.txt.gz · Última modificación: por jesus