LNXSpectrum y las expansiones de memoria para Spectrum y clones Sistemas emulados por el LNXSpectrum A modo de introducción Buscaba más información sobre el Spectrum LEC y terminé encontrando estos datos en la WEB https://wiki.ilnx.cz/doku.php/lnxspectrum:memorymap del emulador LNXSpectrum en lenguaje checo, y me decidí por traducirla totalmente. Trata de todos los sistemas emulados por el LNXSpectrum, empezando por el 48k, seguido del 128k, los clones checos Didaktik Gamma 80k y 192k, el Troller 80k y el LEC 528k. De los cuales trataremos a continuación. Expansión de memoria El procesador Z80 puede direccionar solo 64k de memoria. Por lo que no se requiere paginación de RAM para todos los modelos de 48K. Los primeros 16 KB los ocupa la ROM, y el resto de 48K lo llena la RAM. Solo requiere paginación los modelos de más de 48K de RAM. El ZX Spectrum 128 y +2 tienen la paginación de memoria extendida más compatible. Para las versiones +2A/B y +3, la paginación es la misma, incluso tienen otros modos que permiten All RAM. Desafortunadamente, en lo que a la compatibilidad de estas máquinas, se retrasan en otras áreas (sincronización, puertos, bus del sistema). Por eso, el ZX Spectrum 128 y +2 se toman como modelos de compatibilidad. El más común, sin embargo, es el de 48K (ya sea el clásico "gomas" o el Spectrum +). En las siguientes descripciones de diseño de memoria, la ROM siempre se asigna a las direcciones 0-16383, si es más grande, está paginada. La RAM nunca se ralentiza a menos que se indique lo contrario. La RAM Video es una página de RAM desde la cual el ULA lee el contenido de la pantalla, siempre se ralentiza y siempre tiene un tamaño de 16k. Aunque se describe como Video RAM, en realidad, los datos de la imagen están solo en los primeros 6912 bytes, el resto permanece libre. ZX Spectrum 48K Tiene solo 48K de RAM, por lo que no se requiere de paginación. La RAM se asigna a 16384-65535. La ROM está en la dirección 0-16383. Por su simplicidad, a menudo fue víctima de varias extensiones de memoria caseras (por ejemplo, extensiones como la de Lamač o Troller). ----- | 2 | |---| | 1 | |---| | 0 | |---| |RO | ----- R0 - ROM 16 KB 0 - RAM Video 16 KB 1, 2 - RAM 32 KB ZX Spectrum 128K y +2 El ZX Spectrum 128 contiene una bonita RAM de 128K y una ROM de 32K. Las páginas de ROM en las direcciones 0-16383, y la RAM en 16384-65535. La RAM se fija en el rango 16384-49151 (páginas 5 y 2), en el rango 49152-65535 todas las páginas de RAM (0-7) se cambian escribiendo en los bits 0-2 en el puerto 32765 (7FFD). Por lo tanto, las páginas 2 y 5 de la dirección 49152 se pueden reasignar, aunque estén mapeadas en las direcciones 16384-49151. La ROM se asigna de acuerdo con el bit 4 (0 = ROM extendida, 1 = ROM ZX48 clásica). La ULA puede usar la página 5 estándar o una alternativa en la página 7 como RAM Video. Cambia con el bit 3. Para una mayor compatibilidad con el ZX48, la paginación puede bloquearse permanentemente escribiendo un valor de 1 a bit 5. En este caso, la paginación no liberará un reinicio completo de la computadora. --------------------------------- | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |---|---------------------------- | 2 | |---| | 5 | |---|---- |RO |R1 | --------- R0 - ROM (128) R1 - ROM (la clásica del ZX Spectrum 48k) 0, 2, 4, 6 - RAM 1, 3, 5, 7 - RAM ralentizada por la ULA 5 - RAM Video, 7 - RAM Video alternativo ----------------------------------------------------------------------------- |Puerto 32765 (7FFD) | |---------------------------------------------------------------------------- | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |---------------------------------------------------------------------------- |nada|nada|Prohibición|Número de página ROM|Videoram|Número de página RAM | | | |paginación |(dirección 0-16383) |en 5/7 |(dirección 49152-65535)| ----------------------------------------------------------------------------- Didáctica Gamma 80K Este es un clon checoslovaco, que fue producido por Didaktik Skalica y estaba oficialmente disponible en las tiendas de esa época. Contenía la misma ULA Ferranti que el ZX Spectrum 48k. Gracias a eso, tiene el mismo tiempo que el original. Se instalaron chips RAM defectuosos (pero también más baratos) de 64k en el ZX Spectrum 48k, pero solo se usó la parte que estaba bien. Entonces instalaron chips perfectos en el Gama, y ​​así se ganaron otros 32k adicionales. La memoria está asignada en las direcciones 32768-65535, el chip MHB 8255 y su puerto C (0 bits) se encargan de la conmutación. Una de las formas de cambiar de memoria es con OUT 127, 0/1, pero existe el riesgo de que cambie los modos de otros puertos. El otro método es OUT 95, 0/1 (el puerto C debe configurarse como salida - OUT 127,0, el registro de control no se ve afectado, por lo que no hay riesgo de alterar otros puertos). La desventaja de la paginación en el Gama es que cambia el amplio rango de memoria (32768-65535). Esto también es un problema para los programas escritos en código máquina. Además, para los programas escritos en Basic, la versión anterior del 87 se bloqueaba si el programador olvidaba establecer la RamTop en 32768 e intentaba repararlo desde el BASIC. Y si no lo olvidaba, le quedaba poco espacio para su programa. Afortunadamente, esto no fue un dilema importante, porque el uso de RAM extendida del Basic está sobrevalorado de un modo algo extraño. Desde la versión 88, este problema también se ha resuelto con un truco (al cambiar, la rutina en ROM se encarga de copiar el contenido de una página a otra, hasta la RamTop). --------- | 2 | 4 | |---|---| | 1 | 3 | |---|---- | 0 | |---| |RO | ----- R0 - ROM 16K 0 - RAM Video 16k 1, 2 - RAM 32k 3, 4 - RAM alternativa 32k ZX Spectrum 528k (Lamač) Según Lamač, hay muchos tipos de expansiones de memoria. La memoria al menos puede llegar a 80k, pero también hay versiones con 528 kB. Esta variante mayor es la que emula el LnxSpectrum. El cambio se lleva a cabo escribiendo en el puerto 253, donde se selecciona el número de página que queremos asignar al espacio 0-32767. El bit 7 en este puerto determina si se conectará la RAM extendida o si se conectarán la ROM y la Video RAM. El número de página está escrito en los bits 6 a 3, el bit 0 es un LED controlado por software (no lo encontrará en el emulador :)). En algunos casos, este puerto puede interferir con el chip de audio AY. Nadie sabe cuántos ZX Spectrum 48k hay modificados de este modo, las instrucciones sobre cómo hacer este ajuste se han publicado en varias revistas, como Microbases o Radioaficionados. El problema con la extensión de Lamač es que hay demasiadas variantes. No son tan solo diferentes expansiones de RAM (hay esquemas con 80, 112, 144, 272, 304, 336 y 528 kB), encima hay versiones en las que se reemplaza la ROM con RAM protegida contra escritura, o una versión que permite el uso de 2 Video RAM similares a la del 128k. Todo esto significa que el software para este tipo de extensión puede no ser compatible entre cada versión. ----- | 2 | |---| | 1 | |---|---------------------------------------------------------------- | 0 | 4 | 6 | 8 | 10| 12| 14| 16| 18| 20| 22| 24| 26| 28| 30| 32| 2 | |---|---------------------------------------------------------------- |RO | 3 | 5 | 7 | 9 | 11| 13| 15| 17| 19| 21| 23| 25| 27| 29| 31| 1 | --------------------------------------------------------------------- R0 - ROM 16K 0 - RAM Video 16k 1-32 - RAM 512k ----------------------------------------------------------------------------- |Puerto 253 (FD) | |---------------------------------------------------------------------------- | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |---------------------------------------------------------------------------- |Desconecta ROM + VideoRAM y|El número de página de|nada|nada|LED controlado| | asigna RAM alternativa |la RAM adjunta | | |por software | ----------------------------------------------------------------------------- ZX Spectrum 80k (Troller) Según Troller, la expansión de memoria es de 32k de RAM añadidos al ZX Spectrum 48k. En este caso, la memoria se agrega a las direcciones 0-32767 y se cambia escribiendo al puerto 255. El valor puede ser arbitrario, al escribir en este puerto el modo cambia del original (ROM + VideoRam 0-32767) al alternativo (RAM 0-32767), y mediante ese mismo método se vuelve al modo anterior. La peculiaridad de esta modificación es que el modo se cambia solo una instrucción más tarde, por lo que es posible cambiar desde el código en ejecución en la página cambiada, por ejemplo, de la siguiente manera: out (255), a ; independientemente del valor en el registro A, la escritura inicializa el interruptor ret ; esta instrucción se ejecuta antes de cambiar nop ; esta instrucción ya no se ejecutaría, se paginaría Desafortunadamente, también me preocupa que haya otras variantes con pequeñas diferencias. Sospecho que me encontré con una variante activada en el puerto 253, o incluso sin retrasar una instrucción (pero puede que no se haya llamado Troller, ha pasado mucho tiempo :)). ----- | 2 | |---| | 1 | |---|---- | 0 | 4 | |---|---- |RO | 3 | --------- R0 - ROM 16k 0 - Ram Video 16k 1,2 RAM clásica 32k 3,4 RAM alternativa 32k Didáctica Gamma 192K Este clon fue creado por un entusiasta que quería mejorar Didaktik Gama 80, especialmente para hacerlo compatible con el ZX Spectrum 128, y también tuvo éxito. Este modelo incluye el circuito de audio AY. ROM 32k (contenido igual que el ZX Spectrum 128), DRAM 64 kB (contiene VideoRam, por lo que se ralentiza con el chip ULA), con las páginas 1, 3, 5 y 7 (5 = VideoRam, 7 = VideoRam alternativo ) La página 5 se refleja en 16384-32767. También hay un SRAM de 128K. Las páginas 0, 2, 4 y 6, la página 2 se refleja en 32768-49151. Todas las páginas se asignan a las direcciones 49152-65535, la página se selecciona por el puerto 32765 (7FFD). La conmutación es compatible con la del ZX Spectrum 128. Solo la mitad de la SRAM (64k) se usó de esta manera. Toda esta parte de 64k (páginas 0, 2, 4 y 6) puede reemplazarse en su totalidad por otros 64k (páginas 8, 9, 10 y 11), gracias a lo cual tenemos acceso a 192k de RAM. Y ese es un número muy bueno. El intercambio de la mitad de la SRAM se realiza en el puerto 255, bit 0. Al intercambiar este bit, intercambiamos las páginas: 0 por 8, 2 por 9, 4 por 10, 6 por 11, con 2/9 reflejado en el espacio 32768- 49151. Entonces, cambiar algo en el puerto 255 cambiará todo el espacio de 32768-65535. Y esta es nuevamente una característica del Didktik Gama 80 original. Entonces, con una pequeña modificación del software para Didaktik Gama 80 (reemplazando OUT (127), X con OUT (255), X) ejecutaremos el software para Didaktik Gama 80 en este clon. No habrá más de 50 de estas máquinas en el mundo, este es un asunto muy raro. El sitio web oficial donde se podía comprar el Gama 192k en forma de kit parcial (se necesitaba el Didaktik Gama original para el ensamblaje) ya desapareció por completo, pero incluso en el 2017 se ensamblaron algunas piezas de este modelo. ----------------------------------- |0\8| 1 |2\9| 3 |4\10| 5 |6\11| 7 | |---|------------------------------ |2\9| |---| | 5 | |---|---- |RO |R1 | --------- R0 - ROM 128 R1 - ROM 48 1, 3, 5, 7 - DRAM, ralentizado por la ULA 5 - RAM Video, 7 - RAM Video alternativo 0, 2, 4, 6 - primera mitad del SRAM 8, 9, 10, 11 - segunda mitad del SRAM ------------------------------------------------------------------------------ |Puerto 32765 (7FFD) | |----------------------------------------------------------------------------- | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |----------------------------------------------------------------------------- |nada|nada|Prohibición de|Número de página ROM|VideoRams|Número de página RAM| | | |paginación |(dirección 0-16383) |5/7 |(dir. 49152-65535) | ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ |Puerto 255 (FF) | |----------------------------------------------------------------------------- | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |----------------------------------------------------------------------------- | nada |Paginación SRAM primera/segunda mitades | ------------------------------------------------------------------------------ lnxspectrum / memorymap.txt · Última modificación: 2018/08/29 16:45 por: Lanex Para cerrar SPARROW 48K (República Checa) El Sparrow 48K (antes conocido como Sparrow LITE) es una placa base de Jiiirija destinada a reemplazar las placas defectuosas de Spectrum y Spectrum +, en las que el ULA o el procesador Z80 aún funcionan. Para este propósito, es compatible con todos los chips ULA y los pines del conector también están diseñados para montarse en las carcasas originales. En comparación con las máquinas 48K originales, Sparrow ofrece algunas mejoras. Por ejemplo, la salida de video es compuesta en vez de TV modulada. La VRAM y la RAM también están integradas en un solo chip SRAM. La ROM se coloca en una EPROM Flash de 128K, por lo que puede elegir entre 8 tipos diferentes con interruptores DIP. También hay un botón de reinicio. El controlador lógico es el Altera EPM3032 o 3064 CPLD. Su sistema de poder también se mejoró, por lo que produce mucho menos calor residual. El primer prototipo (marcado con 0) se presentó en el Bytefest 2012. Se basó en dos tarjetas separadas, pero lamentablemente, no funcionó en la presentación. El prototipo 1 apareció en 2014 y sí funcionó bien. En el prototipo 2, el circuito inversor se integró en la placa base. El sigte. prototipo 3, recibió un inversor de coste más efectivo y el producto final, la Revisión 4, se basa en eso. El último prototipo se puede actualizar fácilmente con algunas modificaciones a la Revisión 4. Nota: traducido del texto de la WEB - http://tarjan.uw.hu/zxclones_en.htm Y con esto cierro este texto dedicado a todos los sistemas emulados por el LNXpectrum. (c)2020 zx_if1@hotmail.com