BASIC en Jupiter Ace

Todo sobre la creación, diseño y programación de nuevo software para
nuestro Spectrum

Moderador: Sir Cilve Sinclair

Responder
Avatar de Usuario
antoniovillena
Nonamed
Mensajes: 1164
Registrado: Dom Ene 09, 2011 8:55 am

BASIC en Jupiter Ace

Mensaje por antoniovillena » Vie Ago 24, 2012 10:52 pm

Le he echado un vistazo al emulador de Jupiter Ace para spectrum y me preguntaba si es muy complicado hacer lo contrario partiendo de la ROM del ZX81 (tiene la misma capacidad que el Jupiter Ace). Veo tantas similitudes en ambas máquinas que no entiendo porqué no hay nada hecho, aunque solo sea compatible a nivel BASIC.
Imagen

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Re: BASIC en Jupiter Ace

Mensaje por mcleod_ideafix » Sab Ago 25, 2012 12:55 am

Se puede intentar partiendo de la ROM de ZX81, sustituyendo la rutina a la que se llama en RST 10h por una que imprima en el mapa de pantalla del Jupiter ACE. Lo que puede que sea más complejo es que el ZX81 no usa el código ASCII para representar caracteres, mientras que el ACE sí (bueno, salvo que reordenes el juego de caracteres del ACE...)
Web: ZX Projects | Twitter: @zxprojects

Avatar de Usuario
flopping
Nonamed
Mensajes: 1093
Registrado: Vie Jul 16, 2010 9:54 am

Re: BASIC en Jupiter Ace

Mensaje por flopping » Dom Ago 26, 2012 10:03 am

antoniovillena escribió:Le he echado un vistazo al emulador de Jupiter Ace para spectrum y me preguntaba si es muy complicado hacer lo contrario partiendo de la ROM del ZX81 (tiene la misma capacidad que el Jupiter Ace). Veo tantas similitudes en ambas máquinas que no entiendo porqué no hay nada hecho, aunque solo sea compatible a nivel BASIC.


Pues creo que es una idea cojonuda, como bien dices las similitudes son muchas, bueno de hecho sabras que los diseñadores del jupiter fueron los mismos que los del ZX81 y participaron tambien en el spectrum, asi que no deberia de ser tan dificil la conversion, fijate si son iguales en hard, que los interfaces del ZX81 servian perfectamente en el Jupiter, simplemente reordenando las lineas del bus, por medio de un adaptador.
Y como bien dice Mcleod, habra que reorganizar los caracteres y la impresion de pantalla, pero posible yo creo que si que es, si te atreves con el tema adelante, a ver que sale de todo esto, por cierto, ¿que software seria compatible con ese futuro basic, el del ZX81 quiza?, y ya puestos, meter algo de hard para manejo de color, tipo spectrum no estaria tampoco mal, salu2.
No me hago responsable de mis post pues estan escritos bajo la influencia del alcohol y drogas psicotropicas, debido a la esquizofrenia paranoide que tengo.
(C) 1982-2016, 34 años de ZX Spectrum.
http://www.va-de-retro.com/ un foro "diferente"

Avatar de Usuario
antoniovillena
Nonamed
Mensajes: 1164
Registrado: Dom Ene 09, 2011 8:55 am

Re: BASIC en Jupiter Ace

Mensaje por antoniovillena » Dom Ago 26, 2012 2:41 pm

Hola flopping

Te comento lo que he estado pensando, todavía no he programado nada. No me gusta el vaporware así que nadie se haga ilusiones.

Para la nueva placa quiero poner en la serigrafía de los jumpers JP9 y JP10 (los que controlan cual de las 4 ROMs en un 27c256 está activa) los textos BASIC/FORTH y FUENTE, de tal forma que se programen 4 ROMs con todas las combinaciones posibles. Como fuente habría dos opciones, la normal y una alternativa más bonita que decidamos entre todos. En esta web hay un listado grande de fuentes de 8x8. http://kofler.dot.at/c64/font_01.html (fijáos que hay 23 páginas).

Como ROM de partida al final voy a coger la gosh wonderful, que es una ROM de spectrum (16K) no de ZX81 (8K). Hay varias razones por la que es mejor opción:
-El spectrum se extendió más, así que hay más posibilidades de portar listados BASIC.
-El juego de caracteres incluye mayúsculas y minúsculas.
-Están arreglados los fallos de la ROM original de spectrum.
-Se pueden escribir los comandos caracter a caracter, no como en spectrum que te tienes que saber los tokens de memoria.
-Aunque inicialmente parece muy complicado reducir 16K en 8K, al final no creo que sea tan difícil. Hay que eliminar toda la funcionalidad de dibujar en pantalla y de colores, por ejemplo BORDER, PAPER, INK, DRAW, PLOT, etc... Cuando se encuentre una orden de este tipo hay que ignorarla y seguir con el programa en BASIC.

Por otro lado quiero que llegar a lo máximo en compatibilidad, tendré que respetar las direcciones de las variables (que están en 5C00) y por tanto tengo libres el rango 4000-5BFF. Se me ha ocurrido que si me falta espacio puedo descomprimir allí parte de la ROM y anular las escrituras en esta zona de los comandos POKE. Por poner un ejemplo, podría tener 5K de ROM sin comprimir y 3K comprimidos. Al descomprimirse (por ejemplo en 6K) tendría una ROM equivalente a 11K usando sólo 8K. El mapa de caracteres estaría comprimido en ROM y se descomprimiría en memoria de video directamente.

Sería un proyecto más o menos grande y lo dividiría en dos partes. En una primera parte reduciría la ROM gosh wonderful al mínimo que puede aprovechar el Jupiter Ace, quitando color y gráficos, pero manteniendo la máquina destino el spectrum. En una segunda parte tendría que adaptar las rutinas al Jupiter Ace (con máquina destino Jupiter Ace) y si no me cabe todo comprimir como he dicho antes. Adaptar las rutinas significa que por ejemplo la orden PRINT escriba 1 byte en la memoria de video del Jupiter Ace, en lugar de 9 bytes (carácter y atributos) en la del spectrum.

Y sí, se intentaría que fuese lo más compatible posible al spectrum de tal forma que se pueda cargar una cinta de spectrum en un Jupiter Ace. En la práctica esto sucederá con muy pocos listados (un 5% ó un 10% por decir algo) ya que aunque el 95% de los programas BASIC se ejecuten sin cuelgues no tiene mucho sentido que estés viendo un juego que use órdenes de dibujado (PLOT, DRAW, CIRCLE) y no puedas ver nada de lo que se pinta. Sólo sería útil rescatar programas que funcionen en sólo texto o juegos que se basen en sprites UDG (y no usen órdenes de dibujado como las antes citadas).

Edito: Lo del hard de manejo de color creo que complicaría mucho las cosas, aunque todo sería cuestión de verlo. Habría que meter otra memoria de 2K (6116) porque aunque nos sobre el Kb alto de la memoria de video para atributos no se puede acceder a carácter/atributo a la vez. A la salida no podremos sacar video compuesto directamente. O bien sacamos RGB o bien le metemos un AD724 (que va con un cristal y varios componentes más) y encarecemos el coste.
Imagen

Avatar de Usuario
flopping
Nonamed
Mensajes: 1093
Registrado: Vie Jul 16, 2010 9:54 am

Re: BASIC en Jupiter Ace

Mensaje por flopping » Dom Ago 26, 2012 4:30 pm

Vale, entonces lo que quieres es hacer un spectrum llamemosle "recortado", aunque no se si tendra mucho sentido, puesto que para hacer un spectrum, ya tenemos el clon, ¿no?, bueno matizo un poco, digamos que lo que quieres es que en la misma placa, podamos tener un Jupiter Ace, un semi spectrum y alguna variante mas, solo con cambiar la rom, (en este caso la seleccion de la rom se haria por medio de los jumpers), ¿se acerca eso mas a tu idea?, lo comento por que ya se han hecho pruebas al contrario, el convertir un spectrum en un Jupiter Ace, yo tengo un par de rom´s que lo hacen, incluso el convertirlo en un ZX80 y un ZX81.

La verdad es que el tema es interesante y lo de utilizar la ghost wonderful, creo que seria un acierto, por todo lo que has explicado, yo de hecho uso esa rom en mi clon, por sus mejoras con respecto a la original, ahora como bien dices habria que ver como reducirla y si es factible, lo de comprimirla, si no queda mas remedio, pues vale, pero perderiamos algo de memoria ram en el proceso, pues estaria ocupada por esa porcion de rom que no cabe.

Como bien dices, el proceso no es facil ni se va a realizar en un par de dias, pero con tiempo, puesto que yo creo que nadie tiene prisa, es posible que lo puedas realizar, asi que, si tienes ganas, pues adelante, aqui estaremos para ayudar en lo que podamos, salu2.
No me hago responsable de mis post pues estan escritos bajo la influencia del alcohol y drogas psicotropicas, debido a la esquizofrenia paranoide que tengo.
(C) 1982-2016, 34 años de ZX Spectrum.
http://www.va-de-retro.com/ un foro "diferente"

Avatar de Usuario
antoniovillena
Nonamed
Mensajes: 1164
Registrado: Dom Ene 09, 2011 8:55 am

Re: BASIC en Jupiter Ace

Mensaje por antoniovillena » Dom Ago 26, 2012 5:15 pm

No se trata de hacer las cosas para que tengan sentido. Mi única motivación es aprender cosas nuevas y por la satisfacción de construir mi propia máquina. El objetivo que pretendo es meterle BASIC al Jupiter Ace. Pero en lugar de escribir un intérprete desde 0 (que sería más complicado) me gustaría basarme en el de otra máquina ya existente y así matamos dos pájaros de un tiro: es un BASIC conocido por todos y los programas que se hagan en BASIC en el Jupiter podrán ejecutarse en un spectrum (aunque muy pocos del spectrum podrán ejecutarse en un Jupiter Ace). Lo contrario ya existe (una ROM de Forth para spectrum), así que tampoco se trata de hacer algo muy revolucionario.

lo de comprimirla, si no queda mas remedio, pues vale, pero perderiamos algo de memoria ram en el proceso, pues estaria ocupada por esa porcion de rom que no cabe


No se perdería RAM porque el rango que va a usarse para alojar código de la ROM es $4000-$5B00, exactamente el mismo de la memoria de video del spectrum. Esta memoria no va a hacer falta porque todas las rutinas que escriban en pantalla deben cambiarse para que lo hagan en la memoria de video del Jupiter Ace ($2400 y $2C00). De todas formas habría que parchear el comando POKE para anular las escrituras en este rango ($4000-$5B00), por si algún programa BASIC escribe directamente en video. Y si te preguntas porqué no usar estos casi 7K para el BASIC y dar más espacio incluso del que ofrece un spectrum 48K, mi respuesta es que quiero conservar las direcciones de las variables del sistema (que están en $5C00) para dar más compatibilidad, porque algunos programas BASIC del spectrum acceden a dichas variables mediante PEEKs y POKEs.

Te he hecho caso y he intentado implementar color en el Jupiter Ace.
http://retrolandia.net/foro/showthread. ... d=98#pid98

No sé dónde alojar la memoria de atributos (por favor McLeod échame una mano). La memoria de video sólo tiene 2 copias de sí misma, lo malo es que la segunda copia se usa para evitar la contención (no se pierden ciclos CPU pero se pierden píxeles en la pantalla). Mi idea inicial es ubicarla es la segunda copia (en la fast) sin que la memoria de caracteres deje de usarla. Vamos que habría que escribir primero los atributos y luego los caracteres, ya que al escribir en los atributos se escribe a la vez en las 2 memorias, con la idea de no perder compatibilidad con el Jupiter Ace. El problema de esto es que siempre que se escriba un atributo se pueden perder píxeles (no hay contención en esa zona) y cada vez que queramos cambiar un atributo sin alterar el carácter hay que hacer 2 escrituras y 1 lectura, en lugar de 1 sóla escritura.

Edito: Para que no haya confusión, las 3 memorias de video que menciono son: 1. Memoria de caracteres (Z5). 2. Memoria de atributos (Z6). 3. Memoria de definición de caracteres (Z7), que de hecho no la menciono.

Edito2: He vuelto a modificar los esquemas, e inicialmente la memoria de atributos está direccionado como la fast de la memoria de caracteres, a falta de que McLeod me sugiera algo mejor.
Imagen

Avatar de Usuario
Scooter
Freddy Hardest
Mensajes: 711
Registrado: Jue Nov 11, 2010 10:17 pm

Re: BASIC en Jupiter Ace

Mensaje por Scooter » Lun Sep 17, 2012 12:09 am

Me ha gustado bastante lo poco que he probado en el simulador. Como todo buen "intoxicado" por el basic agradezco encontrar un entorno amigable.
Aquellos chalados en sus viejos cacharros...

Avatar de Usuario
antoniovillena
Nonamed
Mensajes: 1164
Registrado: Dom Ene 09, 2011 8:55 am

Re: BASIC en Jupiter Ace

Mensaje por antoniovillena » Lun Sep 17, 2012 12:33 am

Scooter escribió:Me ha gustado bastante lo poco que he probado en el simulador. Como todo buen "intoxicado" por el basic agradezco encontrar un entorno amigable.


Gracias. Pues tengo ganas de probarlo en mi clon. En B/N tiene que funcionar puesto que ya lo he probado en emuladores, otra cosa es que me funcione con el mod de color.
Imagen

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 24 invitados