Herramientas de usuario

Herramientas del sitio


fr:hardware:perifericos:kempston_joystick_clones

Diferencias

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

Enlace a la vista de comparación

Próxima revisión
Revisión previa
fr:hardware:perifericos:kempston_joystick_clones [2026/05/14 05:56] – creado jesusfr:hardware:perifericos:kempston_joystick_clones [2026/05/25 16:13] (actual) jesus
Línea 3: Línea 3:
 <html> <html>
 <style> <style>
-  /* --- RETRO CRT VISUAL ENGINE --- */+  /* --- MOTEUR VISUEL RETRO CRT --- */
   .pcw-monitor-ultra { background-color: #000b00; border: 12px solid #2a2a2a; border-radius: 15px; padding: 25px; margin: 25px 0; font-family: 'Courier New', Courier, monospace; position: relative; overflow: hidden; box-shadow: inset 0 0 60px rgba(0,255,0,0.15), 0 10px 30px rgba(0,0,0,0.7); }   .pcw-monitor-ultra { background-color: #000b00; border: 12px solid #2a2a2a; border-radius: 15px; padding: 25px; margin: 25px 0; font-family: 'Courier New', Courier, monospace; position: relative; overflow: hidden; box-shadow: inset 0 0 60px rgba(0,255,0,0.15), 0 10px 30px rgba(0,0,0,0.7); }
   .pcw-monitor-ultra::after { content: " "; position: absolute; top: 0; left: 0; bottom: 0; right: 0; background: linear-gradient(rgba(18, 16, 16, 0) 50%, rgba(0, 0, 0, 0.15) 50%), linear-gradient(90deg, rgba(255, 0, 0, 0.03), rgba(0, 255, 0, 0.01), rgba(0, 0, 255, 0.03)); background-size: 100% 3px, 2px 100%; z-index: 2; pointer-events: none; animation: flickering 0.15s infinite; }   .pcw-monitor-ultra::after { content: " "; position: absolute; top: 0; left: 0; bottom: 0; right: 0; background: linear-gradient(rgba(18, 16, 16, 0) 50%, rgba(0, 0, 0, 0.15) 50%), linear-gradient(90deg, rgba(255, 0, 0, 0.03), rgba(0, 255, 0, 0.01), rgba(0, 0, 255, 0.03)); background-size: 100% 3px, 2px 100%; z-index: 2; pointer-events: none; animation: flickering 0.15s infinite; }
Línea 13: Línea 13:
   .content-body { position: relative; z-index: 3; color: #00ff00; line-height: 1.6; text-align: justify; }   .content-body { position: relative; z-index: 3; color: #00ff00; line-height: 1.6; text-align: justify; }
   .content-body b, .content-body strong { color: #00ff00; font-weight: bold; }   .content-body b, .content-body strong { color: #00ff00; font-weight: bold; }
 +  .content-body ul { list-style: square; margin-top: 10px; padding-left: 20px; }
 +  .content-body ul li { color: #00ff00; }
 +  .content-body ul li a { color: #00ff00 !important; text-decoration: underline !important; font-weight: bold; }
   .pcw-subtitle-box { background-color: #00ff00; color: #000b00 !important; padding: 5px 12px; font-weight: bold; display: inline-block; margin: 20px 0 15px 0; text-transform: uppercase; position: relative; z-index: 3; font-family: 'Courier New', Courier, monospace; }   .pcw-subtitle-box { background-color: #00ff00; color: #000b00 !important; padding: 5px 12px; font-weight: bold; display: inline-block; margin: 20px 0 15px 0; text-transform: uppercase; position: relative; z-index: 3; font-family: 'Courier New', Courier, monospace; }
      
-  /* --- GALLERIES AND CARDS --- */+  /* --- GALERIES ET CARTES --- */
   .drive-grid-container { display: flex; flex-direction: column; gap: 20px; margin: 25px 0; position: relative; z-index: 3; align-items: center; justify-content: center; }   .drive-grid-container { display: flex; flex-direction: column; gap: 20px; margin: 25px 0; position: relative; z-index: 3; align-items: center; justify-content: center; }
   .drive-card { border: 1px solid #004400; background: rgba(0, 15, 0, 0.6); padding: 20px; display: flex; flex-direction: column; gap: 15px; transition: 0.2s; align-items: center; width: 100%; max-width: 900px; box-sizing: border-box; }   .drive-card { border: 1px solid #004400; background: rgba(0, 15, 0, 0.6); padding: 20px; display: flex; flex-direction: column; gap: 15px; transition: 0.2s; align-items: center; width: 100%; max-width: 900px; box-sizing: border-box; }
   .drive-card:hover { border-color: #00ff00; background: rgba(0, 30, 0, 0.8); }   .drive-card:hover { border-color: #00ff00; background: rgba(0, 30, 0, 0.8); }
      
-  /* --- FORCED 4 IMAGES IN A SINGLE LINE --- */+  /* --- ALIGNEMENT 4 IMAGES EN LIGNE --- */
   .gallery-four-inline { display: flex; gap: 12px; flex-direction: row; flex-wrap: nowrap; justify-content: space-between; width: 100%; }   .gallery-four-inline { display: flex; gap: 12px; flex-direction: row; flex-wrap: nowrap; justify-content: space-between; width: 100%; }
   .gallery-four-inline .img-frame { flex: 1; min-width: 0; }   .gallery-four-inline .img-frame { flex: 1; min-width: 0; }
   .gallery-four-inline .img-frame img { max-width: 100%; height: auto; max-height: 160px; }   .gallery-four-inline .img-frame img { max-width: 100%; height: auto; max-height: 160px; }
  
-  /* --- GENERAL FRAMES --- */+  /* --- CADRES GÉNÉRAUX --- */
   .img-frame { border: 2px solid #00ff00; padding: 6px; background: #000; text-align: center; display: inline-flex; flex-direction: column; align-items: center; box-sizing: border-box; transition: 0.3s ease; }   .img-frame { border: 2px solid #00ff00; padding: 6px; background: #000; text-align: center; display: inline-flex; flex-direction: column; align-items: center; box-sizing: border-box; transition: 0.3s ease; }
   .img-frame:hover { transform: scale(1.05); border-color: #00ff00; box-shadow: 0 0 15px rgba(0, 255, 0, 0.4); }   .img-frame:hover { transform: scale(1.05); border-color: #00ff00; box-shadow: 0 0 15px rgba(0, 255, 0, 0.4); }
Línea 31: Línea 34:
   .img-label { font-size: 0.72em; color: #00aa00; margin-top: 8px; font-weight: bold; text-transform: uppercase; letter-spacing: 0.5px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; width: 100%; }   .img-label { font-size: 0.72em; color: #00aa00; margin-top: 8px; font-weight: bold; text-transform: uppercase; letter-spacing: 0.5px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; width: 100%; }
      
 +  /* --- CALQUE MODAL LIGHTBOX AVEC OUTREPASSEMENT DES LIMITES POUR TAILLE RÉELLE --- */
   .modal-pcw { display: none; position: fixed; z-index: 9999; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 10, 0, 0.95); overflow: auto; }   .modal-pcw { display: none; position: fixed; z-index: 9999; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 10, 0, 0.95); overflow: auto; }
   .modal-pcw:target { display: block; text-align: center; }   .modal-pcw:target { display: block; text-align: center; }
   .close-overlay { display: inline-block; min-width: 100%; min-height: 100%; padding: 40px; box-sizing: border-box; text-decoration: none !important; cursor: zoom-out; vertical-align: middle; }   .close-overlay { display: inline-block; min-width: 100%; min-height: 100%; padding: 40px; box-sizing: border-box; text-decoration: none !important; cursor: zoom-out; vertical-align: middle; }
-  .modal-content { max-width: 90% !important; max-height: 85vh !important; border: 4px solid #00ff00; box-shadow: 0 0 50px rgba(0, 255, 0, 0.5); margin: 5vh auto; display: inline-block; }+  .modal-content { border: 4px solid #00ff00; box-shadow: 0 0 50px rgba(0, 255, 0, 0.5); margin: 5vh auto; display: inline-block; max-width: none !important; max-height: none !important; height: auto !important; } 
 + 
 +  /* Tableaux techniques */ 
 +  .tech-table { width: 100%; border-collapse: collapse; margin: 15px 0; background: rgba(0, 20, 0, 0.4); z-index: 3; position: relative; } 
 +  .tech-table th, .tech-table td { border: 1px solid #004400; padding: 8px; text-align: left; font-family: 'Courier New', Courier, monospace; font-size: 0.9em; color: #00ff00; } 
 +  .tech-table th { background: rgba(0, 60, 0, 0.6); color: #00ff00; font-weight: bold; text-transform: uppercase; }
 </style> </style>
  
-<!-- INTERACTIVE LIGHTBOX LAYERS -->+<!-- CALQUES MODAUX INTERACTIFS (LIGHTBOX-->
 <div id="c1" class="modal-pcw"><a href="#close" class="close-overlay"><img class="modal-content" src="/lib/exe/fetch.php?media=hardware:perifericos:KempstonJoystickInterfaceClone_01_Top.jpg"></a></div> <div id="c1" class="modal-pcw"><a href="#close" class="close-overlay"><img class="modal-content" src="/lib/exe/fetch.php?media=hardware:perifericos:KempstonJoystickInterfaceClone_01_Top.jpg"></a></div>
 <div id="c2" class="modal-pcw"><a href="#close" class="close-overlay"><img class="modal-content" src="/lib/exe/fetch.php?media=hardware:perifericos:KempstonJoystickInterfaceClone_01_Bottom.jpg"></a></div> <div id="c2" class="modal-pcw"><a href="#close" class="close-overlay"><img class="modal-content" src="/lib/exe/fetch.php?media=hardware:perifericos:KempstonJoystickInterfaceClone_01_Bottom.jpg"></a></div>
Línea 47: Línea 56:
      
   <div class="content-body">   <div class="content-body">
-    <p>Copies ou clones de l'interface officielle </html>[[Kempston Joystick]]<html>.</p>+    <p>Copies ou clones de l'interface officielle </html>[[fr:hardware:perifericos:kempston_joystick]]<html>.</p>
   </div>   </div>
  
Línea 54: Línea 63:
   <div class="content-body" style="margin-bottom: -10px;">   <div class="content-body" style="margin-bottom: -10px;">
     <ul>     <ul>
-      <li><strong>Fabricant / Origine :</strong> Inconnu</li>+      <li><strong>Fabricant / Origine :</strong> Siren Software (Manchester, Royaume-Uni) [Identifié par l'analyse de préservation du PCB]</li>
     </ul>     </ul>
   </div>   </div>
Línea 60: Línea 69:
   <div class="drive-grid-container">   <div class="drive-grid-container">
     <div class="drive-card">     <div class="drive-card">
-      <!-- FOUR IMAGES ALIGNED IN A SINGLE LINE -->+      <!-- QUATRE IMAGES ALIGNÉES SUR UNE SEULE LIGNE JUSQU'À LEUR EXPANSION LIGHTBOX -->
       <div class="gallery-four-inline">       <div class="gallery-four-inline">
         <div class="img-frame"><a href="#c1"><img src="/lib/exe/fetch.php?media=hardware:perifericos:KempstonJoystickInterfaceClone_01_Top.jpg"></a><span class="img-label">Boîtier Sup.</span></div>         <div class="img-frame"><a href="#c1"><img src="/lib/exe/fetch.php?media=hardware:perifericos:KempstonJoystickInterfaceClone_01_Top.jpg"></a><span class="img-label">Boîtier Sup.</span></div>
Línea 68: Línea 77:
       </div>       </div>
     </div>     </div>
 +  </div>
 +  <div class="pcw-subtitle-box">Description, Contexte et Histoire de la Préservation</div>
 +  <div class="content-body">
 +    <p>L'unité clonée illustrée sur cette page correspond exactement à la **"Siren Software Joystick Interface"**, commercialisée activement à la fin des années 80 au Royaume-Uni par la maison de matériel et d'utilitaires **Siren Software** (dirigée par Philip et Michael Davenport, basée à Manchester). Ce périphérique était extrêmement populaire à l'époque car il était distribué à l'origine dans un emballage vert vif très voyant avec des lettres blanches, devenant ainsi le clone compatible Kempston le plus répandu pour la gamme Amstrad PCW 8256 et 8512.</p>
 +    <p>Comme Amstrad avait omis en usine tout port pour manette de jeu afin de réduire les coûts professionnels, Siren Software a comblé ce créneau en concevant une interface économique et robuste qui se branchait directement sur le bus d'extension latéral à 50 broches. Son grand avantage concurrentiel résidait dans sa conception purement électronique <em>Plug and Play</em> : elle ne nécessitait aucun logiciel ni pilote résident dans le système d'exploitation CP/M. De plus, le fabricant a implémenté un ingénieux "hardware hack" physique en intégrant <strong>deux ports DE-9 parallèles câblés en miroir</strong> dans le boîtier. Cela permettait d'avoir deux joysticks connectés simultanément pour les jeux multijoueurs coopératifs (comme <em>Match Day II</em>), partageant électriquement la même adresse de bus de données en parallèle.</p>
   </div>   </div>
  
 +  <div class="pcw-subtitle-box">Architecture Électronique et Mappage du Port I/O 09Fh</div>
 +  <div class="content-body">
 +    <p>Au niveau des circuits intégrés logiques traditionnels de la série TTL (74xx) visibles sur le PCB supérieur et inférieur, la carte fonctionne comme une passerelle électronique directe vers le microprocesseur Zilog Z80 :</p>
 +    <ul>
 +      <li><strong>Mappage du Port E/S :</strong> La logique numérique du décodeur d'adresses surveille les lignes logiques de contrôle du PCW et s'active exclusivement lorsqu'elle lit l'adresse d'Entrée/Sortie fixe standard de Kempston : <code>09Fh</code> (Équivalente à <code>159</code> en format décimal).</li>
 +      <li><strong>Logique Active à l'État Haut (1) :</strong> Contrairement à d'autres standards de joystick de la plateforme (comme Cascade ou Spectravideo, qui fonctionnent avec une logique inverse active à l'état bas), le standard Kempston et ce clone de Siren Software renvoient un <strong>'1' binaire</strong> lorsqu'une action physique est exécutée. En état de repos, le port <code>09Fh</code> renvoie un octet propre <code>00h</code>. Le tampon à trois états de la carte ouvre le canal et bascule l'état des commutateurs mécaniques directement sur le bus de données du PCW lorsque le logiciel exécute l'instruction de lecture <code>IN A, (09Fh)</code>.</li>
 +    </ul>
 +
 +    <p><strong>Matrice de Mapeo de Bits sur le Port 09Fh :</strong></p>
 +    <table class="tech-table">
 +      <thead>
 +        <tr>
 +          <th>Bit du Bus</th>
 +          <th>État Physique à l'État Haut (1)</th>
 +          <th>Fonction Assignée du Joystick (Norme Atari)</th>
 +          <th>Broche Physique Connecteur DE-9</th>
 +        </tr>
 +      </thead>
 +      <tbody>
 +        <tr>
 +          <td><strong>Bit 7</strong></td>
 +          <td>0 (Fixe)</td>
 +          <td>Ligne non utilisée / Réservée</td>
 +          <td>—</td>
 +        </tr>
 +        <tr>
 +          <td><strong>Bit 6</strong></td>
 +          <td>0 (Fixe)</td>
 +          <td>Ligne non utilizada / Réservée</td>
 +          <td>—</td>
 +        </tr>
 +        <tr>
 +          <td><strong>Bit 5</strong></td>
 +          <td>0 (Fixe)</td>
 +          <td>Ligne non utilisée / Réservée</td>
 +          <td>—</td>
 +        </tr>
 +        <tr>
 +          <td><strong>Bit 4</strong></td>
 +          <td>1</td>
 +          <td>Bouton de tir principal (<strong>FIRE</strong>) enfoncé</td>
 +          <td>Broche 6</td>
 +        </tr>
 +        <tr>
 +          <td><strong>Bit 3</strong></td>
 +          <td>1</td>
 +          <td>Direction de la manette <strong>HAUT</strong> (Up) active</td>
 +          <td>Broche 1</td>
 +        </tr>
 +        <tr>
 +          <td><strong>Bit 2</strong></td>
 +          <td>1</td>
 +          <td>Direction de la manette <strong>BAS</strong> (Down) active</td>
 +          <td>Broche 2</td>
 +        </tr>
 +        <tr>
 +          <td><strong>Bit 1</strong></td>
 +          <td>1</td>
 +          <td>Direction de la manette <strong>GAUCHE</strong> (Left) active</td>
 +          <td>Broche 3</td>
 +        </tr>
 +        <tr>
 +          <td><strong>Bit 0</strong></td>
 +          <td>1</td>
 +          <td>Direction de la manette <strong>DROITE</strong> (Right) active</td>
 +          <td>Broche 4</td>
 +        </tr>
 +      </tbody>
 +    </table>
 +  </div>
 +
 +  <div class="pcw-subtitle-box">Support Logiciel et Émulation de Préservation</div>
 +  <div class="content-body">
 +    <p>Étant donné qu'il s'agissait du standard de contrôle par manette le plus répandu, la quasi-totalité du catalogue de jeux vidéo d'action commerciaux écrits pour le CP/M Plus du PCW incluait nativement la routine de lecture directe vers le registre du port <code>09Fh</code> dans leurs sélecteurs de contrôle périphérique. Actuellement, ce comportement matériel est pleinement pris en charge de manière virtuelle dans les émulateurs de préservation numérique <strong>CP/M Box (Habisoft)</strong> et <strong>Joyce (John Elliott)</strong>, ainsi que reproduit fidèlement par des portes logiques matérielles dans le Core officiel Amstrad PCW de la plateforme <strong>MiSTer FPGA</strong>.</p>
 +  </div>
 </div> </div>
 </html> </html>
  
fr/hardware/perifericos/kempston_joystick_clones.1778738192.txt.gz · Última modificación: por jesus