Del 128k al 48k ---------------------- Para poder pasar del modo 128k al 48k y viceversa pueden usarse los siguientes métodos: Primer método: Es el publicado por la revista española ZX. Para pasar del Basic 128k al Basic 48k, usar: POKE 23611,204 RANDOMIZE USR 4770 RANDOMIZE USR 564: STOP No debe usarse en nigún caso CLEAR ni RUN, sólo GOTO. Segundo método: Es el publicado por Alchemist News. Para pasar del Basic 128k al Basic 48k, usar: POKE 23611,205 RANDOMIZE USR 4867 Para volver luego al 128k desde el 48k, usar: RANDOMIZE USR 23325 Tercer método: Publicado en la revista española Micro Hobby. LET L= PEEK 23613+256* PEEK 23614: POKE L,3: POKE L+1,19: RANDOMIZE USR 4777 Para volver luego al 128k desde el 48k, usar: RANDOMIZE USR 23325 con +2 RANDOMIZE USR 23354 con +3 y +2A/B. Tanto el 1er método como el 2do. requieren de un POKE obligatorio. El 3ro. en cambio puede usar solo el RAND.USR sin POKE alguno. Pero este último no funciona con el 128k+ original Sinclair, sino con los modelos posteriores de Amstrad, incluso eso depende de qué ROM esté usando el +3. Veamos a continuación cada uno de los métodos en acción: El 1ro. indica que no debe usarse ni CLEAR ni RUN estando una vez en modo 48k, pues eso impide el retorno al modo 128k, pero sí se pueden usar en modo 128k sin que afecten la funcionalidad. Sin embargo, es posible pese a todo volver del 48k al 128k por otro medio: el RAND.USR 23325 del 2do. método, siempre y cuando no se haya hecho NEW, pues eso no sólo inhabilita la posibilidad de retorno al 128k sino que también causa un cuelgue del sistema. Funciona con todos los modelos 128 (incluidos Pentagón y Scorpion) pero en el caso del +3 y +2 A/B, para volver del 48k al 128k se debe usar el USR 23354 del 3er método. El 2do. de ALCH.NEWS es similar al de ZX, pero con la +2c modificada de Owen se puede omitir el POKE y usar directamente USR 4867 para ir al modo 48k y retornar del modo normal. Omitir el POKE en el +2c de Namco, produce reset y queda en modo 48k permanente. En un 128k o +2 originales no tiene efecto alguno sin el POKE. En el caso del +3 y +2 A/B, se regresa también con USR 23354. Un USR sin POKE provoca un cuelgue con las ROMs originales pero no con las ROMs +3 v41 y las llamadas ROMS +3 azules. Curiosamente pasa lo mismo con una orden directa USR 4770. En el caso del 3er. método de MH, es posible usar solamente USR 4777, omitiendo todos los PEEKs y POKEs. El 128k se resetea tras entrar en modo 48k. El +2 original y el +2c de Namco se cuelgan o resetean. Funciona muy bien con el +2c de Owen y en modo directo sin los POKEs. El +3 original sufre del mismo caso que el 128k y +2. No así las versiones +3 v41 y +3 azules que tampoco necesitan de los POKES como el +2c de Owen. El +3e parece estar basado en un +3 original pues adolece del mismo problema. Estas órdenes pueden ser insertadas dentro de líneas Basic o ser usadas directamente, al menos las que permiten ir del modo 128k al 48k, pero cualquier programa o rutina que las incluya se interrumpe al pasar de un modo a otro, a veces con mensajes de error o sin ellos. Para volver al 128k es mejor usar directamente el RAND.USR correspondiente. La única ventaja supongo es la de poder aprovechar ambos editores para poder ingresar las líneas Basic y porque el modo 48k es más compatible y rápido que el 128k. También para que el 48k pueda aprovechar los comandos de disco RAM, pero en el caso del +3, es mejor pues se puede acceder al +3DOS, inaccesible normalmente al 48k. A manera de ejemplo práctico he elegido el LOGO SINCLAIR, el cual está compuesto por cuatro archivos, el primero y último son el cargador Basic y la rutina de ejecución Basic, el segundo es un SCREEN$, y el tercero es el CODE. Pasarlo a cualquier disco es muy sencillo, pero una vez cargado en el +3, ejecuta directamente en modo 48k sin posibilidad de retorno al 128k. Para evitar esto se debe añadir al cargador Basic, el POKE de cualquiera de los métodos mencionados. En el cuarto archivo que es el ejecutor, la primera línea debe ser el USR añadido como línea 1 o 5 por ejemplo. Ahora todo ha sido cargado y estamos ya en modo 48k , para correr el LOGO, RUN 10 o GOTO 10. Una vez en LOGO, salir de vuelta con BYE. Ahora entrar directamente RAND.USR 23354 o incluirlo en el programa como la última línea Basic. Hecho esto ya estamos de vuelta en el 128k y podemos usar todos los comandos de disco como ver el catálogo, etc sin perder el programa. Pensé que lo mismo podría hacerse con el Beta Basic 3, pero al parecer este no es compatible con el modo 128k. Una vez pasado el BB3 al disco puede cargarse sin problemas, hasta ahí todo bien, se activa normal. Pero para volver al 128k debe desactivarse primero. Ya de vuelta en el modo 128k, el sonido al pulsar las teclas no es el normal, pero podemos aun ver CAT y cargar, salvar o hacer MERGE. Luego de eso volver al 48k y aquí empieza el problema. Cuesta trabajo reactivar el BB3. No parece querer ejecutarse pero una vez logrado, se colgará si se intenta volver al 128k con más líneas Basic que sólo la línea cero. Esto no es problema sólo del +3, con el 128 original y el +2 también pasa lo mismo. Creía que sería un poco diferente con el Beta Basic 1.8 pero sucede lo mismo que con el BB3 en todos los casos. No parece haber posibilidad de tener cargado el Beta Basic en la memoria y estar en 128k a la vez. Y aquí es donde me detuve en mis experimentos. Para cerrar, solo queda mencionar que un modo seguro para pasar al modo 128k y viceversa lo ofrece el Beta Basic 4.00, su manual dice que hay que hacer Rand.Usr 59904 para ir al modo 48k desde el BB4 y Usr 59907 para ir al modo 128k. En esta última dirección lo que hay en realidad es un JUMP a la dirección 46684 que es donde empieza realmente la rutina que permite ir al modo 128k. Habría que desensamblarla para estudiarla con detenimiento, ver su longitud real, extraerla y probarla si puede funcionar fuera del entorno BB4 o si depende exclusivamente de este. Nota: desconozco si otros también lo han notado pero en Basic 128k es posible usar como comando directo: USR x sin un previo RANDOMIZE o PRINT, pero no dentro de líneas Basic. Por ejemplo, para ir al modo TR-dos, es obligatorio usar RAND.USR 15616 por fuerza de sintaxis, pero el 128k admite tipear sólo USR 15616 como comando directo y así con otras llamadas USR.