[ATARI] Copiador SITRE para juegos en cassette
Re: [ATARI] Copiador SITRE para juegos en cassette
si pero es para otra versión vitoco, eso hace la diferencia, el Sitre al ser solo para 130 sigue siendo 2 si le realizaste algún cambio para ser utilizado con el mismo 130 se usa el .2 o .3 pero como ahora aunque se haya modificado lo mínimo, como es para 256k es una versión nueva, se implemente un hardware nuevo y por eso pienso que debe ser V 3.
Re: [ATARI] Copiador SITRE para juegos en cassette
Entre la versión 1.01 y la 2.01 de SITRE, la diferencia era el copiador, en que la v1 no manejaba bancos en 800XL y la v2 sí lo hacía para 130XE, y como ambos copiadores ponían el mismo loader en cinta, ambas versiones compartían el ".01". Siguiendo con esa idea, finalmente opté por la versión 3.02 para el nuevo SITRE, pues ahora cambió el copiador para soportar hasta 17 bancos (16 XRAM + 1 RAM) y también cambió un poquito el loader para poder contar más de 256 bloques.
Ya se vienen los fuentes...
Ya se vienen los fuentes...
Re: [ATARI] Copiador SITRE para juegos en cassette
Oka estoy totalmente de acuerdo en eso, siempre hay cambios cuando hay un hardware nuevo.
Re: [ATARI] Copiador SITRE para juegos en cassette
En primer lugar, y para satisfacer la curiosidad de dogdark, ascrnet y suppawer, les presento el listado del copiador SITRE 2.01, es decir, la versión para 130XE.
La explicación de qué hace el código y para qué sirve cada variable es:
Como se puede apreciar, las rutinas en assembler son varias y el código en BASIC no es tanto, pero se usa para administrar las USR.
Debo recalcar que ésta era una versión limpia y para uso personal, pues las versiones que entregué a SYFCOM y posteriormente a VCC incluían un poco de código extra para evitar el pirateo del copiador
La explicación de qué hace el código y para qué sirve cada variable es:
- 100: Créditos y versión del software.
- 150-160: Reserva espacio de memoria para almacenar rutinas USR, el loader y otros buffers.
- Tabla P$: contiene las marcas para pitos lentos, 1 byte con la cuenta por cada bloque.
- Variables F$ y F2$: variables auxiliares que permiten solicitar y manipular nombres de archivo (para XEX), el título en la pantalla del cargador, contador, etc.
- Buffer B$: espacio utilizado para construir cada bloque del XEX que se graba a cinta. - 200-260: Analiza el archivo XEX para verificar compatibilidad y buscar "pitos lentos".
- 300-330: Carga XEX en bancos.
- 350-380: Graba los bloques con XEX en cinta desde los bancos.
- 400-490: Prepara título y contador para el cargador.
- 440-445: En caso que el XEX no tenga rutina de inicialización, SITRE le agrega una que está apuntando al primer byte del XEX. - 500-590: Selecciona el XEX a copiar desde D1.
- 570-580: Despliega el direcorio del disco. - 600-690: Calcula tiempos de grabación, prepara la cinta y pone el loader.
- 600-610: Encripta las 2 etapas relevantes del loader. A diferencia de otros copiadores, el XEX no va encriptado.
- 640: Graba el registro de booteo a velocidad normal.
- 645: Graba el registro de fin de archivo ficticio.
- 650: Habilita el turbo mediante el cambio del SO a la RAM con la copia modificada.
- 655: Graba la fase 1 del loader en velocidad turbo.
- 660: Graba la fase 2 del loader en velocidad turbo.
- 665: Llama a la rutina para grabar los bloques del XEX en la línea 350.
- 670: Vuelve a habilitar la ROM del SO y cierra el archivo en cinta, grabándose el registro de fin de archivo real. - 700-765: Inicializa la pantalla, las constantes, copia la ROM en RAM y además la modifica.
- Rutina USR R$: copia los 16K de ROM a RAM bajo ella.
- Constantes O, I, II, III, IV: contienen los valores 0 al 4 respectivamente.
- Constante PG: Tamaño de página, es decir, 256.
- Constante BASE: indica dónde comienza la ventana para acceder a los bancos de memoria.
- Constante PORTB: registro de hardware para activar y seleccionar los bancos de memoria. - 770: Línea hacia donde se atrapan los errores en la operación.
- 775: Muestra títulos en pantalla.
- 780-782: Verifica que estén disponibles los 64K de memoria extendida en un 130XE.
- 785-980: Inicializa las variables y construye las cadenas con cargador y rutinas USR.
- Variable TOT: Tamaño del XEX en bytes.
- Variable NUM: Cantidad de bloques a enviar a cinta (menos 1).
- Variable RES: Cantidad de bytes del XEX en el último bloque.
- Variable PARTE: Dirección de memoria donde inicia la ejecución el XEX.
- Variable BANCO: Indicador del banco en uso.
- Variables A1 y A2: direcciones de memoria de inicio y término para cada segmento del XEX.
- C1$: fase 2 del loader.
- C2$: fase 1 del loader.
- C3$: registro EOF ficticio.
- C4$: registro de booteo.
- Rutina USR CSIO$: envia un bloque de datos a cinta.
- Rutina USR I$: permite leer una serie de bytes desde XEX en disco hacia memoria.
- Rutina USR X$: permite hacer PEEK o POKE en un banco en lugar de memoria real. Sólo direcciona en forma lineal los 64K de XRAM.
- Rutina USR L$: inicializa la memoria de los bancos.
- Rutina USR E1$: encripta la fase 2 del loader.
- Rutina USR E2$: encripta la fase 1 del loader.
- Rutina USR G$: graba los bloques del XEX en cinta en el formato definido por SITRE. - 990: Inicializa los bancos.
- 999: Loop infinito para detener el programa en situaciones críticas.
Como se puede apreciar, las rutinas en assembler son varias y el código en BASIC no es tanto, pero se usa para administrar las USR.
Debo recalcar que ésta era una versión limpia y para uso personal, pues las versiones que entregué a SYFCOM y posteriormente a VCC incluían un poco de código extra para evitar el pirateo del copiador
Re: [ATARI] Copiador SITRE para juegos en cassette
Todas mis preguntas con respecto al copiador las generalizare cuando entregues las fuentes del sitre 256k, sobre la estructura y formación del copiador en si mismo, para no generar desorden. gracias por la fuente del 130xe.
Re: [ATARI] Copiador SITRE para juegos en cassette
Después de todo lo discutido en este hilo, SITRE evolucionó para soportar más de 4 bancos de 16K, permitiendo grabar desde 1 hasta 17 bancos dependiendo del tipo de expansión de memoria reconocido entre 130XE, 800XL con Buchholz, Rambo/XL, Rambo320K, Newell, Newell modificado e incluso ninguna. Esto es, desde 16K hasta 208K!!!
Esta nueva versión del copiador SITRE es la 3.02, y se ve así:
La explicación de qué hace el código y para qué sirve cada variable es:
Si se comparan las descripciones, no hay mucha diferencia en la estructura del programa BASIC entre las versiones 2.01 y 3.02. Los mayores cambios que se pueden apreciar son:
Esta nueva versión del copiador SITRE es la 3.02, y se ve así:
La explicación de qué hace el código y para qué sirve cada variable es:
- 100: Créditos y versión del software.
- 150-160: Reserva espacio de memoria para almacenar rutinas USR, el loader y otros buffers.
- Variables F$, F1$ y F2$: variables auxiliares que permiten solicitar y manipular nombres de archivo (para XEX), el título en la pantalla del cargador, contador, etc.
- Variable M: Número de bancos de memoria extendida disponibles. Se inicializa en 16 y posteriormente se asignará el valor definitivo al validar el tipo de extensión.
- Lista B(n): Valores para activar cada banco "n" mediante PORTB. - 200-260: Analiza el archivo XEX para verificar compatibilidad y buscar "pitos lentos".
- 270: Función PEEK para leer byte dentro de los bancos.
- 280: Hace un POKE dentro de los bancos.
- 300-330: Carga XEX en bancos.
- 350-380: Graba los bloques con XEX en cinta desde los bancos.
- 400-490: Prepara título y contador para el cargador.
- 440-445: En caso que el XEX no tenga rutina de inicialización, SITRE le agrega una que está apuntando al primer byte del XEX.
- 455: Rellena con ceros después del final del XEX para completar bloque.
- 460: Si hay más de 999 bloques, modifica el primer dígito para poner ":". - 500-590: Selecciona el XEX a copiar desde la unidad especificada (asume D: si es que se omite).
- 570-580: Despliega el direcorio del disco especificado. - 600-690: Calcula tiempos de grabación, prepara la cinta y pone el loader.
- 600-610: Encripta las 2 etapas relevantes del loader. A diferencia de otros copiadores, el XEX no va encriptado.
- 640: Graba el registro de booteo a velocidad normal.
- 645: Graba el registro de fin de archivo ficticio.
- 650: Habilita el turbo mediante el cambio del SO a la RAM con la copia modificada.
- 655: Graba la fase 1 del loader en velocidad turbo.
- 660: Graba la fase 2 del loader en velocidad turbo.
- 665: Llama a la rutina para grabar los bloques del XEX en la línea 350.
- 670: Vuelve a habilitar la ROM del SO y cierra el archivo en cinta, grabándose el registro de fin de archivo real. - 700-765: Inicializa la pantalla, las constantes, copia la ROM en RAM y además la modifica.
- Rutina USR R: copia los 16K de ROM a RAM bajo ella.
- Constantes O, I, II, III, IV: contienen los valores 0 al 4 respectivamente.
- Constante PG: Tamaño de página, es decir, 256.
- Constante BASE: indica dónde comienza la ventana para acceder a los bancos de memoria.
- Constante PORTB: registro de hardware para activar y seleccionar los bancos de memoria.
- Tabla P: Puntero hacia memoria donde se almacenan las marcas para pitos lentos, 1 byte con la cuenta por cada bloque.
- Buffer B: Espacio utilizado para construir cada bloque del XEX que se graba a cinta.
- 745: Determina qué bancos están disponibles y los asigna al arreglo B(), dejando en M la cantidad de bancos XRAM (0=memoria real) - 770: Línea hacia donde se atrapan los errores en la operación.
- 775: Muestra títulos en pantalla.
- 780-782: Verifica que haya memoria suficiente para al menos un banco que permita copiar un juego pequeño.
- 785-980: Inicializa las variables y construye las cadenas con cargador y rutinas USR.
- Variable TOT: Tamaño del XEX en bytes.
- Variable NUM: Cantidad de bloques a enviar a cinta (menos 1).
- Variable RES: Cantidad de bytes del XEX en el último bloque.
- Variable PARTE: Dirección de memoria donde inicia la ejecución el XEX.
- Variable B: Indicador del banco en uso.
- Variables A1 y A2: direcciones de memoria de inicio y término para cada segmento del XEX.
- C1$: fase 2 del loader.
- C2$: fase 1 del loader.
- C3$: registro EOF ficticio.
- C4$: registro de booteo.
- Rutina USR CSIO: envia un bloque de datos a cinta.
- Rutina USR IO: permite leer una serie de bytes desde XEX en disco hacia memoria.
- Rutina USR L: inicializa la memoria de los bancos.
- Rutina USR E1: encripta la fase 2 del loader.
- Rutina USR E2: encripta la fase 1 del loader.
- Rutina USR G$: graba los bloques del XEX en cinta en el formato definido por SITRE. - 990: Inicializa la tabla de marcas para "pitos lentos".
- 998: Mensaje en caso que no haya memoria suficiente para operar.
- 999: Loop infinito para detener el programa en situaciones críticas.
Si se comparan las descripciones, no hay mucha diferencia en la estructura del programa BASIC entre las versiones 2.01 y 3.02. Los mayores cambios que se pueden apreciar son:
- Cambio en el loader para llevar la cuenta con 2 bytes en lugar de sólo 1, permitiendo cargar más de 256 bloques. Ésto es observable sólo comparando en detalle los bytes de los binarios incrustados en C1$ y C2$.
- Búsqueda de bancos disponibles a partir de lista de combinaciones de bits para PORTB.
- El manejo de bancos con fórmula para PORTB (exclusivo para 130XE) cambia a arreglo de valores precalculados... limpio y rápido.
- Ahora se permite operar con unidades de disco secundarias, incluyendo el listado de sus respectivos directorios para la búsqueda del XEX.
- Evitar la duplicación de datos en memoria por cambio de rutinas USR desde una variable tipo string a otra tipo numérica (conservando el nombre en lo posible). Se exceptúan las rutinas que requieren más de una línea o que se le modifica el contenido.
- Traslado de la tabla para "pitos lentos" y el buffer para escribir en cinta desde variables tipo string a un área no utilizada de la memoria (justo por encima la ventana de acceso a los bancos y bajo la memoria utilizada por la pantalla).
- Se reemplazó por subrutinas en BASIC una rutina USR que permitía leer (PEEK) y escribir (POKE) en los bancos del 130XE, pero estaba restringudo a 64K (16 bits de direccionamiento).
Re: [ATARI] Copiador SITRE para juegos en cassette
SI se te olvido el adjunto jajajja, gracias perrin, revisare el código y te haré las consultas pertinentes, anotare en un cuaderno para hacerlas todas de un viaje,jajaj un abrazo, a digitar se ha dicho
Re: [ATARI] Copiador SITRE para juegos en cassette
Ja, ja, ja...dogdark escribió:SI se te olvido el adjunto jajajja, gracias perrin, revisare el código y te haré las consultas pertinentes, anotare en un cuaderno para hacerlas todas de un viaje,jajaj un abrazo, a digitar se ha dicho
Efectivamente aún no subo el ATR con los copiadores, ya que no tengo claro el tema del (C)opyright...
Pero en vez de digitar, podrías tomar las imágenes del listado, dividirlas en una cuadrilla de 8x8 pixeles para obtener cada caracter de 8 bytes y buscar esa secuencia en la tabla ATASCII de la ROM del SO para identificar el byte correspondiente.
Re: [ATARI] Copiador SITRE para juegos en cassette
en todo caso, pero el sitre 3 es una versión nueva por lo tanto es de propiedad exclusiva tuya y no de otras empresas. Lo digitaré, que me sale más rápido, para hacer las pruebas y llevar un cassette con juegos en sitre, para que lo veas funcionando.
Re: [ATARI] Copiador SITRE para juegos en cassette
Vixtor, la ley de derecho de autor en Chile te otorga sin tramites los derechos con el solo hecho de la creación... Asi que acá en retronia tienes el resguardo. Indeoendiente de eso puedes suscribir alguna licencia libre u opensource si piensas dejar el parrimonio a la humanidad digno de ser perfectible, y que resguarde tu autoría. Te recomiendo, una vez claro el licenciamiento, dejar un arbol en github... (Si es q lo dejas FLOSS)
Re: [ATARI] Copiador SITRE para juegos en cassette
y si hablamos de licencias, el copiador que fue licenciado, vendido creado para, etc etc, fue la versión 2 para 130xe, entonces con la 3 tienes todos los derechos del autor por ser el creador y el renix tiene razón, creandolo open source el copyright es de quien lo crea.
Re: [ATARI] Copiador SITRE para juegos en cassette
Vitoco. Luego de varios días de laboriosa tarea, tengo algunas dudas. ¿Es normal lo que ocurre con el Alien Ambush en el bloque 11?vitoco escribió:En primer lugar, y para satisfacer la curiosidad de dogdark, ascrnet y suppawer , les presento el listado del copiador SITRE 2.01, es decir, la versión para 130XE.
Favor de mirar el video:
Sé que me falta revisarlo un poco más, de hecho cuando genero un error, me aparece esto:
Pero debería aparecer esto:
Lo otro es que el juego cargó en 1 min 44 seg y no en 1 min 38 seg. Seguiré revisando
P.D.: Grande SITRE!
Re: [ATARI] Copiador SITRE para juegos en cassette
Shuuuuu.... Y lo digitaste completo?!?!?!Suppawer escribió:Vitoco. Luego de varios días de laboriosa tarea, tengo algunas dudas. ¿Es normal lo que ocurre con el Alien Ambush en el bloque 11?
Espero que si dogdark también lo está digitando, sea la versión 3.02... y así lo intercambian
Y ojalá que no tengan pifias... Creo que debí generar los códigos Unicheck: como en las revistas A.N.A.L.O.G.
Respecto del Alien Ambush, la versión del XEX que yo tengo no hace nada en ese punto. A lo mejor en tu versión es posible que en ese punto el juego simplemente apaga la pantalla (equivalente a POKE 559,0), por lo que cuando forzaste la caída después de ese punto, no se despliega el texto. Pero ya sabes que debes devolver la cinta un par de vueltas, el efecto rainbow fue la pista... Por favor adjunta el XEX o pon un enlace para bajar el que estás utilizando y lo reviso.
Re: [ATARI] Copiador SITRE para juegos en cassette
Es lo que menos podía hacer después de años esperando este momentovitoco escribió:Shuuuuu.... Y lo digitaste completo?!?!?!
vitoco escribió:Creo que debí generar los códigos Unicheck: como en las revistas A.N.A.L.O.G.
Re: [ATARI] Copiador SITRE para juegos en cassette
UNICHECK:Suppawer escribió:vitoco escribió:Creo que debí generar los códigos Unicheck: como en las revistas A.N.A.L.O.G.
Bajar el programa UNICHECK.BAS y correrlo una vez para que genere un AUTORUN.SYS en un disco con DOS. Luego bootear con ese disco, cargar el programa BASIC que se quiere checar y listarlo al dispositivo "U:" para que genere los códigos a comparar.
SITRE 2.01:
Código: Seleccionar todo
100 DATA 286,862,187,523,861,286,240,679,184,377,693,248,932,708,438,7504
310 DATA 992,720,594,843,268,331,609,99,574,920,64,165,521,582,767,8049
470 DATA 816,723,166,638,701,973,978,439,954,822,819,582,726,998,241,10576
620 DATA 46,977,573,536,953,556,538,997,658,782,851,739,178,952,793,10129
730 DATA 35,124,988,327,976,719,882,716,790,888,356,322,966,182,286,8557
840 DATA 689,566,178,965,855,95,918,637,337,797,475,3,984,603,72,8174
970 DATA 900,841,606,787,3134
Código: Seleccionar todo
100 DATA 344,348,712,750,861,286,603,268,184,377,214,248,930,708,67,6900
280 DATA 740,820,386,380,594,169,933,717,609,99,574,920,302,165,214,7622
450 DATA 624,983,532,22,723,166,698,69,173,998,436,543,875,973,978,8793
540 DATA 439,954,822,254,582,726,391,633,46,589,573,930,907,943,925,9714
665 DATA 997,46,782,851,739,178,986,841,637,78,787,161,257,909,988,9237
765 DATA 988,976,549,700,879,443,322,852,317,390,966,2,8,192,296,7880
880 DATA 948,88,942,637,570,433,997,55,830,299,776,202,841,583,787,8988
Re: [ATARI] Copiador SITRE para juegos en cassette
a mi me dio el mismo problema pero en el sector dos, la carga del load sin problemas, espero terminar de revisar esto el domingo. estoy con la versión 3.2
jejej hay algo mal,
segundo intento
y seguiremos revisando
mmmm problemas en el retorno de los valores a la linea 280
zorry, pero es mi apunte jajjaja
jejej hay algo mal,
Código: Seleccionar todo
1 DATA 491,286,348,712,750,861,286,603,268,184,377,214,248,930,708,7266
270 DATA 67,740,820,386,380,594,76,933,717,609,99,574,920,302,165,7382
445 DATA 214,624,983,532,22,723,166,698,69,173,998,436,543,875,973,8029
530 DATA 978,439,954,822,254,582,726,391,633,46,589,573,930,907,943,9767
660 DATA 925,997,46,782,851,739,178,986,841,637,78,787,161,257,909,9174
760 DATA 988,988,976,549,700,879,443,322,852,232,264,966,2,8,192,8361
870 DATA 296,948,88,942,637,570,433,997,55,830,299,776,202,841,583,8497
999 DATA 787,787
Código: Seleccionar todo
100 DATA 286,348,712,750,861,286,603,268,184,377,214,248,930,708,67,6842
280 DATA 740,820,386,380,594,76,933,717,609,99,574,920,302,165,214,7529
450 DATA 624,983,532,22,723,166,698,69,173,998,436,543,875,973,978,8793
540 DATA 439,954,822,254,582,726,391,633,46,589,573,930,907,943,925,9714
665 DATA 997,46,782,851,739,178,986,841,637,78,787,161,257,909,988,9237
765 DATA 988,976,549,700,879,443,322,852,232,264,966,2,8,192,296,7669
880 DATA 948,88,942,637,570,433,997,55,830,299,776,202,841,583,787,8988
mmmm problemas en el retorno de los valores a la linea 280
Código: Seleccionar todo
100 DATA 344,348,712,750,861,286,603,268,184,377,214,248,930,708,67,6900 280 DATA 740,820,386,380,594,169,933,717,609,99,574,920,302,165,214,7622 450 DATA 624,983,532,22,723,166,698,69,173,998,436,543,875,973,978,8793 540 DATA 439,954,822,254,582,726,391,633,46,589,573,930,907,943,925,9714 665 DATA 997,46,782,851,739,178,986,841,637,78,787,161,257,909,988,9237 765 DATA 988,976,549,700,879,443,322,852,317,390,966,2,8,192,296,7880 880 DATA 948,88,942,637,570,433,997,55,830,299,776,202,841,583,787,8988
Código: Seleccionar todo
100 DATA 344,348,712,750,861,286,603,268,184,377,214,248,930,708,67,6900
280 DATA 740,820,386,380,594,76,933,717,609,99,574,920,302,165,214,7529
450 DATA 624,983,532,22,723,166,698,69,173,998,436,543,875,973,978,8793
540 DATA 439,954,822,254,582,726,391,633,46,589,573,930,907,943,925,9714
665 DATA 997,46,782,851,739,178,986,841,637,78,787,161,257,909,988,9237
765 DATA 988,976,549,700,879,443,322,852,232,264,966,2,8,192,296,7669
880 DATA 948,88,942,637,570,433,997,55,830,299,776,202,841,583,787,8988
Re: [ATARI] Copiador SITRE para juegos en cassette
dogdark: parece que tienes problemas en las líneas 350, 820 y 830.
Re: [ATARI] Copiador SITRE para juegos en cassette
yep yep la 350, tenia puesto B=0(CERO) y es O
reviso las otras dos, ahi van los caracteres especiales, revisare bien pero estoy con la duda de unas X si con mayusculas o minisculas
100 DATA 344,348,712,750,861,286,603,268,184,377,214,248,930,708,67,6900
280 DATA 740,820,386,380,594,169,933,717,609,99,574,920,302,165,214,7622
450 DATA 624,983,532,22,723,166,698,69,173,998,436,543,875,973,978,8793
540 DATA 439,954,822,254,582,726,391,633,46,589,573,930,907,943,925,9714
665 DATA 997,46,782,851,739,178,986,841,637,78,787,161,257,909,988,9237
765 DATA 988,976,549,700,879,443,322,852,317,390,966,2,8,192,296,7880
880 DATA 948,88,942,637,570,433,997,55,830,299,776,202,841,583,787,8988
Código: Seleccionar todo
100 DATA 344,348,712,750,861,286,603,268,184,377,214,248,930,708,67,6900
280 DATA 740,820,386,380,594,169,933,717,609,99,574,920,302,165,214,7622
450 DATA 624,983,532,22,723,166,698,69,173,998,436,543,875,973,978,8793
540 DATA 439,954,822,254,582,726,391,633,46,589,573,930,907,943,925,9714
665 DATA 997,46,782,851,739,178,954,841,637,78,787,161,257,909,988,9205
765 DATA 988,976,549,700,879,443,322,852,232,264,966,2,8,192,296,7669
880 DATA 948,88,942,637,570,433,997,55,830,299,776,202,841,583,787,8988
Re: [ATARI] Copiador SITRE para juegos en cassette
algun post sobre esto, para obtener el codigo, no logro encontrar el caracter que tengo malo.vitoco escribió: podrías tomar las imágenes del listado, dividirlas en una cuadrilla de 8x8 pixeles para obtener cada caracter de 8 bytes y buscar esa secuencia en la tabla ATASCII de la ROM del SO para identificar el byte correspondiente.
Re: [ATARI] Copiador SITRE para juegos en cassette
Ja, ja, ja. Más fácil es que se los pase. Les agradezco el esfuerzo a ambos. Pero ahora estoy fuera de Santiago. Lo llevaré a la junta, OK?