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.