SERIE CLONICOS DEL SPECTRUM ROMs modificadas del +2 La ROM +2c de NaMCo Toca ahora hablar de la ROM +2c modificada por NamCo. I - la ROM de NamCo " Spectrum 128 ROM +2C. Documentacion - escrita por NaMcO (namco@netc.pt) ===================================================================== La ROM +2C para Spectrum 128 es copyright de nadie, porque a nadie le importa mas el Speccy excepto a nosotros, programadores de la vieja escuela. Un gran 'FUCK YOU' a Amstrad por haber arruinado completamente las ROMs del +3 con fallos y basura inutil, fallos que nisiquiera un programador aficionado hubiese cometido. Todos los cambios fueron hechos por NaMcO con su propio codigo, a mi no me importa si lo robas o lo usas para ota cosa, solo diviertete como yo. No voy a darle las gracias a nadie por hacer posible este proyecto - lo hice todo por mi propia cuenta. Y bueno, talvez al Dr. Ian Logan y al Dr. Frank O'Hara por escribir el 'Complete Spectrum ROM Disassembly.' NaMcO namco@netc.pt 05-11-2000 Que rayos es todo esto del +2C ROM? ----------------------------------- En pocas palabras es una nueva ROM para tu 128K Speccy o +2 con unos cuantos fallos (toneladas) corregidos y algunas otras cosillas cambiadas. Talvez no pueda correr algunos programas raros en BASIC, pero cualquier cosa en codigo maquina basado en la vieja ROM correra con esta rom tambien. Total, quien programa en BASIC ahora, excepto para hacer cargadores de c. m.? Y el motivo? ------------ Ya se yo que hay montones de ROMs ahi fuera que hacen esto, eso y aquello, pero el hecho es que la mayoria son 48K solamente y muchas no sirven con la ROM 0 del 128K Speccy. Hay una en especial que me gusto mucho y me inspiro a hacer mi rom, y es la modificada por Andrew Owen, pero por Dios, por que rayos te metes a joder completamente el teclado? Y por que diablos tiene ese horrendo (C) mensaje? Encima, la ROM de Andrew no funciona con mi 128K asi que me decidi a crear una que si lo haga, con muchos fallos corregidos (algo REALMENTE tenia que quedar fuera, el 128K usa algunas posiciones de la ROM 1 que no puedo tocar - Que hace en la dirección 00019??) y asi surgio la +2C. Y en cuanto al nombre +2C, pues como el ultimo modelo fue el +2B, entonces... Que tan compatible es? ---------------------- Digamos que es 100% compatible con las ROM 0 y ROM 1 de 128K (no). No hay comando COPY, y LLIST es un simple LIST ahora. No creo que haya algo mas cambiado de modo que afecte la operacion de un programa. Lo probe con cerca de 100 juegos y demos y todo corrio perfectamente. Cambie PLOT, DRAW y CIRCLE para usar la pantalla completa, pero luego note que muchos programas usaban esas rutinas y dejaban de funcionar apropiadamente, asi que lo deje todo como estaba. Esto es descrito extensivamente despues. Inclui dos nuevos comandos, FREE y READER, reemplazando a COPY y LPRINT que tambien describo mas abajo. FREE te da el monto de RAM libre para el BASIC y READER es un muy (MUY) simple lector de cabeceras de cinta. Ahora, dime, con que mas te metiste? -------------------------------------------- Pues, a cotinuacion una lista detallada de lo que cambie en esta ROM. Puede que haya olvidado algunas cosas por listar ;) - Inclui un POKE de 16-bits. Donde estaba su cabeza, Sir Clive? POKE NN,XX es ahora posible y muy utilisimo. Es una verguenza que se requiera esta ROM para tales operaciones o sale "B Integer out of range" en otros Speccis. Ejemplos: POKE 16384,65535 POKE 16384,200 (aun funciona :P) - DRAW, PLOT y CIRCLE no fueron cambiados ya que descubri que muchos programas tenian muchos problemas por eso (slap Sir Clive por su 176-pixeles). Como sea, si uds. quieren habilitar los 192 pixeles con PLOT, DRAW y CIRCLE: - sin cambiar la rutina PIXEL-ADD (8874), solo modificamos estos bytes en las ROM 1 y ROM 0: RAM Dir Dato a cambiar --------------------------- ROM1 3872 3E BF C3 22 AC (estos ya estaban ahi) ROM1 8911 20 0F ROM1 8937 20 0F ROM0 14066 7F - Cambiando la rutina PIXEL-ADD (8874) (de lejos mas facil), modificamos estos bytes en la ROM 1: RAM Dir Dato a canbiar --------------------------- ROM1 8875 BF Si cambias la rutina PIXEL-ADD, los juegos que la usan como Freddy Hardest tendra algunos de sus graficos desubicados y efects hechos pedazos. Si haces la primera modificacion sin tocar PIXEL-ADD, Freddy Hardest funcionara y muchos otros juegos tambien, pero los programas BASIC y algunas adventuras de texto que llamen a PLOT (8933) correran incorrectamente. Tengo mas compatibilidad en estas ROMs porque no uso mucho estas rutinas, y si las uso es desde codigo maquina y puedo canbiar dichos valores en mis propios programas. - Inclui el comando FREE en lugar de COPY, pra dar el monto de memoria libre. - Cambie la rutina RESET del 48K, para que solo use 1 byte (0). Se parece mas al del 128K ahora. Es inutil, pero me gusta el efecto. - Corregido el fallo de CHR$ 8. Si haces PRINT AT 0,0;"X";CHR$ 8;"Y" en una ROM normal, la posicion no es manejada apropiadamente y afecta los atributos en pantalla. - Corregido el fallo de CHR$ 9. Esta rutina falla en guardar la posicion de salida, asi que PRINT "X";CHR$ 9;"Y" te da "XY" en vez de "X Y". - Corregido el fallo de STR$ (gracias Owen). La rutina falla al imprimir expresiones como "2"+STR$ 0.1 correctamente debido a un valor dejado en la pila del calculador, el cual debia ser borrado por la rutina PRINT-FP. - Corregido el fallo de division el cual causa que valores como 1/10 o 1/1000 sean redondeados incorrectamente. - Corregido el fallo bien conocido de INT -65536. Da -1 en vez del valor correcto de -65536 - Corregido el manejador de teclado ante el mensaje "scroll?". No mas lios con el modo extendido o video verdadero. - Corregido el fallo de doble almacenamiento reportado en la pag. 172 del manual de desensamblado de la ROM. Por lo menos en mi version. - Los colores de SAVE son siempre AZUL+CYAN y no hay pausa entre la cabecera y los bytes. Lo hice porque me gusta mas asi. - Los colores de LOAD son siempre AZUL+BLANCO y la se~al cabecera es capturada mucho mas rapido, permitiendo la carga de bloques con una corta cabecera. - Acelere las rutinas de repeticion de las teclas para que sea mas disfrutable el modo 48K. Si lo consideras demasiado rapido, cambiamos las direcciones 4721 y 4722 en la ROM 1. La 4721 es REPDEL y la 4722 es REPPER, usualmente con 35 y 5 respectivamente. - Removi la letra del codigo de error en los mensajes. Normalmente uno suele ver "K Invalid colour, 0:1", ahora se ve asi "Invalid colour, 0:1". - Acelere la ejecucion de MAIN-4 por unos pocos T-STATES, esto podria causar algo de diferencia en programas BASIC (dificil - pero mejor que lo sepan). - Inclui un lector muy basico de cabeceras de cinta que solo lee BASIC o CODE. No hubo sitio para mas. Reemplace LPRINT con READER, el cual no funciona en modo 128K ya que este tiene sus propias rutinas de impresion y ya no quise redirigirlo todo a la nueva rutina de lectura de cabeceras. Una tipica lectura de cabeceras nos da: PROG 0,16534 - programa BASIC, corre linea 0 con 16534 bytes largo CODE 16384,6912 - CODE a partir de dir. 16384 con 6912 de largo CODE 32768,16388 - CODE a partir de dir. 32768 con 16388 de largo PROG 9999,6539 - programa BASIC, corre linea 9999 con 6539 de largo - Cambie unos cuantos mensajes: - "Start tape, then press any key" - "Press REC & PLAY, then any key" - "scroll?" - "Scroll?" - "(C) 1982 Sinclair Research Ltd" - "(C)1982, (C)1986 Sinclair Research ROM 1.5 Spectrum 48" y en el mode 128K - " ROM 1.2 Spectrum 128" Esos numeros de version son solo una forma de control para asi saber yo la ROM que estoy usando cuando uso un emulador en mi PC. - Y por ultimo, un monton de reportes de error (incluidos unos pocos del 128K). Aparte de los mensajes de copyright que modifique en ambas ROMs (me gusta mejor asi de simple), algunos mensajes de error los cambie con el fin de darme mas espacio para incluir unos pocos bits de codigo. Algunos de los cuales se inspiran obviamente en la ROM de Andrew Owen. Corregi ademas unas pocas llamadas a la ROM 128K, aparentente la ROM 128 usa al 48k mas que a si misma... hahahahahah. Hice otros cambios mas de seguro, pero no me acuerdo de todo lo que hice :P Cosas que quise agregar pero no tuve espacio ni paciencia --------------------------------------------------------- - un LLIST que nos de un listado limpio de los programas BASIC, sin codigos de color, lineas ocultas, etc etc. - un lector de cabeceras decente con nombre, soporte de DATAs, muestre el largo y nombre de las variables, etc, etc. Todo eso lo escribi pero tomaba 385 bytes y solo me quedaban 70 libres en toda la ROM :P - un CIRCLE en tiempo real. Era de 650 bytes de largo, mismo problema que el de arriba :/ Fallos conocidos ---------------- - FREE no es 100 % depurrado pero ya que funciona y los problemas que causa son menores, ya no lo corregi. Si tipeas FREE seguido de ENTER para ejecutarlo y luego provocas un error de sintaxis tipeando "PLOT" y ENTER. El mensaje "NONSENSE in BASIC" (sin sentido en basic) o "Unknown Error" en mi nueva ROM aparecera. He hecho varias pruebas, y me parece inofensivo. Si alguien desea que depure eso (si), solo haganmelo saber. - No es exactamente un fallo, pero FREE no funciona en el modo 128K. La computadora aun cree que es COPY y se ejecuta la rutina COPY de la ROM 128k. Tal vez lo cambie un dia, si es que tengo algo de tiempo para reprogramarlo. Lo mismo con LLIST y LPRINT que ejecutan solo las rutinas propias del 128k. - Igual que lo anterior, READER tampoco trabaja en modo 128K por el mismo motivo - la ROM 128K tiene sus propias rutinas (lo cual es bueno a lo sumo). Esas tonterias que la gente suele escribir al final --------------------------------------------------- Muchas gracias a mi novia, a diferencia de muchos otros, ella me apoya si yo necesito unas pocas horas para mi mismo para trabajar en mis cosas. Gracias por ser tan grande. Te amo, a ti y a mi Speccy. Gracias a Amstrad por haber arruinado tanto a nuestro amado +3. Lo hicieron una completa pieza inutil de basura, y me motivaron a reprogramar mis ROMs solo para tener "0 OK, 0:1" cuando tipeo "SPECTRUM" en modo 128K. Me pueden explicar por que rayos desperdiciaron cerce de 8K de RAM con basura inutil y su estupido "HI I'M A +3" (hola soy un +3)? De haber sido uds., le hubiese dado algo como un decente DOS con directorios, con soporte para IDE como ya alguien hizo y quiza hasta un multifaz en la ROM. O tal vez hubiera incluido 8K de RAM en vez de esa ROM desperdiciada y DEJAR LA PAG. 7 EN PAZ PLEASE???? Que diablos es eso de LOAD "T:"?! No hubiera sido mejor LOAD* o LOAD# o LOAD$ o algo asi? Mueranse por favor. Gracias a Andrew Owen por modificar su ROM 48k e inspirarme a mi para hacer mi propia ROM y hacerlo mejor. Pero me da verguenza: - Ese mapeado de teclado nada funcional - ese horrible FONT - el incluso mas feo mensaje de copyright Herramientas usadas durante la reprogramacion de mi ROM ------------------------------------------------------- - Hex Workshop 3.0 by bpsoft www.bpsoft.com, on the PC. - 128K Spectrum Monitor de Pedro Jose Rodriguez Larra~aga. Su monitor es toda una obra de arte - congratulaciones. - GENS3 Assembler de HISOFT. Uds. saben que es lo mejor. - x128. Necesito decir mas? NaMcO namco@netc.pt 05-11-2000 " II - Mis apreciaciones Donde encontrar la ROM. Como siempre, la ROM puede ser encontrada en el repositorio de ROMs de la WEB Speccy4ever. Pero el texto cuya traducccion ofreci antes y que deberia de acompa~ar dicha ROM no existe actualmente en el enlace del costado, es mas bien un enlace al texto de la ROM de A.Owen. So alguien desea leer el texto original, todavia se lo puede encontrar en un 'snapshot' de Speccy4ever de su antiguo repositorio que ha sido preservado en el Wayback Machine de Archive.org. https://web.archive.org/web/20021208054051/http://www.zxspectrum.it/128.htm Como usarla A diferencia de la ROM de A.Owen esta es un solo fichero de 32k. Una vez se ha conseguido, solo puede ser probada por emuladores que trabajen con ROMs completas, por lo que no correra en FUSE o x128 a menos que uno lo divida en dos partes. En mi caso la he usado con REALS, reemplazando ya sea al 128k o +2. Una vez seleccionada obtenemos en pantalla: | __________________ | | |128_+2c_____////_| | | | Tape Loader | | | | 128 BASIC | | | | Calculator | | | | 48 BASIC | | | | Tape tester | | | +-----------------+ | | | | (c) 1982,1986 Sinclair Research Ltd ! | ROM 1.2 Spectrum 128 | Si seleccionamos la opcion 48 Basic, tenemos en pantalla el sigte. mensaje: | (c) 1982,1986 Sinclair Research Ltd ! | ROM 1.5 Spectrum 48 | En cambio si en el modo 128k tipeamos SPECTRUM, nos respondera con: Ready, 0:1 De hecho este sera el mensaje que obtendremos cada vez que se ejecute algo. De modo similar al prompt que dan otros Micros. Compatibilidad con discos Es plenamente compatible con Opus Discovery, los Microdrives y el Beta128. El Wafadrive solamente en modo 48k. El +D y Disciple requieren ir primero al modo 48k, cargar el DOS y entonces volver al Basic 128k para acceder a los comandos de disco correctamente. Se cuelga con Didaktik y Kempston Dos. No tengo modo de saber si es compatible o no con la Timex FDD. FREE neutraliza al Disciple, por lo que tras usarlo hay que hacer RUN para cargar de nuevo el DOS y accesar al disco otra vez. Y eso es todo lo que he podido probar con esta ROM. (c)2023 zx_if1@hotmail.com