[ATARI] Copiador SITRE para juegos en cassette

Software y Juegos para retro-computadores, bueeeno... casi puros juegos :-)
Avatar de Usuario
dogdark
Mensajes: 594
Registrado: Lun Mar 04, 2013 1:36 pm
Contactar:

Re: [ATARI] Copiador SITRE para juegos en cassette

Mensaje por dogdark » Lun Mar 23, 2015 9:01 pm

como dato no se si te podría servir esto pero es del 130xe

Imagen

imagen del disco 2 archivo EXAM4

es el disco demo del 130xe lo tenía guardado como reliquia si te sirve ocúpelo yo de ahí entendí la consulta que hiciste anteriormente en otro post de porque manejábamos el 221 en el 54017, mejor respuesta que esta para ti vitoco.
Adjuntos
demo130xe.rar
(75.63 KiB) Descargado 134 veces

Avatar de Usuario
vitoco
Mensajes: 1970
Registrado: Lun Ene 28, 2013 5:47 pm
Contactar:

Re: [ATARI] Copiador SITRE para juegos en cassette

Mensaje por vitoco » Mié Mar 25, 2015 12:10 pm

Finalmente hice una rutina USR que determina qué bancos están disponibles de la lista que se le entregue, descartando los bancos que direccionan RAM de la base (Buchholz) y los bancos repetidos (Newell). Espero que también se dé cuenta de algunos mods de estas ampliaciones, como el bit negado en Newell y las ampliaciones con chips en piggyback en lugar de reemplazados. Al igual que la rutina original en BASIC, detecta los bancos del 130XE, o bien que no tiene bancos de memoria extendida disponibles en un 800XL estándar, pero además ahora detecta que no hay memoria en un 600XL 8-)

Para probar la rutina, la puse en un programita de prueba:
xmem-basic.png
xmem-basic.png (7.59 KiB) Visto 3854 veces
En emulador, al correr con la ampliación Rambo320, entrega el siguiente resultado:
xmem-rambo320.png
xmem-rambo320.png (3.96 KiB) Visto 3854 veces
Info adicional:
xmem-rambo320-cont.png
xmem-rambo320-cont.png (2.8 KiB) Visto 3854 veces
Yo aún no lo pruebo en el Atari real con Newell original, pero le pido por favor a quien tenga un Atari real con alguna ampliación de memoria, que pruebe usando el programa "XMEM.BAS" incluido en ATR adjunto (viene con DOS 2.5 y una pequeña shell) y comenten acá qué valores les entregó para cada banco detectado.

@SpaceInvader: si puedes probar usando las 2 ampliaciones que construiste y con todas las combinaciones de dips, mejor :mrgreen:

¡Gracias!
Adjuntos
xmem.zip
(8.67 KiB) Descargado 121 veces

Avatar de Usuario
dogdark
Mensajes: 594
Registrado: Lun Mar 04, 2013 1:36 pm
Contactar:

Re: [ATARI] Copiador SITRE para juegos en cassette

Mensaje por dogdark » Mié Mar 25, 2015 10:25 pm

Yo para mañana la puedo probar en mi 256, ahora me voy pa la pega, um abrazo

Avatar de Usuario
SpaceInvader
Mensajes: 217
Registrado: Jue Jul 17, 2014 4:01 pm
Contactar:

Re: [ATARI] Copiador SITRE para juegos en cassette

Mensaje por SpaceInvader » Jue Mar 26, 2015 1:54 am

Bueno, aquí está mi tarea :lolgreen:
Imagen

Saludos.

Avatar de Usuario
vitoco
Mensajes: 1970
Registrado: Lun Ene 28, 2013 5:47 pm
Contactar:

Re: [ATARI] Copiador SITRE para juegos en cassette

Mensaje por vitoco » Jue Mar 26, 2015 9:12 am

SpaceInvader escribió:Bueno, aquí está mi tarea :lolgreen:
Spoiler: MOSTRAR
Imagen
Eh, eh, eh, eh!!! :mrgreen:

Eran exactamente los números que esperaba ver. ¡Muchas gracias, Space! :aplauso:

Sólo falta probar en los Atari reales 130XE, 800XL estándar y 600XL normal y con la ampliación 1064, pero me imagino que en eso los emuladores son suficientes para dar el visto bueno (como los mods con RAM en piggyback que serían Rambo320, excepto la ampliación 1064 que no la he visto explícitamente emulada).

Por lo tanto, creo que con eso se completa la prueba y puedo incorporar la rutina a SITRE (y si alguien quiere utilizarla, puede sacarla del mismo programa de pruebas).

Veremos cómo queda. Les comentaré próximamente...

Avatar de Usuario
dogdark
Mensajes: 594
Registrado: Lun Mar 04, 2013 1:36 pm
Contactar:

Re: [ATARI] Copiador SITRE para juegos en cassette

Mensaje por dogdark » Jue Mar 26, 2015 12:46 pm

a mi me salto una pequeña duda, el sitre esta hecho en basic o en asm???? tanto la v.1 como la v.2?

Avatar de Usuario
vitoco
Mensajes: 1970
Registrado: Lun Ene 28, 2013 5:47 pm
Contactar:

Re: [ATARI] Copiador SITRE para juegos en cassette

Mensaje por vitoco » Jue Mar 26, 2015 1:19 pm

dogdark escribió:a mi me salto una pequeña duda, el sitre esta hecho en basic o en asm???? tanto la v.1 como la v.2?
El cargador de SITRE está hecho en assembler, pero el copiador está hecho en BASIC con muchas rutinas USR en assembler.

¿Se entiende la diferencia?

Avatar de Usuario
dogdark
Mensajes: 594
Registrado: Lun Mar 04, 2013 1:36 pm
Contactar:

Re: [ATARI] Copiador SITRE para juegos en cassette

Mensaje por dogdark » Jue Mar 26, 2015 10:03 pm

si vitoco, me quedo clarito, solo el basic activa el copiador, y el assembler hace todo el trabajo

Avatar de Usuario
vitoco
Mensajes: 1970
Registrado: Lun Ene 28, 2013 5:47 pm
Contactar:

Re: [ATARI] Copiador SITRE para juegos en cassette

Mensaje por vitoco » Jue Mar 26, 2015 10:11 pm

Ya se viene el código fuente. ;)
Ahí verás y comprenderás todo...

Respecto del cambio de la rutina para reconocer los bancos, me di cuenta que SITRE no puede partir en un 600XL, pues la pantalla le quita poco más de 1K de memoria bajo el límite de los 16K (donde comienza la ventana para leer los bancos) y no alcanza ni a hacer los DIM, así que ahora simplemente patalea y se detiene sin intentar buscar bancos.

Avatar de Usuario
dogdark
Mensajes: 594
Registrado: Lun Mar 04, 2013 1:36 pm
Contactar:

Re: [ATARI] Copiador SITRE para juegos en cassette

Mensaje por dogdark » Vie Mar 27, 2015 8:47 am

esperare por el código fuente, por que aun tengo la duda con respecto en donde comienza a usarse el banco para optar el llenado de este, me refiero al 54017, si comienza a aplicarse desde el 177 o para usar todos los bancos coloco el 237, bueno esperaré, así veo como trabaja bien el sitre.

Avatar de Usuario
vitoco
Mensajes: 1970
Registrado: Lun Ene 28, 2013 5:47 pm
Contactar:

Re: [ATARI] Copiador SITRE para juegos en cassette

Mensaje por vitoco » Vie Mar 27, 2015 1:39 pm

dogdark escribió:esperare por el código fuente, por que aun tengo la duda con respecto en donde comienza a usarse el banco para optar el llenado de este, me refiero al 54017, si comienza a aplicarse desde el 177 o para usar todos los bancos coloco el 237, bueno esperaré, así veo como trabaja bien el sitre.
El código fuente no te sirve para resolver esa duda... lo que necesitas es observar la tabla que publiqué, y que ahora vuelvo a agregar actualizada para comparar las diferencias entre los distintos mods:

Código: Seleccionar todo

 Banco | PORTB |        Buch  New  Newl  | D=0     V=0 E=0         B=0 R=1
 SITRE | 54017 | 130XE  holz  ell   ~5   |  7   6   5   4   3   2   1   0
-------|-------|-------------------------|---------------------------------
   0   |  177  |  RAM   RAM   RAM   RAM  |  1   0   1   1   0   0   0   1
   1   |  161  |   0     4     4    (0)  |  1   0   1   0   0   0   0   1
   2   |  165  |   1     5     5    (1)  |  1   0   1   0   0   1   0   1
   3   |  169  |   2     6     6    (2)  |  1   0   1   0   1   0   0   1
   4   |  173  |   3     7     7    (3)  |  1   0   1   0   1   1   0   1
   5   |  193  |         8     8    12   |  1   1   0   0   0   0   0   1
   6   |  197  |         9     9    13   |  1   1   0   0   0   1   0   1
   7   |  201  |        10    10    14   |  1   1   0   0   1   0   0   1
   8   |  205  |        11    11    15   |  1   1   0   0   1   1   0   1
   9   |  225  |        12   (12)    8   |  1   1   1   0   0   0   0   1
  10   |  229  |        13   (13)    9   |  1   1   1   0   0   1   0   1
  11   |  233  |        14   (14)   10   |  1   1   1   0   1   0   0   1
  12   |  237  |        15   (15)   11   |  1   1   1   0   1   1   0   1
  13   |  129  |        (0)    0     4   |  1   0   0   0   0   0   0   1
  14   |  133  |        (1)    1     5   |  1   0   0   0   0   1   0   1
  15   |  137  |        (2)    2     6   |  1   0   0   0   1   0   0   1
  16   |  141  |        (3)    3     7   |  1   0   0   0   1   1   0   1
La primera columna ignórala porque es sólo una referencia para mi lista de valores precalculados. Lo único relevante de ahí es que la fila con el cero se refiere a no utilizar bancos y acceder a la memoria normal en la ventana de 16K a partir de la dirección de memoria 16384 ($4000). El resto de las filas sí ponen algún banco en esa ventana, y no hay un valor de base como sugieres... Debes utilizar el valor de la segunda columna para el POKE 54017 desde BASIC, y fíjate que hay uno que dice 129.

Los valores son determinados por los bits para PORTB, los que están separados en el lado derecho de la tabla. El bit 4 indica si se quiere usar la memoria expandida a través de los bancos (0=si, 1=no), y por eso sólo en la primera fila dice 1 en ese bit para usar la RAM normal en vez de los bancos.

Los otros bits importantes son el bit 0 que indica si se usa la ROM del SO (1=si,0=no), el bit 1 que indica si está habilitado BASIC (0=si,1=no) y el bit 7 que indica si se habilita el SelfTest (0=si,1=no). Es por eso es que ellos tienen valores fijos en toda la tabla.

El último bit importante sólo en el caso de los 130XE es el bit 5, que es similar al 4, pero en vez de afectar a la CPU para indicarle que debe usar bancos en la ventana correspondiente, afecta al chip ANTIC para decirle de qué banco sacar la data para las imágenes. Yo no conozco ningún programa o juego que use esta característica, por lo que en ese modelo de Atari siempre se deja en 1 (no sé que pasa en el caso del 65XE).

Finalmente los bits 2, 3, 5 y 6 en conjunto representan el número del banco seleccionado para poner en la ventana de acceso. Lo explicado en el párrafo anterior hace que las 16 combinaciones posibles de los 4 bits comiencen con el bit 5 en 1 en lugar del 0, haciendo compatible el mod de Buchholz con el Atari 130XE, es decir, un programa hecho para 130XE correrá sin problemas en un Atari 800XL ampliado con el mod de Buchholz o Rambo/XL.

Si miramos en detalle el grupo de columnas de las distintas ampliaciones de memoria, algunos números de banco están entre paréntesis, y quiere decir que en ese mod no se debe utilizar. En el caso del mod de Buchholz, es porque los bancos 0 al 3 en realidad contienen los 64K de RAM base del Atari, y en el caso de Newell, los bancos del 12 al 15 son redireccionados a los bancos 4 al 7 precisamente para no pisarse la RAM de base. De aquí podemos concluir que de los 256K, Buchholz utiliza los primeros 4 bancos para asignar a la RAM normal, en tanto que Newell utiliza los últimos 4 con ese fin. El mod que invierte el bit 5 en Newell hace precisamente que los últimos bancos se vean al comienzo, y como se podía usar indistintamente por ejemplo el banco 4 o el 12 para acceder a la misma XRAM, Newell queda compatible con la ampliación de Buchholz, aunque el orden físico de los bancos no sea equivalente... pero como dije en otro post, un banco es tan sólo un banco y mientras sepa dónde puse la información para después recuperarla, está todo OK. Obviamente la rutina XMEM que publiqué en otro post detecta estas situaciones y elimina de la lista los bancos no utilizables.

Avatar de Usuario
dogdark
Mensajes: 594
Registrado: Lun Mar 04, 2013 1:36 pm
Contactar:

Re: [ATARI] Copiador SITRE para juegos en cassette

Mensaje por dogdark » Vie Mar 27, 2015 5:48 pm

el 130xe entrega lo siguiente

max =4
banco 0 177
banco 1 161
banco 2 165
banco 3 169
banco 4 173

0 - 1 - 0
1 - 1 - 0
2 - 1 - 0
3 - 1 - 0
4 - 1 - 0
5 - 0 - 0
6 - 0 - 0
7 - 0 - 0
8 - 0 - 0
9 - 0 - 0
10 - 0 - 0
11 - 0 - 0
12 - 0 - 0
13 - 0 - 185
14 - 0 - 102
15 - 0 - 102
16 - 0 -153

probado en atari real

Avatar de Usuario
vitoco
Mensajes: 1970
Registrado: Lun Ene 28, 2013 5:47 pm
Contactar:

Re: [ATARI] Copiador SITRE para juegos en cassette

Mensaje por vitoco » Vie Mar 27, 2015 6:07 pm

dogdark escribió:el 130xe entrega lo siguiente
Spoiler: MOSTRAR
max =4
banco 0 177
banco 1 161
banco 2 165
banco 3 169
banco 4 173

0 - 1 - 0
1 - 1 - 0
2 - 1 - 0
3 - 1 - 0
4 - 1 - 0
5 - 0 - 0
6 - 0 - 0
7 - 0 - 0
8 - 0 - 0
9 - 0 - 0
10 - 0 - 0
11 - 0 - 0
12 - 0 - 0
13 - 0 - 185
14 - 0 - 102
15 - 0 - 102
16 - 0 -153
probado en atari real
Excelente... muchas gracias!!!

Como puedes ver, los 5 bancos detectados tienen los valores de PORTB que calzan en la tabla para el caso del 130XE.

Lo que no expliqué en el post sobre la rutina XMEM es qué significa la info adicional. La primera columna indica qué banco (numerado desde el punto de vista de SITRE) se está analizando. La segunda columna es un buffer en donde la rutina marca los bancos disponibles y desmarca los no utilizables (sólo los primeros 5 tienen un 1), y la tercera columna es otro buffer en donde se respalda el primer byte de cada banco, ya que la rutina intentará modificar cada banco para determinar si es RAM o ROM y no destruir nada en la pasada por si se trata de alguno de los bancos que representan la memoria real del Atari, así que al finalizar restaura todo. Es curioso que en el 130XE real haya valores en los bancos 13 al 16, ya que la única diferencia con los bancos 1 al 4 es que se ha habilitado el acceso del video a los mismos bancos de XRAM (numerados del 0 al 3 en el 130XE respectivamente para ambos casos).

Avatar de Usuario
dogdark
Mensajes: 594
Registrado: Lun Mar 04, 2013 1:36 pm
Contactar:

Re: [ATARI] Copiador SITRE para juegos en cassette

Mensaje por dogdark » Vie Mar 27, 2015 6:52 pm

o sea para entender un poco mas el manejo de la tabla en su estructura, si esta con byte 1 son los bancos que estan utilizables y los con 0 no se usan menos los que están entre paréntesis, como para que me entiendas, si yo tengo la expansión bulchholz y quisiera ocupar el banco 12 tendría que hacer lo siguiente, poke 54017,237*7, algo asi??? porque yo para manejar los bankos en el 130, todosss usamos el 221. y si es 0 lo que lo activa entonces seria 54017,237+4, como se usa en el 130

Avatar de Usuario
vitoco
Mensajes: 1970
Registrado: Lun Ene 28, 2013 5:47 pm
Contactar:

Re: [ATARI] Copiador SITRE para juegos en cassette

Mensaje por vitoco » Vie Mar 27, 2015 7:19 pm

Quise hacer una prueba extrema: usar todos los bancos para grabar un XEX. Anteriormente había dicho que restringiría el número máximo de bancos a 13 (lo disponible en los mod de Buchholz y Newell), pero como en el emulador puedo usar 17 bancos (simulando piggyback de memorias con RAMBO-320K), quité la restricción, lo cual me permite grabar hasta 1088 bloques en cinta... eso es 272K de XEX!!! Esto me introdujo 2 problemas ya mencionados: el contador necesita un dígito más, y además necesito encontrar un XEX de más de 256K.

Para el contador utilicé una solución más simple: mantuve los 3 dígitos, pero si hay más de 999 bloques, al primer dígito le pone ":" representando 2 dígitos... Así, cuando el contador llegue a ":00", bajará a "999" y todo seguirá normal.

En lugar de buscar un XEX tan grande, me hice uno... simplemente tomé un juego de 16K y lo concatené varias veces, 16 en total, por lo que la data extra y la rutina de inicialización hacen que se llene parcialmente el 17vo banco. De esta forma, SITRE cargará 16 veces la misma información en el mismo lugar, pero lo que interesa es que parta, ¿no? Eso me obligó a crear un disco ATR bastante grande usando MYDOS...

Así se ve el copiador de SITRE en el emulador atari800-a8cas:

Imagen

Pueden ver que se grabaron 262493 bytes (1026 bloques) y efectivamente tomó más de una hora grabar el .CAS (no se puede usar el SIO-Patch porque anula las modificaciones que hace SITRE en la ROM). Al darle el doble clic al archivo resultante, Altirra responde así:

Imagen

En esa captura ya había avanzado un poco la carga, y un momento después, cuando bajó de 1000 bloques, se vió así:

Imagen

Cuando quedaban 2 bloques, se activó la rutina de inicialización que apagó la pantalla y cuando SITRE terminó de cargar, apareció el juego:

Imagen

Imagen

También hice una versión del XEX de 192K + adicionales (sólo 12 copias del juego) para probar los 13 bancos en el Atari real con la expansión Newell original. Sólo espero que el SIO2SD me reconozca el ATR grandote con el XEX dentro. Ya les contaré.

Avatar de Usuario
vitoco
Mensajes: 1970
Registrado: Lun Ene 28, 2013 5:47 pm
Contactar:

Re: [ATARI] Copiador SITRE para juegos en cassette

Mensaje por vitoco » Vie Mar 27, 2015 7:31 pm

dogdark escribió:o sea para entender un poco mas el manejo de la tabla en su estructura, si esta con byte 1 son los bancos que estan utilizables y los con 0 no se usan menos los que están entre paréntesis, como para que me entiendas, si yo tengo la expansión bulchholz y quisiera ocupar el banco 12 tendría que hacer lo siguiente, poke 54017,237*7, algo asi??? porque yo para manejar los bankos en el 130, todosss usamos el 221. y si es 0 lo que lo activa entonces seria 54017,237+4, como se usa en el 130
No, no, no y no!!!!

La tabla tiene un montón de valores que no responden a una fórmula, sino a la combinación de bits del PORTB. No se puede usar un valor base y sumar números de banco multiplicado por algún factor. Incluso depende del tipo de ampliación si te aparecen rangos vacíos entremedio. La formulita era sólo aplicable en el 130XE.

Mejor usa mi ejemplo del XMEM que te deja un arreglo B(x) listo para usar. En vez de poner una fórmula del tipo:

Código: Seleccionar todo

POKE 54017,157+4*BANCO
suponiendo que BANCO va de 1 en adelante (hasta 4 en el 130XE), puedes poner:

Código: Seleccionar todo

POKE 54017,B(BANCO)
Además tiene la gracia que B(0) te devuelve la memoria normal (deshabilita los bancos).

¿Se entendió por qué no sirven las fórmulas para acceder a la XRAM?

Avatar de Usuario
vitoco
Mensajes: 1970
Registrado: Lun Ene 28, 2013 5:47 pm
Contactar:

Re: [ATARI] Copiador SITRE para juegos en cassette

Mensaje por vitoco » Sab Mar 28, 2015 3:40 pm

vitoco escribió:También hice una versión del XEX de 192K + adicionales (sólo 12 copias del juego) para probar los 13 bancos en el Atari real con la expansión Newell original. Sólo espero que el SIO2SD me reconozca el ATR grandote con el XEX dentro. Ya les contaré.
Después de pelear un rato con la SIO2SD porque no me reconocía la tarjeta de 32M (incluso la volví a formatear), y una vez resuelto eso seguí peleando porque el ATR de MyDOS que tenía en la SD estaba en doble densidad y al parecer la SIO2SD no lo manejaba correctamente y tuve que buscar uno en densidad simple, logré correr SITRE y éste me reconoció los 12 bancos de la Newell, y con la memoria real quedó con 13 bancos disponibles, los necesarios para copiar el juego que armé de 192K:

Imagen

Como se puede ver, el XEX pesaba 196.933 bytes, y en cassette serían 770 bloques, con un tiempo de grabación de 47 minutos y medio... Auch!!!

Busqué entre mis cassettes, y sólo encontré un par de 90 minutos (45 minutos por lado), y los demás eran de 60 minutos (30 por lado):

Imagen

Así que me dió lata probar si cabía en una de las cintas de 45 por lado... 2 minutos y medio extra creo que son muchos y tenía altas posibilidades de fallar.

Sin embargo dejé que SITRE grabara algunos bloques en el aire sólo para escuchar los pitos reales por el parlante de la tele :sabio:

Por lo tanto, doy por cerradas las pruebas relativas al manejo de bancos... Ahora debo salir. Espero poder hacer más pruebas grabando XEX varios en cinta real y después cargándolos, y con eso daré por finalizado el desarrollo.

Sólo me queda una duda. La versión original sobre la que trabajé es la 2.01, y como en un principio los cambios para soportar más de 4 bancos de memoria XRAM (pasar de 130XE a 800XL con mod de 256K), le puse versión 2.02. Sin embargo, creo que los cambios y optimizaciones por el lado del copiador fueron bastantes, por lo que no sé si cambiarle el número de versión a 3.01, 3.02 o tal vez sólo 2.12... ¿Opiniones?

Avatar de Usuario
renix
Mensajes: 4675
Registrado: Vie Ene 25, 2013 1:39 am

Re: [ATARI] Copiador SITRE para juegos en cassette

Mensaje por renix » Sab Mar 28, 2015 4:20 pm

Definitivamente version 3 vitoco... Felicitaciones... A todos... Da gusto leer estos topics tan avanzados.

Avatar de Usuario
dogdark
Mensajes: 594
Registrado: Lun Mar 04, 2013 1:36 pm
Contactar:

Re: [ATARI] Copiador SITRE para juegos en cassette

Mensaje por dogdark » Sab Mar 28, 2015 6:11 pm

versión 3 por ser una nueva versión cuando la termines, y la injektor si en algún futuro se crea seria la versión 4, con esta ultima se podrían colocar los juegos muchísimos más grandes en un cassette.

Avatar de Usuario
vitoco
Mensajes: 1970
Registrado: Lun Ene 28, 2013 5:47 pm
Contactar:

Re: [ATARI] Copiador SITRE para juegos en cassette

Mensaje por vitoco » Sab Mar 28, 2015 7:03 pm

No estoy tan convencido con que sea 3, porque el cargador de SITRE es prácticamente el mismo... para él no existen los bancos y la modificación para soportar más de 256 bloques fue mínima... creo que sólo le hice una optimización además de agregar un segundo byte para el contador interno de bloques, pero la estructura de los bloques, la operación y la presentación incluyendo los 3 dígitos es la misma.

Como dije, es sólo el copiador el que evolucionó para reconocer más bancos de memoria (de distintos mods), incorporar la lectura de XEX desde discos distintos del "D1:", y reorganización del código para correr más rápido y aprovechar la memoria de mejor manera al crecer la cantidad de bloques posibles de grabar en cinta.

Responder