TODO SOBRE: EXPANSIÓN DE RAM Y ROM LEC A modo de introducción He decidido esta vez reunir todas mis notas sobre la ROM LEC 80k y 528k, tanto lo que encontré en internet así como lo que he podido experimentar con los emuladores. En la internet Si buscamos en la web de Speccy4ever, encontraremos en su sección Custom-made ROM for Spectrum 48k (cuyo enlace es: http://zxspectrum.it.omegahg.com/_CMS.htm) entre otras ROMs, dos LEC: la LEC v1.6 u 80-lec.rom y la LEC v2.4 528k con soporte para CP/M 2.22, junto con información acerca de ambas ROMs y el TZX del CP/M para poder instalarlo en un cartucho Microdrive. En World of Spectrum también está dicho programa para descargar con algo de info al respecto. O lo había, tras su actualización solamente está mencionado pero no puedo accesar a la info, está desaparecida, supongo que habrá que verla en Archive.org. Aparte de esto, no hay mucha información al respecto salvo que es mencionada en la web de Philip Kendall - The Spectrum ROMs collection, la web de Yarek: 8bit Projects For Everyone, la página checa de wikipedia: Rozšířená syntaxe Sinclair BASICu. En la web sobre el SAM Coupé con enlace https://sam.speccy.cz/mzbasic.html, menciona un BASIC para la 80lec.rom. También es mencionado en: 80K RAM per ZX Spectrum 48K - Facebook (en italiano) Y en el foro: RetroWikiPortalRetroInformáticaOrdenadores SinclairSoftware Spectrum ¿ CP/M para Spectrum 48 K ? En: https://www.retrogaminghistory.com/forum/retrogaming/famiglia-sinclair/14321- espansione-ram-80k-ram-rom-custom-lec-80k Así como en: Ampliación de memoria 320K - https://foro.speccy.org/viewtopic.php? t=4776 Hasta ahí todo cuanto he podido encontrar sobre el LEC, ahora paso a... La cosa real Lo que nos dice Zeljko Juric al respecto: 80-LEC.ROM INFO FILE -------------------- He aquí otra ROM, cuya fuente es deconocida para mí, esta es una lista de sus opciones, descubiertas usando un desensamblador. 1) Menú inicial Tras arrancar, aparece un menú ofreciedonos: - BASIC : Entra al Basic - MONITOR : Entra al monitor - BOOT : Carga y ejecuta 'run' en el Microdrive 2) Teclado Destokenizado En esta ROM el teclado ha sido destokenizado. La rutina de tokenizado es buena: las palabras clave se tipean tanto en matúsculas como en minúsculas, y un espacio entre GO y TO (o GO SUB, DEF FN etc.) ya no es necesario. El espacio tampoco es necesario tras un comando (así, PRINT1 es aceptado), excepto cuando el argumento empieza con una letra (PRINTA no es aceptado). Si se desea el teclado tokenizado, basta con usar la sentencia FORMAT (ver más adelante). 3) Editor extendido Durante la edición de una línea larga, es posible moverse con el cursor arriba y abajo. 4) 80K soportados Esta ROM tiene un comando extra (MOVE) para el Spectrum con memoria expandida a 80 K (ver abajo). Desconozco quien es el creador de tal expansión, pero me parece que no es la expansión más usual de 80 K, en la cual la parte alta de 32 K de RAM es paginada. Es decir, que de acuerdo a la ROM desensamblada, en esta expansión los PRIMEROS 32 K están paginados (dirección 0-32767) usando el bit 7 del puerto 253, con el sigte. significado: b0=0 : configuración estandar (0-16383 ROM, 16384-32767 RAM estandar) b0=1 : 0-32767 RAM extra de 32K Si alguien quiere cambiar el puerto usado, y desea soporte para la paginación de los 80K estandar, puedo dar la info necesaria via E-mail. 5) Nuevos comandos BASIC: Esta ROM tiene 4 nuevas instrucciones BASIC (para ser más preciso, un nuevo uso de sentencias ya existentes): CAT --- CAT sin parámetros accede al monitor, en caso contrario opera del modo usual. FORMAT ------ FORMAT "k" activa o desactiva el teclado tokenizado; en otros casos opera como se espera. ERASE ----- ERASE "i" borra las variables extra de la Interface 1, canales extendidos, etc. sin afectar al programa BASIC en memoria; las otras formas de ERASE operan por igual. MOVE ---- Esta es la instrucción más compleja de todo el nuevo set, con la sigte. sintaxis: MOVE ",","" Mueve bytes desde a . Donde y pueden ser "r" con el significado de "estandar ROM/RAM" y "d" que alude a "extra 32K de RAM". Prueben por ejemplo (en un emulador): MOVE "r0,6144","r16384" Todas las expresiones son de cadena. Las otras formas de MOVE operan del modo usual. Su sintaxis tal vez parezca extraña (parámetros como parte de una cadena), pero es obvio que el autor quería preservar la sintaxis original: MOVE ,. 6) Monitor El monitor tiene los sigtes. comandos (todos sus parámetros excepto para H, son números hexadecimales): B Salida en caliente al BASIC (de ser posible) D Muestra los núm. hex. ingresados en notación decimal G Ejecuta una subrutina en la dirección G (RET volverá al monitor) H Muestra los núm. decimales en notación hex. M Hex y ASCII volcados desde la dirección dada (espacio para salir) R Ver y/o cambiar registros AF, BC, DE, HL, IX y SP. S Parcha la memoria desde la dirección dada usando el editor hex. (pulsa espacio para salir del editor). 7) Una nueva rutina de interrupción La rutina estandar de interrupción ha sido cambiada, así que presionar SYMBOL SHIFT, SPACE y B simultaneamente nos enviará al the monitor (excepto si las interrupciones están desabilitadas, o si el modo IM 2 es usado sin llamar a RST 56). Además, el bug del NMI ha sido corregido (NMI es redirigido via NMIADD si es <> 0). 8) Otros cambios - Cambio en los ajustes iniciales (color de la pantallla, el click del teclado, la velocidad de autorepetición). - Una nueva fuente de texto. - Los bugs de CHR$ 8 y CHR$ 9 han sido corregidos. - El bug "WAIT_KEY" durante la aparición del mensaje "scroll?", etc. - El bug en CLOSE (crash con CLOSE #4 sin el Interface 1 si el flujo 4 no está abierto). - La demora es menor entre la cabecera y el bloque durante el acto de salvar algo. Y eso es todo. So alguien desea más info extra, mándeme un E-mail al correo: zjuric@utic.net.ba De la página original de WOS - Hardware - la ficha del LEC: Nombre del dispositivo: LEC Memory Extension Año: 1987 Fabricante: Jiri Lamac (Checo) Tipo de Hardware: RAM/ROM Precio original: deesconocido Notas: Un sistema de memoria acoplable para los modelos 48K y clones. Tres versiones del LEC estuvieron disponibles: 80K, 272K y 528K de memoria RAM. Jiri creó su propia ROM a la que llamó LEC ROM. Esta corrige algunos bugs bien conocidos en la ROM original del Spectrum, además tiene un editor BASIC destokenizado y unos pocos comandos para copiar datos entre bancos de RAM. Dicha ROM es opcional, ya que el formato CP/M y otros programas trabajan con la ROM original. Este aditamento venía con un software en cinta (CP/M 2.2 para la Extension de Memoria LEC). Puntaje: 9.80 (5 votos) En emulación El 80-LEC es emulado por MESS/MAME y LnxSpectrum para Linux. El 272k-LEC está MIA al momento de escribir estas notas. El 528k-LEC es emulado a modo experimental en X128w y por el Jspeccy-0.93.jar. Este último menciona lo sigte.: LEC es una espansión de memoria diseñada en 1987 por Jiri Lamac para el Spectrum 48k para proporcionarle 528k de RAM. Jiri escribió su popia ROM llamada 'lec rom'. Soluciona los errores conocidos de la ROM. Proporciona un editor de Basic mejorado y comandos adicionales para copiar datos entre los bancos de RAM. icha ROM es opcional. CP/M y los programas que usan el LEC funcionan igual con la ROM normal del Spectrum. La versión de CP/M v2.2 de Jiri puede emplear las unidades de Microdrive como medio de almacenamiento, usando su propio formato de cinta. Para saber más busca LEC en WOS. 80-LEC Fue una de muchas ROMs que descargué de la Internet hace tiempo y la única que hallé de la serie LEC. Sin mayor info que la del TXT de Zeljko Juric, decidí probarla con REALSpectrum. Una vez activada me da el menú de la pantalla inicial: ------------------ | 1 basic | | 2 monitor | | 3 boot | ------------------ (c)1987 LEC. ROM V1.6 RAM 80K 1 - tal como dice ahí, se va de frente al Basic 2 - para acceder al monitor incorporado de base 3 - para autoejecutar un cartucho de microdrive Una vez en Basic, nos encontramos con un cursor "L" parpadeante en la zona baja. El monitor nos muestra un * con el prompt "C" esperando un comando. Tal como dice la nota de Juric, podemos trabajar en dos modos, tipeando todo letra a letra, o al estilo Sinclair. Nada mal como alternativa a la ROM del 48k sin expandir. Sin la RAM extra, las opciones "r" y "d" de MOVE actúan sobre la RAM única del ZX. En Mess/Mame se la encuentra bajo el nombre de Spectrum 80k. Para probarla tal cual en X128w hay que renombrarla como su equivalente 528k. Y en el Jspeccy, cargándola como cartucho de ROM. De hecho solo X128w y Jspeccy la emulan correctamente. Mess la ejecuta como lo haría REALS u otro emulador, o sea sin la RAM extra. Para probar que la RAM extra ha sido emulada basta con tipear y correr: 10 MOVE"r0,1694","d20000" 20 STOP 30 MOVE"d20000,1694","r16384" En el 80-LEC la opción "d" acepta los valores de 0 a 32768, más allá de eso se porta como "r" accesando a la RAM normal. Si la RAM extra está presente hacer RUN dará OK. Pero sino, aparecerá un galimatías en pantalla ya que "d" se portará entonces igual que "r". 528-LEC Esta la encontré mucho más tarde junto con el TAP del CP/M 2.2 para microdrives. Tras iniciarla, nos muestra el mismo menú que el 80 LEC, pero el mensaje de fondo es: (c)1988 LEC. Omega +528Kb RAM Esta vez al ir al Basic se nos saluda con un cursor cuadrado parpadeante. De hecho, el cursor no cambia ni para indicar cuando se está en modo "G". El monitor nos muestra una pantalla con información y el mismo cursor cuadrado abajo. Parece tener más instrucciones que antes, para salir hay que tipear "quit". Al menos eso es lo que pasa cuando se usa con REALS o X128w. en este último ya es posible usar los comandos extras de la RAM ampliada. En el caso de JSpeccy, éste sólo emula la expansión de RAM pero no la ROM, pues siempre aparece el mensaje original de Sinclair, pero nunca el de la LEC. Sin embargo es posible cargarla en Jspeccy como un cartucho de ROM. Una podría esperar que con mayor RAM la limitación de los 32k desaparece y ya nos es posible tipear algo como "d70000" o "d444000", pero no, en vez de eso parecen haber 15 bancos de 32k todos con letras de la "a" a la "o", es decir ahora la "d" es solo un banco más de entre varios a escoger. 272-LEC No existe esta ROM, pero podemos suponer por lo antes visto en las otras LEC, que debía tener 7 bancos de 32k, desde la "a" hasta la "g". LEC DDR 80K Existe en X128w como su última opción en su lista de sistemas emulados, pero no es el LEC-80, parece ser un Spectrum normal con la extensión LEC de 80k. Ninguna info de cómo aprovechar tal memoria extra de tenerla presente. Sistemas de disco. Fue pensado para funcionar correctamente con el ZX Microdrive. Acepta al Wafadrive, Opus Discovery, Speccy-Dos, Disciple y +D. Se cuelga con Beta Disco 48 en x128w. En el caso de Beta128, no puede volver del Trdos al Basic, debido a que no acepta RETURN tipeado letra a letra, pero si lo hace con los demas comandos. Eso no pasa con el Trdos modificado 505 (CZ). No permite el catálogo de disco con CAT y algunos comandos del Didaktik D80. Software para el LEC MZ Extended Basic (sam.speccy.cz) Es una alternativa moderna y compatible con el GW-BASIC de IBM PC, al Basic Sinclair. Fue convertido por Sinsoft, en 1987, para el Spectrum 80k. MZ BASIC para el ZX Spectrum fue publicado en cinta de cassette junto con otros programas, varias ROMs modificadas y toda la documentación (en lengua Checa) con relación al Spectrum 80k. Tres versiones fueron hechas, pero solamente la segunda ha sido preservada. La tercera versión soporta acceso a disco (DOS y subdirectorios). El Spectrum 80k fue una expansión de memoria muy popular en la Checoslovakia a fines de los 80s. Fue usada como una expansión económica allram (RAM en lugar de la ROM) y que inició la linea de expansiones caseras hasta llegar a los 528KB. El Spectrum 80k no es compatible con la expansión de East London Robotics SP80. De la página original de WOS - Hardware - la ficha del CP/M: Título completo: CP/M 2.2 for the LEC Memory Extension Año de publicación: 1987 Autor: Jiri Lamac (Checo) Tipo de máquina: ZX Spectrum 48K Númbero de jugadores: 1 Control: por teclado Tipo: Programación en General Idioma: inglés Publicado Originalmente: como Freeware Disponibilidad: sí Protección: Ninguna Comentarios: Requiere de la LEC Memory Extension. Para cerrar: Extraido y traducido del texto en PDF de Tomas “Omikron” Franke. Algo de historia: La extensión de memoria LEC fue desarrollada por el (entonces) joven diseñador Checo Jiri Lamac a comienzos de 1987, cuando el chip DRAM 41256 (256K*1) se volvió disponible en los paises vecinos. Permite mapear la RAM rápida con toda el área de memoria del Z80 y correr CP/M 2.2 en Microdrives, Beta Disco o disco RAM. Era facil de construir en casa pero se necesitaba tener habilidad con las soldaduras ya que todos los chips de memoria 4332 tenían que ser sacados de la placa madre del Spectrum y soldar en su lugar el 41256. Era necesario añadir pequeños circuitos de control y encajarlos een el espacio entre la ULA y el Z80, así toda la modificación cabía incluso en el viejo "gomas" 48K. Beta Disc hack: Es necesario para un acceso directo al controlador del floppy, para el CP/M BIOS o programas de formateo "customizado", etc. ya que so oculta los puertos FDC y la ROM sombra tan pronto como una instrucción es dada desde la RAM. La modificación misma bloquea el cicuito de paginado y despaginado cuando D4=0 es escrito a (A1=0 y A15=0 e iorq=0 y wr=0). Cuando D4=1 es escrito de nuevo, o tras un RESET, dicha característica se interrumpe. Al programador de emuladores: El Microdrive y el Beta deben ser emulados al nivel de puertos E/S, no al nivel de llamadas a la ROM solamente. Esto es porque Jiri Lamac usa su propia rutina y su propio formato de cartucho. Solamente la cinta de CP/M para LEC 272/528 y Microdrive ha sido incluida, de ese modo pueden comprobar si su emulación es buena. Aclaración: Jiri Lamac ha dado su aprobación plena de archivar, usar y distribuir su trabajo por nostalgia a las computadoras de 8 bits de forma gratuita, es decir, siempre que no se busque obtener beneficios con ello y toda la info sobre su autor sea incluida. Contacto al autor: lec@lec.cz Mantenedor del documento: Tomas “Omikron” Franke - tomas.f@volny.cz Extraido de un post de Retrowiki y cacharreo: Jose Luis Sanchez, autor del Jspeccy, menciona un texto sobre el 528k que le enviara Tomas Franke y resulta se aplica también al 80-LEC, pero que Zeljko Juric no mencionó en sus notas. Así que por no ser repetitivo, sólo pondré la info que falta ya que es común al parecer a todas las ROMs LEC. - Mejor RAM test, puede detectar el error en un bit. - Las teclas tienen un más rápido autorepeat - Estando en mayúsculas, con CS + la letra, sale en minúsculas y viceversa. - Se puede accesar al Monitor HEX presionando SPACE+SS+B si habilitamos interrup. IM-1 - Es posible omitir los espacios al tipear, por ejemplo, GOTO en vez de GO TO - Se pueden usar abreviaciones para muchos tokens, por ejemplo bo. para BORDER. Tabla: <= <. <> >= >. ABS ab. ACS ac. AND an. ASN as. AT ATN ATTR a. BEEP be. BIN b. BORDER bo. BRIGHT br. CAT ca. CHR$ ch. CIRCLE ci. CLEAR cle. CLOSE # cl. CLS CODE c. CONTINUE con. COPY cop. COS DATA da. DEF FN d. DIM di. DRAW dr. ERASE er. EXP e. FLASH fl. FN f. FOR FORMAT fo. GO SUB gos. GO TO g. IF IN INK INKEY$ i. INPUT inp. INT INVERSE inv. LEN l. LET LINE li. LIST lis. LLIST ll. LN LOAD lo. LPRINT lp. MERGE me. MOVE m. NEW ne. NEXT nex. NOT n. OPEN # op. OR o. OUT ou. OVER ov. PAPER pa. PAUSE pau. PEEK pe. PI p. PLOT pl. POINT po. POKE pok. PRINT pr. RANDOMIZE ra. READ re. REM RESTORE res. RETURN ret. RND r. RUN ru. SAVE sa. SCREEN$ s. SGN sg. SIN si. SQR sq. STEP ste. STOP sto. STR$ st. TAB t. TAN THEN th. TO USR u. VAL VAL$ v. VERIFY ve. Un emulador que me faltó mencionar es el ZXMAK2, el cual también incluye al Spectrum 48/528k pero en estado Beta y nada más. Para activarlo hay que ir a la pestaña opción VM --> Settings. Esto abre la ventana Machine settings. Ahí elegimos la ULA, ya sea 48k o 128k. De ahí pasamos a la memoria y elegimos LEC 48/528k y la ROM debe quedar fija en LEC. Tras hacer esto aparece la pantalla del LEC 528k y ya podemos cargar el CP/M de la cinta. Aquí no podemos usar microdrives, pero sí discos TRD, si hubiera la versión Betadisco claro está. En suma: Zeljko Juric, cuando escribió sus notas (las únicas publicadas en internet), él no conocía al autor de la ROM LEC. El texto tampoco fue actualizado con el tiempo. Por la info de WOS (tampoco actualizada) uno podría creer que se trataba de un pack de RAM o aditamento tipo interface 1. Pero por la info encontrada en sam.speccy.cz y el documento de Tomas “Omikron” Franke, podemos ver que era una modificación hack al hardware de un Spectrum 48k para convertirlo en un 80k. En cuanto al nombre de las ROMs 80-LEC y LEC24 así como LEC Memory Extension se debe a que el mensaje de la ROM al empezar tiene ese nombre: LEC. Y el correo del autor real Jiri Lamac es precisamente lec@lec.cz. De hecho su propia empresa se llama LEC y aun existe. El nombre correcto es ZX Spectrum 80k, seguido del Spectrum 272k y 528k el último. Usa el puerto #FD como control del paginado de la RAM extra. Y por los diagramas ofrecidos parece que usa 16k de la RAM como RAM video, a menos que esa nota este errada. También parece que es posible modificar un 128k para convertirlo en un 272 o 528 kb. No se nos dice sobre si dicha modificación es posible de hacer también a las máquinas de Timex como el 2048 o el 2068. No hay ninguna mención de si el Betadisco es el 48 o el 128, pero podría ser este último. La única razón de hackear o modificar el Beta disco es solamente para que acceda al CP/M, fuera de eso no hay otra razón. Lo mismo con su emulación. En cuanto al Basic MZ, no he podido hacer que ninguno de los emuladores que aceptan el LEC lo ejecute. Siempre se cuelga. Sería interesante poderlo probar. Ya que el Basic MZ no es cualquier extensión, se trata de dotar al Spectrum del Basic del MZ-700 de Sharp. Bueno pues, eso era hasta probar con LNXSpectrum, el cual sí corre el MZ Basic. Para ello hay que seleccionar el Spectrum 48k + Troller 80k y listo, a cargar el MZ Basic. A ver si alguien se decide a convertirlo o adaptarlo para que corra ya sea en un 128k o siquiera un +3 y sin necesidad del LEC. Tanto el CP/M o el Basic MZ merecen un texto aparte por derecho propio. (c)2020 zx_if1@hotmail.com