Generar lineas Basic

Por Warchild

Paragon (1280)

Imagen del Warchild

25-06-2014, 18:54

Buenas, necesito ayuda porque no me aclaro mucho... quiero generar una linea de programa Basic a partir del contenido de una variable y que el intérprete la añada al listado. He hecho alguna prueba pero consigo gran cosa. He probado esta pequeña rurina:

CALL &HAE ; (PINLIN)
LD IX,&H42B2 ; dir CRUNCH
CALL &H0159 ; CALBAS para ejecutar CRUNCH
RET

Bueno, no estoy muy puesto en ensamblador pero pensé que esto funcionaría. Sin embargo el resultado es que muestra en pantalla lo mismo que he introducido con el teclado con una coma delante y el error Type Mismatch. No sé si la rutina CRUNCH es la que debo usar o si realmente esa sea su dirección porque casi no he encontrado información sobre la rutina. ¿Alguien me puede echar una mano? Seguro que se me escapa algo obvio, pero no consigo avanzar.

Login sesión o register para postear comentarios

Por jrcp_kun

Paragon (1410)

Imagen del jrcp_kun

28-06-2014, 21:18

rurina si que es!!! a ver si alguien te ayuda

Por Warchild

Paragon (1280)

Imagen del Warchild

01-07-2014, 10:35

Gracias! Smile ¿Tienes algun documento con las rutinas del intérprete? Encuentro las rutinas de los comandos del Basic y del math-pack pero solo un par de referencias a CRUNCH y MAINLOOP. Quizá deba hacer algo más con el contenido de KBUF, que es donde va a parar el resultado al ejecutar CRUNCH pero no conozco más rutinas relacionadas con esto.

Por kabish

Master (223)

Imagen del kabish

01-07-2014, 12:02

En el MSX top secret habia algo sobre como se almacenan los numeros de linea en basic, pero no recuerdo mas. Hace mucho que no lo toco.

Por Warchild

Paragon (1280)

Imagen del Warchild

01-07-2014, 15:06

Jajaja jrcp_kun me he dado cuenta ahora de lo de rurinaaaa XD que joío jajaja (y yo que ciego)

Gracias kabish, el top secret y el red book es donde suelo rebuscar estas cosas, pero no encuentro lo que necesito o no lo sé ver... sobre cómo se almacena el programa basic algo miré y no me fue muy difícil hacer que mostrara las lineas de programa que contuvieran un rem, por ejemplo. Pero añadir una linea al programa se me resiste.

Por jltursan

Prophet (2520)

Imagen del jltursan

01-07-2014, 18:36

Um, se me ocurre que a lo mejor utilizando el buffer de entrada del intérprete se podría introducir una línea. Normalmente esto es útil cuando programativamente quieres que ejecute algo el BASIC, por ejemplo, un RUN "LOADER.BAS". Cargas la linea en el buffer e invocas a la rutina de parseo de comandos para que la ejecute.
Es posible que si precedes la linea de un número, actue al 100% como el intérprete y se limite a convertirla en una línea de programa.

Por Warchild

Paragon (1280)

Imagen del Warchild

03-07-2014, 12:12

Gracias jltursan, en realidad eso es lo que intento con la rutina pero aunque introduzca por ejemplo "100 CLS" el resultado es lo que decía al principio. Pero por lo que dices, es probable que esa rutina de parseo a la que haces referencia no sea CRUNCH y deba llamarla para completar el proceso. Pensaba que ya lo hacía CRUNCH. ¿Sabes cual es la dirección de llamada?

Por arnold_m

Master (173)

Imagen del arnold_m

13-07-2014, 15:36

MS(X/DOS) Computer Magazine publicó en 1988 un programa que permite a un programa escrito en Basic modificar se mismo. Puedes encontrarlo en este pdf, página 12 y 13.
Hay un programa en Basic que pone otro programa en códigos de máquina en memoria y que ofrece la posibilidad de guardarlo. El artículo es en holandés y falta la fuente en lenguaje ensamblador, pero quizás puedes aprender algo investigándolo.

Por Warchild

Paragon (1280)

Imagen del Warchild

15-07-2014, 13:59

Gracias arnold_m! Tendré que sacar tiempo para estudiar el listado pero creo que podré ser capaz de sacar el listado en ensamblador y mirar de entender su funcionamiento. Hale, ya tengo deberes... Smile