ZX Spectrum +2A 128K
Un Z80 escrito desde cero arranca la ROM original del +2A, carga cintas y suena. El aparato está modelado a escala real a partir de un +2A español.
Descarga unos 1,7 MB: emulador, ROM y modelo 3D.
Escribe con tu teclado o pulsa las teclas del aparato.
El procesador: un Z80 escrito desde cero
El corazón es un Z80 a 3,5469 MHz programado en JavaScript sin librerías: todas las instrucciones, también las no documentadas que usaban los juegos (las mitades de IX e IY, SLL, las copias a registro de DDCB y FDCB), y las banderas ocultas, incluido el registro interno MEMPTR. Cada acceso a memoria ocurre en su ciclo de reloj, que es lo que permite imitar la contención de memoria del +2A.
Para comprobarlo se usan las dos pruebas clásicas de Frank Cringle, que comparan millones de combinaciones de instrucciones con un Z80 real.
| Prueba | Resultado |
|---|---|
| zexdoc, instrucciones y banderas documentadas | 67 de 67 |
| zexall, también banderas no documentadas | 67 de 67 |
| Ciclos de reloj ejecutados en cada prueba | 46 734 977 146 |
| Tiempo en Node 22 | unos 95 s, unas 140 veces el original |
Pantalla y memoria

La máquina arranca la ROM original del +2A, cuatro bloques de 16 KB, y reparte sus 128 KB de RAM con los puertos 7FFDh y 1FFDh, incluidos los modos especiales del +2A. La imagen se dibuja a la vez que avanza el haz del televisor: si el programa cambia el borde a mitad de fotograma, como hace la ROM al cargar, salen las rayas de colores igual que en la tele.
| Fotograma | 70 908 ciclos, 311 líneas de 228 |
|---|---|
| Fotogramas por segundo | 50,02 |
| Imagen visible | 320 × 240 píxeles, 256 × 192 de pantalla y el borde |
| Coste en Chrome | 0,31 ms por fotograma |
Sonido: el altavoz y el AY-3-8912
El altavoz se anota en el ciclo exacto en que cambia y el chip de sonido AY-3-8912 del 128K se simula entero: tres canales de tono, ruido de 17 bits y envolvente, con su escala de volumen logarítmica. Todo se calcula cada 16 ciclos y se reduce a la frecuencia de tu tarjeta de sonido. Con el sonido activo, es el reloj del audio el que marca el ritmo del emulador, y así no hay cortes.
| Señal | Esperada | Medida |
|---|---|---|
| La del AY, periodo 252 | 439,8 Hz | 440,3 Hz |
| Altavoz | 1 000 Hz | 1 000,6 Hz |
| Envolvente en diente de sierra | 1 732 Hz | 1 731,7 Hz |
Datacorder: cintas TAP y TZX
El Datacorder lee ficheros TAP y TZX y los convierte en la señal que entraba por el conector EAR, así que la ROM carga como con una cinta de verdad, con sus rayas y su sonido. Con «Carga rápida», los bloques normales entran al instante; si un juego trae su propio cargador, la cinta arranca sola y va diez veces más deprisa.
- Pulsa «Encender».
- Elige un juego en «Juego»: el +2A se reinicia, mete la cinta y elige «Loader» solo.
- Con «Carga rápida» marcada el juego entra en segundos, pero la cinta no suena ni se ven las rayas. Para oír la carga de verdad, desmárcala antes de elegir el juego: tarda lo mismo que en el aparato, casi todos entre uno y cinco minutos.
- Para una cinta tuya: botón «Tu cinta», la tecla ▲ del Datacorder o arrastra el fichero a la página, y con «Loader» marcado en el menú pulsa INTRO.
| Carga rápida | al instante |
|---|---|
| Señal real, como el aparato | 8,3 s |
| Bloque turbo de TZX | la cinta arranca sola |
Juegos incluidos
Que un juego tenga cuarenta años no lo hace libre, así que aquí solo hay juegos que se pueden compartir: sus autores permiten distribuirlos en cualquier web gratuita, son de dominio público o tienen una licencia libre, según la base de datos ZXDB de Spectrum Computing. Todos se han probado en este emulador. También puedes cargar tus propios ficheros, que se leen en tu navegador y no salen de él.
| Juego | Autores | Licencia |
|---|---|---|
| Alter Ego 2011 Acción y puzle | Denis Grachev, Shiru (música) RetroSouls | Distribución libre permitida por el autor |
| Survivisection 2012 Acción · 128K | SaNchez | Distribución libre permitida por el autor |
| Antiquity Jones 2012 Plataformas | Paul Jenkinson | Distribución libre permitida por el autor |
| Join 2011 Acción | Denis Grachev RetroSouls | Distribución libre permitida por el autor |
| SHUTTLEBUG 2012 Laberinto | Dave Hughes Stonechat Productions | Distribución libre permitida por el autor |
| Chopper Drop 2011 Acción | Paul Jenkinson | Distribución libre permitida por el autor |
| Kyd Cadet 2010 Laberinto | Paul Jenkinson | Distribución libre permitida por el autor |
| The Lost Tapes of Albion 2012 Plataformas | Dave Hughes, Dr Thomas Stonechat Productions | Distribución libre permitida por el autor |
| EFMB: Endless Forms Most Beautiful 2012 Plataformas | Dave Hughes, Dr Thomas Stonechat Productions | Distribución libre permitida por el autor |
| Flynn's Adventure in Bombland 2011 Laberinto | Tom Dalby | Distribución libre permitida por el autor |
| Asalto y Castigo 2009 Aventura de texto en español | José Baltasar García Pérez-Schofield | Distribución libre permitida por el autor |
| Marte Necesita Vacas 2004 Puzle en español | Álvaro Alea Fernández, Covadonga Fernández (gráficos) ALEAsoft | GPL Código fuente |
| Aahku al Rescate 2011 Acción en español | Baron Ashler Kabuto Factory | CC BY-SA 3.0 Texto de la licencia |
| F.I.R.E. 1988 Matamarcianos | František Fuka, Michal Hlaváč Fuxoft | Dominio público |
| Galactic Gunners 1987 Matamarcianos | Miroslav Fídler Cybexlab Software | Dominio público |
| Exploding Atoms 1991 Puzle | Jan Froněk, Patrik Rak, Pavel Tichý Proxima Software, Omikron Software | Dominio público |
Si eres autor de alguno de estos juegos y prefieres que no esté aquí, escríbeme a hola@jcalarcon.dev y lo quito.
El aparato en 3D
El +2A está modelado en Blender con un script que genera cada pieza a escala real, 439 × 175 mm, a partir de fotos de un +2A español: el teclado con MAYUSCULAS, BORRAR, EXTRA e INTRO, la Ñ y la peseta de la X, el Datacorder con su casete, los ocho conectores de atrás y los dos joysticks del lateral. Cada tecla del modelo sabe qué tecla del Spectrum es: se hunde cuando escribes y se puede pulsar con el ratón o el dedo.


| Teclas | 58 del teclado y 6 del Datacorder |
|---|---|
| Modelo para la web | 918 KB comprimido, 49 233 triángulos |
| Escena | Three.js; la tele es un modelo genérico sin marca |
Créditos y licencias
- ROM del +2A © Amstrad, que permite distribuirla siempre que no se venda (nota de derechos).
- Los juegos son de sus autores, que figuran con su licencia en la lista de juegos; las fichas y los permisos salen de ZXDB y Spectrum Computing.
- ZX Spectrum y Sinclair son marcas de sus propietarios. Esto es un homenaje sin ánimo de lucro y sin relación con ellos.
- Three.js (licencia MIT) y la tipografía Archivo (SIL Open Font License 1.1), alojadas en esta web.
- Sin cookies ni analítica: las cintas que cargas se leen en tu navegador y no se envían a ningún sitio.
