Clonicos del Spectrum MISTRUM Clon checo del ZX Spectrum 48K. La ROM incluye los tipicos caracteres del alfabeto latino ademas de caracteres con signos diacríticos checos. Debido a que depende del diseño del hardware, cada Mistrum se vera muy diferente uno del otro, ya que cada usuario le pone su propia carcasa y teclado al gusto. El modo de construirlo es de un articulo publicado en la revista checoslovaca Radio Amateur "Amatérské Radio" nr 1/89. A continuacion una traduccion de algunos extractos del articulo publicado en Amaterske Radio, parte de la cual fue publicado años despues en la revista checa "ZX Magazine" y en internet en el blog del mismo nombre. Autores: Milan Pražan y Jaromír Mynařík. Datos tecnicos del MISTRUM Microprocesador: UA880D (Z-80A compatible) CPU - velocidad de reloj: 3.5 MHz ROM: 16k (8x2k o 1x16k EPROM) RAM: 64k Video salida: monocromo, monocromo UHF, color (PAL), color VHF (PAL), opcionalmente RGB Mandos compatibles: CURSOR y SINCLAIR 1. Fuente de poder: 220V/10VA y 5V/2A. Software compatible con ZX Spectrum Teclado de larga duracion Bus de buffer externo E/S separado para cintas de cassette Control de volumen del parlante incorporado interno la EPROM puede ser desabilitada mediante software Video inverso Posibilidad de deshabilitar la ULA interrumpiendo la CPU Botones de RESET y NMI añadidos Bug presente en el hardware del original ULA IC removido Incremento en el rendimiento de la CPU - acelerado en un 3% Exige menos velocidad de acceso a la RAM Los controles han sido cableados para utilizar 3 botons (disparo) y hacer pleno uso de su circuiteria digital y menjorar tambien la functionalidad (pines 5 y 17 usualmente no conectados!). La funcion y cableado del conector J1 es mostrado a continuacion: Pin no. CURSOR Joystick Pin no. SINCLAIR1 Joystick 1 arriba 7 21 no usado - 2 abajo 6 22 F2 ENTER 3 izquierda 5 23 F1 5 4 derecha 8 24 +5v - 5 F3 SPACE 25 no usado - 14 F2 9 6 no usado - 15 F1 0 7 no usado - 16 +5v - 8 no usado - 17 no usado - 9 arriba 4 18 no usado - 10 abajo 3 19 no usado - 11 izq. 1 20 no usado - 12 derecha 2 13 F3 SPACE funcion teclado funcion teclado Otro periferico existente para el Mistrum es un lapiz optico. El firmware del MISTRUM ha sido elaborado en 3 niveles: 1. Una copia exacta del ZX Spectrum. Esta variante apunta primariamente a los usuarios que desean usar MISTRUM principalmente para jugar (y tambien para los ninos). Puede ser configurada para operar como un MISTRUM mediante los sigtes. comandos BASIC: 10 LOAD "ZAVAD-M" CODE 32768 20 LOAD "MISTRUM" CODE 36864 30 RANDOMIZE USR 32768 siempre que ZAVAD-M haya sido ensamblado en codigo maquina empezando en la direccion 32768 (8000 hex)y que el MISTRUM haya sido salvado a cinta como "Bytes" cargados en 36864 (hex 9000). 2. ROM personalizada para productividad. Esta variante apunta primariamente a un uso creativo aprovechandose de programas mas profesionales. Se trata de una ROM con compatibilidad Spectrum, la cual ofrece muchas comodidades para su uso, asi como un juego diferente de caracteres como veremos mas adelante. 3. Version Minima. Apunta a usuarios que desean algo mas "barato". Usa su proio firmware el cual, debido a su tamaño limitado de tan solo 256 bytes, no puede hacer otra cosa que cargar desde cintas, el software funcional tal como el SO y Basic del ZX Spectrum (o incluso algun software de la variante 2 del MISTRUM) y entonces configurar la maquina para que lo ejecute. Y ahora si, pasamos a hablar de... VARIANTE 2: Esta version se creó luego que los usuarios experimentasen con algunas ROMs modificadas del Spectrum, con las cuales se buscaba hacerlo mas comodo y mejor con el fin de superar de paso sus limitaciones. Cabe señalar que si bien le hacen la vida mas facil al usuario en lo que a programar respecta o en la ofimatica, ese no es el caso cuando se trata de juegos, ya que estos a menudo tienen proteccion anti copia. Un metodo de protección contra copia es chequear la ROM del ZX, para su autentificacion ya que impide parcialmente el acceso a cualquier programa por medios "simples". Sin embargo, existen modos de burlar tales metodos anticopia, pero ese no es el tema de este articuló. Mistrum tiene modificaciones y mejoras que ya han sido probadas antes. Los cambios hechos a la ROM son aproximadamente 2.500 bytes, mientras el nuevo juego de caracteres ocupa los ultimos 768 bytes. La mayor parte de la ROM ZX original se ha conservado por razones de compatibilidad. Toda la memoria libre disponible se usó para los cambios a la ROM, especialmente el area de memoria no utilizado al final de la misma. El sistema operativo estándar del Spectrum contiene muchos fallos y tampoco utiliza la capacidad total de la ROM (por ejemplo, la sección de 386EH a 3CFFH). Entre los errores mas mencionados esta la reaccion incorrecta de las interrupciones sin enmascarar (NMI), la ambigüedad al evaluar algunas operaciones matemáticas y otros errores. Además, la edicion de lineas de programas en BASIC no es precisamente la mejor. Dichos fallos no suelen causar problemas insalvables; solo es necesario tenerlos en cuenta y ajustar el programa de acuerdo a ello. Pero, la historia es otra cuando se necesita el NMI, porque este error no se puede omitir ni corregir. Por todas estas razones, en parte, se creó la nueva versión del sistema operativo, en lo sucesivo denominado "Mistrum" (Maestro), que elimina algunos de tales fallos y junto con otras modificaciones, facilita el guardado y edición de programas en BASIC, entre otros beneficios. Las modificaciones respetan hasta donde ha sido posible, la compatibilidad de los programas para ZX con el sistema operativo Spectrum original. Los cambios consisten en lo sigte.: Al encender Mistrum (o tras pulsar el botón Reset) vemos un cambio muy notable en el mensaje inicial en la pantalla: "////(C) '88 Sinclair - CS MISTRUM" asi como la cantidad de RAM libre en bytes como: "RAM = 41523". Se puede volver a ver este mensaje inicial en cualquier momento durante la ejecucion o el tipeado de programas presionando el botón Reset. La memoria libre disponible siempre se actualiza. Además, el botón Reset tiene una gran ventaja sobre la versión estándar, ya que no borra la RAM, pero permite que el programa deje de ejecutarse y pasa el control al bucle principal. Todo el mundo sin duda apreciará la ventaja de este ajuste, ya que el cuelgue o un programa "en bucle" se puede reparar o pausar fácilmente sin perderlo. Otro cambio significativo en comparación con el Spectrum, es el nuevo juego de caracteres, que incluye los caracteres más comunes del alfabeto checo, almacenados en el area de gráficos de usuario (UDG). Ademas todos los informes de error estan en checo, lo que será muy apreciado por los principiantes, especialmente los niños. Las rutinas para el manejo de cinta magnética tambien fueron cambiadas. Tras tipear SAVE, ya no aparece el mensaje original de "Iniciar cinta, luego presionar cualquier tecla", sino que la grabación comienza inmediatamente después de pulsar ENTER. Mistrum solo muestra mensajes sobre el tipo de archivo que se está guardando. En el caso de los otros comandos de cinta, como LOAD, MERGE y VERIFY, se muestra el comando utilizado, con los datos sobre el tipo de archivo, su longitud, dirección de inicio y nombre. Todos estos datos se extraen del encabezado del archivo y permiten reconocer más fácil los programas, especialmente para los usuarios noveles. Por otro lado, eso puede tener efectos indeseables a la hora de grabar o cargar especialmente juegos. Se puede evitar mediante POKE 23739,111. Otro cambio es el funcionamiento del NMI, que es inutil en la version estándar. Aquí, el NMI se implementa del modo estandar de alamcenar en la pila el contenido de todos los registros, incluidos los alternativos. Al final se pone la dirección de retorno del NMI. La direccion de la rutina de servicio NMI se almacena en las variables del sistema, en las direcciones 23728 y 23729 (5CB0H y 5CB1H). Una vez terminado de ejecutar el servicio NMI, la dirección final se recupera de la pila con el contenido original de todos los registros y entonces se regresa al programa interrumpido. El editor ha sufrido cambios muy significativos, y son principalmente la posibilidad de mover el cursor en la línea del área de edición en todas las direcciones, es decir, tambien arriba y abajo. Esta función se habilitó al ampliar el editor original con subrutinas ubicadas en la parte de la ROM originalmente no utilizada. El verificador de sintaxis de líneas BASIC -Entre las enmiendas tenemos que al verificar la sintaxis de líneas BASIC, si se da un error, el cursor se mueva de su posición original al punto donde se halla dicho error; a diferencia de antes cuando el error dado es señalado con un signo de interrogación parpadeante, pero si es una línea muy larga, intentar su corrección consume tiempo. Además, al sistema operativo se le han añadido nuevos comandos que son para la comodidad del usuario. ¡Estos comandos solo se pueden usar en modo directo, por lo que no se las puede añadir a un programa! Un carácter (con o sin parámetros) es siempre usado para invocarlas. Los comandos extra son: ! - reinicio el reinicio se usa para ir wl estado inicial definido y limpiar la RAM. # n - edita línea n sirve para editar líneas del programa, una vez encuentra la dirección de la línea n, la la pone en el área de edición como lo hace EDIT. $ - numeros de linea automatico permite numerar líneas automáticamente con un valor inicial de 10 y un incremento de 10. Este comando $ inicializa sus variables a 10, 10 por defecto que almacena en el área BÚFER DE IMPRESORA, ubicada en las direcciones: 5B06H (23302) - número de línea inicial; 5B08H (23304) - incremento. % - continua la numeración automática después de una interrupción, funciona de manera similar a $, excepto que no inicializa las variables, sino que usa las que ya existen en dichas direcciones. Es posible alterar dichos valores con POKE. Innecesario decir que todo se borra cuando la impresora es usada, poniendo los valores a cero. ' - detiene la numeracion ademas de esta orden, los otros modos son: - eliminar el número de línea que aparezca recientemente pulsando la tecla DELETE (CAPS + 0) y presionar ENTER dos veces. - al producirse un error en la línea en curso (después de editarla y pulsar ENTER). @ - renumera el listado pero no las lineas de salto como son GOTO y GOSUB. Sus valores iniciales por defecto son: comienzo 10 con incremento 10 & - lista de variables y matrices. Este comando muestra todas las variables numéricas y de cadena utilizadas en el programa. También se listan las matrices numéricas y de cadena, incluidas las dimensiones simples. Al último estan los bucles FOR...NEXT. Sin embargo, esta útilidad solo funciona si ya se han creado variables es decir, el programa se ejecuto con RUN. ¡Hasta entonces, las variables aún no existen! Para eliminar líneas desde x a y, es posible utilizar una rutina implementada en esta versión ubicada en la dirección 15500. Tipeamos por ejemplo: PRINT USR 15500,30,250. Con eso se eliminan las lineas especificadas desde la 30 a la 250. De manera similar, es posible invocar el programa de arranque ZAVAD-ZX, que reconfigura el Mistrum a la versión estándar de Spectrum (solo con maquinas Mistrum). La reconfiguración se puede invocar con el comando PRINT USR 15414 Enter. Todas estas extensiones contribuyen a una mayor comodidad del usuario en la programación y seguro encontrarán seguidores. La funcionalidad de todos estos comandos esta considerablemente limitada por el espacio de memoria libre en la EPROM. Y para cerrar... En mi caso, todo empezo cuando los de RAmsoft decidieron implementar el Didaktik Kompakt a su emulador REAL Spectrum, pero en su pack de ROMs que ofrecian no habia la del Didaktik. Buscando entonces me di conque no habia mucha info al respecto. Finalmente consegui la D80.rom y la Kompakt la cual era de mas de 16k pues incluia tambien la D80 asi que no podia leerla con REALS. Necesitaba una de 16k y me tope con una llamada msrrow.rom (actualmente se la encuentra en speccy4ever como dgama90.rom) que en ese momento pensaba, era la ROM del D. Kompakt. Al ejecutarla aparece el sigte mensaje centrado en la pantalla: "////(C) 1990 Didaktik Skalika Cs" todo en fondo azul con texto en amarillo y tras prueba y error fui dandome con la existencia de sus comandos extras pero sin entender lo que algunos de estos hacian, ya que no tenia info al respecto. Años despues cuando finalmente descargue la ROM del Mistrum, me di conque habia trabajado todo el tiempo con una version de esta ultima sin saberlo. Mas tarde aun, descubri los articulos en internet sobre Amaterske Radio y ZX Magazine, con lo que finalmente supe cuales eran todos los comandos extras que el Mistrum y el Didaktik 90 me ofrecian. Lo que si no parece tener ninguna de estas ROMs, es el juego de caracteres en checo que se menciona en el magazine; o la ROM preservada carece de ello, o habia que cargarlos desde alguna cinta de instalacion, la Zavad-M quizas. O es eso o estan en la ROM, pero hay que cargarlos mediante POKEs. No lo se. Excepto eso, las ROMs estan plenamente operativas y eso que el REALS no emula realmente un Mistrum, sino un Didaktik. Si bien los comandos extras no pueden ser incluidos en un listado, la funcion USR para borrar lineas si puede ser incluida dentro de un programa. Por otro lado, la funcion @ para renumerar carece de la posibilidad de elegir sus parametros de linea e incremento o si existe algun POKE para ello al menos esto no es mencionado en ningun lado. Acaso alguna utilidad que pueda expandir tal funcion. Volviendo a los caracteres checos, habra que definirlos tal como se ven en la fig. 72 de la pag. 27 de Amaterske, para luego salvarlos a cinta o disco y cargarlos cuando uno los necesite. Y eso es todo lo que he podido experimentar al respecto. Al no tener un TAP con las rutinas de configuracion del Mistrum, nada mas puedo probar. Nota: Para los que quieran ver mis fuentes, el magazine Amaterske Radio esta en Archive.org, el enlace de su traduccion al ingles se encuentra en la Lista de clonicos del Spectrum de la Wikipedia y la ROM esta en uno de lo packs de MESS ahora MAME. Aparentemente MAME (MESS) es el unico que lo emula. (c)2022 zx_if1@hotmail.com