Apesar de que los AMSTRAD CPC ofrecen una considerable cantidad de memoria para los programas en BASIC, siempre existe la posibilidad de que usted desarrolle un programa muy largo y le falte espacio en la memoria, o bien es posible que su programa no sea excesivamente largo, pero utilice muchos datos en matrices y de nuevo puede quedarse sin memoria. ¿Qué hacer en estos casos? Una primera operación debe ser la de eliminar en lo posible las sustancias REM, ya que cada carácter situado detrás de un REM ocupa un byte de memoria, pero no ejerce ninguna función en el programa. Si una vez hecho esto seguimos con problemas de memoria, podemos intentar acortar los nombres de las variables. Por ejemplo, una variable llamada saldorre-sultante (13 bytes) puede sustituirse por rs, con lo cual ahorraremos 11 bytes, a cambio de perder claridad a la hora de intentar descifrar lo que hace el programa. Evidentemente un ahorro de 11 bytes es muy poco, pero hemos de considerar que en un programa muy largo algunas variables pueden aparecer cerca de un centenar de veóes. Acortando los nombres de todas las variables el ahorro puede ser significativo. El problema que nos encontramos es, sin embargo, realmente desesperante. Y es que recorrer un listado de alrededor de 30 K buscando una variable para cambiarla por otra constituye un verdadero trabajo «de chinos». De ahí que el uso del programa-herramienta que proponemos cobre verdadero interés, pues su función es precisamente sustituir un nombre de variable por otro. Para ello, utilizamos un comando residente |VAR que estará acompañado por un nombre de la variable a sustituir y el nuevo nombre para esta variable. La rutina en máquina se encarga de la búsqueda en todo el programa y del cambio pertinente, liberándonos así de la parte más dura del trabajo. La sintaxis del comando es la siguiente: CPC 664 y CPC 6128: |VAR, “nombre a sustituir","nuevo nombre” CPC 464: a$=” nombre a sustituir”;b$ = “nuevo nombre”:|VAR,@a$,@b$Aclaremos esto con un ejemplo, utilizando la variable del ejemplo anterior (saldorresultante), que queremos cambiar por sr. En el 664 ó 6128 deberíamos escribir |VAR,"saldorresultante","sr", con lo cual se produciría el cam bio en todo el listado. Para el 464, escribiríamos: a$ = "saldoresultante":b$ = "sr":|VAR,@a$,@b$Una vez tecleado ef programa y ejecutado sin errores, podemos salvar la rutina en código máquina con RUN 140. Esta rutirra, una vez salvada, puede ser utilizada directamente sin necesidad del cargador, con tan sólo escribir esta línea: MEMORY &A100-1 :LOAD"VARIABLE.BIN":CALL &A100con lo cual el comando quedará instalado.Su funcionamiento es bastante simple. Primero almacenamos los nombres de las variables en una zona de memoria. Después de esto, nos dedicamos a buscar el nombre de la variable a sustituir en cada línea y, una vez encontrada, procedemos a aumentar o disminuir la longitud de la línea según la diferencia de tamaño entre las dos variables. El paso siguiente sería mover el resto del programa hacia adelante o hacia atrás según proceda. Esta secuencia es realizada hasta llegar a la última línea del programa. Por último, hay que cambiar algunas variables del sistema para informarle de la nueva longitud del programa. Por supuesto, se pueden cambiar también nombres cortos por nombres largos. Simplemente indicábamos antes el uso quizá más frecuente de esta rutina, pero cada uno puede utilizarla como prefiera. Paco FLORES y Jesús SUAREZ , Amstrad User #9
| ★ AMSTRAD CPC ★ DOWNLOAD ★ |
|
CPCrulez[Content Management System] v8.732-desktop/c Page créée en 123 millisecondes et consultée 930 foisL'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko. |
|
|