![]() |
| |||||||
| Registrarse | Preguntas Frecuentes | Lista de Foreros | Calendario | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
| | LinkBack | Herramientas | Desplegado |
| |||
| Hace muchísimo tiempo, recuerdo que para grabar un programa "del tirón" y que no se mostrase el mensaje de "start tape and press any key" se usaba un POKE mágico. Hoy, ojeando aquí: http://www.sincuser.f9.co.uk/036/letters.htm he visto que era en concreto: POKE 23736,181 ... es más, lo he probado -en el emulador- y funciona correctamente ( también se menciona algo parecido aquí http://microhobby.speccy.cz/mhf/095/MH095_07.jpg ) Lo que no comprendo, y es lo que querría preguntaros, es que según mi manual del Spectrum -el del gomas 48k que es el que tengo- la última variable del sistema está en la dirección 23732, es decir, unos 4 bytes antes de esa dirección ¿¿???. ¿Como funciona entonces ese POKE? ¿Hay más variables del sistema además de las que menciona el manual???? ¿Porqué precisamente 181 el valor? Un saludo. |
| | ||||
| ||||
| |
| |||
| La verdad es que es una "variable" poco documentada. Es un vector de llamada, no una variable, lo que no tengo claro que para que se usa exactamente, pero tiene relacción con el intérprete de BASIC. 23735 VECTOR Address used to extend the Basic interpreter Si pokeas en la 23736 con un valor, estás modificando la dirección del vector, y posiblemente lo que hace al meter 181 es apuntar a un trozo de código de la ROM que provoque el efecto que comentas. Se puede pokear con más valores para apuntar a otros sitios, vamos, a cualquier dirección de la RAM o ROM, así que puedes hacer que el vector apunte a código tuyo, el tema está en que no he encontrado la documentación sobre cuando el intérprete usa ese vector de salto. |
| |||
| La verdad es que es una "variable" poco documentada. Es un vector de llamada, no una variable, lo que no tengo claro que para que se usa exactamente, pero tiene relacción con el intérprete de BASIC. 23735 VECTOR Address used to extend the Basic interpreter Si pokeas en la 23736 con un valor, estás modificando la dirección del vector, y posiblemente lo que hace al meter 181 es apuntar a un trozo de código de la ROM que provoque el efecto que comentas. Se puede pokear con más valores para apuntar a otros sitios, vamos, a cualquier dirección de la RAM o ROM, así que puedes hacer que el vector apunte a código tuyo, el tema está en que no he encontrado la documentación sobre cuando el intérprete usa ese vector de salto. |
| |||
| La verdad es que es una "variable" poco documentada. Es un vector de llamada, no una variable, lo que no tengo claro que para que se usa exactamente, pero tiene relacción con el intérprete de BASIC. 23735 VECTOR Address used to extend the Basic interpreter Si pokeas en la 23736 con un valor, estás modificando la dirección del vector, y posiblemente lo que hace al meter 181 es apuntar a un trozo de código de la ROM que provoque el efecto que comentas. Se puede pokear con más valores para apuntar a otros sitios, vamos, a cualquier dirección de la RAM o ROM, así que puedes hacer que el vector apunte a código tuyo, el tema está en que no he encontrado la documentación sobre cuando el intérprete usa ese vector de salto. |
| |||
| > La verdad es que es una "variable" poco documentada. Es un vector de > llamada, no una variable, lo que no tengo claro que para que se usa > exactamente, pero tiene relacción con el intérprete de BASIC. > 23735 VECTOR Address used to extend the Basic interpreter pues es verdad, apenas hay comentarios al respecto -o al menos no aparecen más que un par de reseñas en google-. Aún así, me he entretenido un con un par de PEEKs y resulta que 23735 contiene 9 y 23736 contiene 168 siempre (con "siempre" me refiero a sin microdrives ni cosas raras, tal cual arranca el Spectrum). Si realmente es un vector, quiere decir que por defecto señalaría a la dirección 9+256*168=43017 pero desde luego esa dirección no está en ROM ¿¿¿????, claro que cuando se hace el POKE con 181, la cosa no va a mejor, pues en ese caso sería 9+256*181=46345 y tampoco esa parece una dirección muy "razonable". En cuanto a esto: > Si pokeas en la 23736 con un valor, estás modificando la dirección del > vector, y posiblemente lo que hace al meter 181 es apuntar a un trozo > de código de la ROM que provoque el efecto que comentas. Se puede > pokear con más valores para apuntar a otros sitios, vamos, a cualquier > dirección de la RAM o ROM, así que puedes hacer que el vector apunte a > código tuyo, yo no lo veo tan claro (y no solo por lo que decía más arriba de las direcciones a donde señala el "vector"). Verás, según eso, si hiciera: POKE 23735,0:POKE 23736,0:SAVE "xx" debería ver un "bonito reset" al instante :-) , pero en lugar de eso se "bloquea" todo... gracias al emulador sé que se bloquea en un HALT que hay en la dirección 0x1303 -imagino que estarán las interrupciones deshabilitadas cuando llega a él y no debíeran estarlo-, pero desde luego cualquiera sabe como ha ido ahí a parar :-) En fin, un extraño "misterio" que me temo que quedará sin resolver :-) ... ¿quien dice que ya se conoce todo de nuestra máquina? Muchas gracias por contestar. Un saludo. |
| |||
| > La verdad es que es una "variable" poco documentada. Es un vector de > llamada, no una variable, lo que no tengo claro que para que se usa > exactamente, pero tiene relacción con el intérprete de BASIC. > 23735 VECTOR Address used to extend the Basic interpreter pues es verdad, apenas hay comentarios al respecto -o al menos no aparecen más que un par de reseñas en google-. Aún así, me he entretenido un con un par de PEEKs y resulta que 23735 contiene 9 y 23736 contiene 168 siempre (con "siempre" me refiero a sin microdrives ni cosas raras, tal cual arranca el Spectrum). Si realmente es un vector, quiere decir que por defecto señalaría a la dirección 9+256*168=43017 pero desde luego esa dirección no está en ROM ¿¿¿????, claro que cuando se hace el POKE con 181, la cosa no va a mejor, pues en ese caso sería 9+256*181=46345 y tampoco esa parece una dirección muy "razonable". En cuanto a esto: > Si pokeas en la 23736 con un valor, estás modificando la dirección del > vector, y posiblemente lo que hace al meter 181 es apuntar a un trozo > de código de la ROM que provoque el efecto que comentas. Se puede > pokear con más valores para apuntar a otros sitios, vamos, a cualquier > dirección de la RAM o ROM, así que puedes hacer que el vector apunte a > código tuyo, yo no lo veo tan claro (y no solo por lo que decía más arriba de las direcciones a donde señala el "vector"). Verás, según eso, si hiciera: POKE 23735,0:POKE 23736,0:SAVE "xx" debería ver un "bonito reset" al instante :-) , pero en lugar de eso se "bloquea" todo... gracias al emulador sé que se bloquea en un HALT que hay en la dirección 0x1303 -imagino que estarán las interrupciones deshabilitadas cuando llega a él y no debíeran estarlo-, pero desde luego cualquiera sabe como ha ido ahí a parar :-) En fin, un extraño "misterio" que me temo que quedará sin resolver :-) ... ¿quien dice que ya se conoce todo de nuestra máquina? Muchas gracias por contestar. Un saludo. |
| |||
| > La verdad es que es una "variable" poco documentada. Es un vector de > llamada, no una variable, lo que no tengo claro que para que se usa > exactamente, pero tiene relacción con el intérprete de BASIC. > 23735 VECTOR Address used to extend the Basic interpreter pues es verdad, apenas hay comentarios al respecto -o al menos no aparecen más que un par de reseñas en google-. Aún así, me he entretenido un con un par de PEEKs y resulta que 23735 contiene 9 y 23736 contiene 168 siempre (con "siempre" me refiero a sin microdrives ni cosas raras, tal cual arranca el Spectrum). Si realmente es un vector, quiere decir que por defecto señalaría a la dirección 9+256*168=43017 pero desde luego esa dirección no está en ROM ¿¿¿????, claro que cuando se hace el POKE con 181, la cosa no va a mejor, pues en ese caso sería 9+256*181=46345 y tampoco esa parece una dirección muy "razonable". En cuanto a esto: > Si pokeas en la 23736 con un valor, estás modificando la dirección del > vector, y posiblemente lo que hace al meter 181 es apuntar a un trozo > de código de la ROM que provoque el efecto que comentas. Se puede > pokear con más valores para apuntar a otros sitios, vamos, a cualquier > dirección de la RAM o ROM, así que puedes hacer que el vector apunte a > código tuyo, yo no lo veo tan claro (y no solo por lo que decía más arriba de las direcciones a donde señala el "vector"). Verás, según eso, si hiciera: POKE 23735,0:POKE 23736,0:SAVE "xx" debería ver un "bonito reset" al instante :-) , pero en lugar de eso se "bloquea" todo... gracias al emulador sé que se bloquea en un HALT que hay en la dirección 0x1303 -imagino que estarán las interrupciones deshabilitadas cuando llega a él y no debíeran estarlo-, pero desde luego cualquiera sabe como ha ido ahí a parar :-) En fin, un extraño "misterio" que me temo que quedará sin resolver :-) ... ¿quien dice que ya se conoce todo de nuestra máquina? Muchas gracias por contestar. Un saludo. |
| |||
| Quizá no sea un vector puro y duro en el sentido de dirección de llamada, es complicado saberlo sin saber de qué forma se usa (incluso que la documentación de que sea un vector sea correcta). Yo como no programo en Basic la verdad es que estas cosas no las he mirado nunca, pero vamos, que me interesa como anécdota. |
| |
| |
| |||
| Quizá no sea un vector puro y duro en el sentido de dirección de llamada, es complicado saberlo sin saber de qué forma se usa (incluso que la documentación de que sea un vector sea correcta). Yo como no programo en Basic la verdad es que estas cosas no las he mirado nunca, pero vamos, que me interesa como anécdota. |
| |||
| Quizá no sea un vector puro y duro en el sentido de dirección de llamada, es complicado saberlo sin saber de qué forma se usa (incluso que la documentación de que sea un vector sea correcta). Yo como no programo en Basic la verdad es que estas cosas no las he mirado nunca, pero vamos, que me interesa como anécdota. |
![]() |
| Herramientas | |
| Desplegado | |
| |
Temas Similares | ||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| CAMBIAR DIRECCION DE CORREO ELECTRONICO O DIRECCION DE MESS | Danger.ve | Newsgroup microsoft.public.es.msn.messenger | 4 | 20-03-2007 20:54:06 |
| Conexión extraña | José Manuel | Newsgroup es.comp.virus | 12 | 23-01-2007 20:00:12 |
| IP MUY EXTRAÑA | Q | Newsgroup es.comp.redes.misc | 8 | 08-06-2006 10:22:07 |
| peticion extraña | CADchondo | Newsgroup es.comp.cad.autocad | 0 | 28-10-2005 09:25:25 |
| cosa extraña en C | Ricardo Catalinas Jimenez | Newsgroup es.comp.os.linux.programacion | 40 | 26-04-2005 20:49:19 |