Del 128k al 48k (parte 2) Continuando con mi busqueda de nuevos metodos para pasar del 128k al 48k y viceversa añado ahora 6 metodos más todos publicados en OUTLET. Metodos 1 - 3 (ver articulo anterior del 128k al 48k) Cuarto método: Mencionado en Outlet 113 acerca de MODETESTHIGH. funciona solo con +3 y +2a/b: tipear SPECTRUM para ir al modo 48k RANDOMIZE USR 23354 para volver al +3 Basic da "OK 0:1" y basta con pulsar una tecla para proseguir. Quinto método: Subrutina "Route48" publicada en Outlet 31 9945 RESTORE VAL "9945": LET R=VAL "PEEK 23631+256*PEEK 23632+15": FOR A=R TO R+PI: READ PK: POKE A,PK: NEXT A: LET X=USR VAL "23354": RETURN : DATA VAL "5",CODE ":",NOT PI,CODE ":" 9948 RANDOMIZE USR VAL "PEEK 23637+256*PEEK 23638-0051": RETURN : REM 128K +3 TO 48K Sexto método: Subrutina "Togmod" publicada en Outlet 38 9000 LET addr= 23613: LET pe=FN p(FN p(addr)): LET pe1=23325: LET pe2=4867: POKE FN p(addr),(3 AND pe=pe1)+(29 AND pe=pe2): POKE (FN p(addr)+1),(19 AND pe=pe1)+ (91 AND pe=pe2): POKE 23611,205: DEF FN p(x)=PEEK x+256*PEEK (x+1): STOP : REM b lack 128K& grey +2 9010 LET addr= 23613: LET pe=FN p(FN p(addr)): LET pe1=23354: LET pe2=4867: POKE FN p(addr),(3 AND pe=pe1)+(58 AND pe=pe2): POKE (FN p(addr)+1),(19 AND pe=pe1)+ (91 AND pe=pe2): POKE 23611,205: DEF FN p(x)=PEEK x+256*PEEK (x+1): STOP : REM + 2A/+3 version Sétimo método: Subrutina "Two way switch" publicada en Outlet 67 Para salvar el código hay que hacer SAVE ... CODE 45000,87 Para salvar la subrutina Basic con SAVE "nombre" luego cargarla con LOAD o MERGE y para ejecutarla hacer GOSUB 9000 (basta una sola vez) y entonces USR 45000. La línea Basic a salvar es: 9000 RANDOMIZE USR VAL "PEEK 23637+256*PEEK 23638-0104": RETURN : REM twoway_code CODE Octavo método: Subrutina "Toggler" publicada en Outlet 86 Las mismas instrucciones que para el 7mo método. La línea Basic a salvar es: 9409 RANDOMIZE USR VAL "PEEK 23637+256*PEEK 23638-0102": RETURN : REM mode_toggle CODE USR 40000 para ejecutarlo. CODE 40000,85 para salvarlo. Noveno método: Subrutina "Woggler" publicada en Outlet 90 9409 RANDOMIZE USR VAL "PEEK 23637+256*PEEK 23638-0178": RETURN : REM woggle code CODE Basta con hacer GOSUB 9409 para ir de un modo a otro. El 4to. método parece poderse usar indefinidamente sin cuelgues siempre que las direcciones 23296 a la 23551 no sean alteradas. Genera el mensaje de error "i hook code error" en el +3 original y el +3e, el mensaje "OUT 7I, 0:1" en otros, pero "OK" en las versiones 41 y azules. Cualquiera que sea el mensaje que dé, basta con ignorarlo, pulsar una tecla y listo. Esto es, sólo si las direcciones 23296 - 23552 no han sido alteradas. No funciona con el 128k ni el +2, debido a que estos mantienen la paginación al cambiar de modo. La alternativa mencionada en un outletter de la edición Outlet 12: OUT 32765,21 resetea el sistema y pasa al modo 48k. El único problema es que no ya hay modo de volver al 128k Basic con este truco. OUT 32768,48 también mencionado en ese OUTLET solo cambia el borde temporalmente y nada más. Para aplicar el 5to. método, basta con hacer GOSUB 9948 para ir al modo 48k y una vez ahí, tipear GOSUB 9945 para volver al modo 128k, incluso funciona tras darse un comando SPECTRUM. Route 48 permite que el programa que lo incluye, pase a modo 48k directamente sin detenerse, pero no sucede lo mismo si se intenta volver al modo +3. En el original 128k hacer GOSUB 9948 directamente nos manda al manda al modo 48k pero todo intento de volver al modo 128k genera un cuelgue del sistema, forzandolo a uno al RESET. Esto último se debe a las mismas razones explicadas sobre el cuarto método. Funciona con cualquier +3,+2a y sin generar mensajes de error como en los otros casos. A veces GOSUB 9948 puede dar el mensaje de variable no encontrada, cuando esto sucede es mejor no insistir pues hay peligro de cuelgue. El 6to. método permite ir del modo 128k al 48k y acceder a la impresora del 128 siempre que no se tipee la orden COPY. Para los modelos 128k y +2 hacer GOSUB 9000, y GOSUB 9010 para +3 y +2a. POKE 23611,204 debe ser añadido al +3 antes de usar los discos o el motor no se detendrá. Outlet no enseña como volver al modo 128k, una vez hecho el salto, pero con RANDOMIZE USR 407: STOP es posible volver en un 128k. En el caso del +2 debe usar el USR del 2do. método. El +3 vuelve con un USR del cuarto método es decir 23354. El 7mo. método permite ir del modo 128k al 48k y viceversa, debiendo ser ejecutado primero desde el modo 128k, para su correcto funcionamiento. Basta con hacer USR 45000 para saltar de un modo al otro. En modo 128k da el mensaje "Non sense in G+dos" cuando se tiene el +D conectado. Aparte eso, entra al modo 48k sin más problemas, en cambio etorna al modo 128k con un "OK". La línea Basic una vez ejecutada es innecesaria y puede ser incluso borrada. Si se ha salvado con SAVE CODE, basta entonces cargarla con LOAD CODE y ejecutarla con USR. Funciona con +2, pero en el caso del +3 y +2a, solo permite ir al modo 48k pero no volver, ya que el USR en cuestion genera una pantalla negra y hay que hacer RESET para salir del cuelgue. Outlet no enseña como volver al modo 128k, una vez hecho el salto en un +3 pero curiosamente un USR 23354 sí permite regresar al +3 Basic. El 8vo. método permite ir y venir de un modo al otro incluso es posible usarlo dentro de un programa, sin que este se detenga ya sea con mensajes de error o no. Las direcciones 23296 - 23552 no deben ser alteradas para que se pueda volver sin cuelgues al modo 128k, ya que esa es el área de impresora del 48k y variables extras en el 128k. La rutina parece ser relocalizable y puede funcionar en cualquier 128, +2, incluso +3 y +2a. Dependiendo de las ROMs del +3 y +2a o de si se usa USR directamente o con PRINT o RANDomize, puede dar ya sea "OK" o un mensaje de error tanto a la ida como a la vuelta. Esta ultima opcion puede complementarse con un detector de modo como es PEEK 23669, que nos da 26 si se está en modo 48k. También puede usarse la subrutina SPECTEST de OUTlet 83. Una alternativa mejor a SPECTEST es MODETESTHIGH publicado en OUTlet 113 y 114. Luego está 'USR 0' en OUTLet 117, el cual pasa del 128k a 48k modo usr 0. Otros peeks: Si PEEK 75 = 91 entonces modo 48k. Si PEEK 23388 = 16 entonces modo 128k. El 9no. método es una versión mejorada del Toggler. Las direcciones 23296 - 23552 son reubicadas, el código ahora pesa 170 a diferencia de antes, pero a diferencia de los dos métodos anteriores, la línea 9409 debe permanecer en el listado y ser siempre invocada con GOSUB para poder hacer el cambio de un modo a otro. 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 (excepto supuestamente el método 8), a veces con mensajes de error o sin ellos. Para volver al 128k es mejor usar directamente el RAND.USR correspondiente.