Hoy os presentamos en esta sección una rutina en Código Máquina que permite confeccionar pantallas de presentación o de menú, con sólo escribir lo que debe aparecer en la misma. De esta forma, cuando esté confeccionado el texto que debe aparecer, la rutina realizará el programa Basic correspondiente, de forma que al ejecutarlo aparezca todo lo que nosotros hemos escrito en pantalla. Corno recordaréis, ya apareció hace algún tiempo en esta misma sección un programa de características parecidas, pero que en aquel caso nos proporcionaba un programa Basic con las líneas DATA correspondientes a las posiciones de memoria indicadas en la llamada. En este caso el método utilizado para generar el programa Basic, es exactamente el mismo, con las únicas diferencias de los códigos de los comandos que deben aparecer. Vamos a ver a continuación la forma de trabajo para generar nuestras propias pantallas de presentación, de menú o de instrucción para nuestros programas. Para ejecutar la rutina, deberemos ejecutar la siguiente instrucción Basic: CALL &A000,Xdonde el parámetro X, indicará el modo de pantalla de trabajo con la cual deseamos que aparezca nuestro texto o dibujo.Así pues, dicho parámetro podrá contener los siguientes valores: X = 0 PARA MODO 0 X = 1 PARA MODO 1 X = 2 PARA MODO 2En el caso de que al realizar la llamada se introduzcan más parámetros de los necesarios, el programa retornará al Basic sin ejecutarse. Una vez hayamos ejecutado el programa correctamente, se nos presentará un cursor en pantalla, mediante el cual podremos imprimir nuestros textos. Para mover dicho cursor, disponemos de las teclas que se indican a continuación:Cursor derecha . . . . . . . Derecha Cursor izquierda . . . . . Izquierda Cursor abajo . . . . . . . . Abajo Cursor arriba . . . . . . . Arriba ESC . . . . . . . . . . . . . . Confeccionar el programa Basic y fin de programa. BORR . . . . . . . . . . . . . Borrar el carácter anteriorTodas las demás teclas que no se han mencionado anteriormente, no imprimirán en pantalla su carácter ASCII correspondiente. Por tanto, debemos tener mucho cuidado de introducir algunas teclas pulsando al mismo tiempo la tecla ‘CONTROL', ya que podría producir efectos catastróficos en el texto que estamos confeccionando. Como vemos, pues, la forma de trabajo es realmente sencilla, ya que realmente todo el trabajo lo hace la rutina que es la encargada de confeccionar el programa Basic. Una vez pulsada la tecla ‘ESC', el programa retornará al Basic, con lo cual podremos listar el programa que se ha confeccionado. Ahora pues, únicamente deberemos salvarlo en disco o cinta para utilizarlo posteriormente. De esta forma si nosotros hemos imprimido en la línea 1 columna 1 de la pantalla el siguiente texto, en el modo 1 de pantalla:PRUEBA DEL GENERADOR DE PROGRAMAS *********************************El programa que nos generará nuestra rutina una vez pulsado ‘ESC', será de la siguiente forma:1 MODE 1 2 LOCATE 1,1:PRINT"PRUEBA" 3 LOCATE 8,1:PRINT"DEL" 4 LOCATE 12,l:PRINT"GENERADOR" 5 LOCATE 22,i;PRINT"DE" 6 LOCATE 25,1:PRINT"PROGRAMAS" 7 LOCATE I,2:PRINT "***********************************************"Veamos a continuación cuál es el funcionamiento del programa y la forma en que es almacenada la información para confeccionar el programa Basic correspondiente. En primer lugar existe un programa que se encarga de permitir la confección de la pantalla correspondiente, el cual produce un chequeo de las teclas de cursor y de la tecla ‘ESC', las cuales nos permitirán movernos a través de la pantalla y volver al Basic respectivamente. Todas las demás teclas que sean pulsadas, producirán la impresión del carácter correspondiente a cada una de ellas en pantalla. Cuando se pulse la tecla ‘ESC', el programa anterior envía el control al segundo programa que es realmente el encargado de realizar el programa, y una vez hecho, devolver el control al Basic para que podamos salvar nuestro programa de presentación. Este segundo programa, lo primero que hace es generar una línea 1, en la cual aparece el comando ‘MODE', seguido del número correspondiente al modo de pantalla elegido para trabajar. Para ello coloca el puntero de programa, que en este caso es el registro doble DE, en la dirección de memoria #170, en la cual empieza el Basic. A partir de aquí, la rutina se encarga de leer el contenido de la pantalla, y en el momento que encuentre un carácter distinto de 32 (carácter espacio), se encarga de colocar otra línea con los códigos correspondientes a la sentencia Basic ‘LOCATE' seguida de las coordenadas de impresión correspondientes a dicho comando. A continuación coloca el código correspondiente a seguido del código perteneciente al comando ‘PRINT', seguido de unas comillas, entre las cuales introduce los códigos ASCII de los caracteres leídos en pantalla. El programa seguirá introduciendo dichos códigos hasta el momento que encuentre un espacio en blanco o bien en el momento en que termine la línea actual, colocando al final otra vez las dos comillas. Esta operación continuará hasta que se hayan leído las 25 líneas horizontales de que se compone la pantalla para cada uno de los distintos modos. Una vez terminada la lectura de la pantalla e introducidos los códigos correspondientes a cada uno de los caracteres impresos en pantalla, se colocarán los datos correspondientes al programa Basic que se va a generar. Para ello se deben tomar los datos de los comandos de una tabla, seguidos del texto que se deberá imprimir, introduciéndolos en las líneas correspondientes. Cuando se hayan terminado todas las operaciones para la generación del programa, deberemos informar al sistema de que existe un programa Basic en memoria, así como la longitud del mismo. Una vez hecho esto, el programa estará listo para almacenarlo en disco o cinta, de la misma forma que haríamos con un programa en Basic realizado por nosotros mismos. Esto deberemos indicarlo en variables que el Amstrad reserva para ello. Estas son distintas para las diferentes gamas de ordenadores, por lo que deberemos variar algunas líneas del programa ensamblador y del cargador Basic. Los listados que aparecen al final del artículo, corresponden a las versiones para CPC 664 y CPC 6128; para los que posean un CPC464, se deberán realizar los cambios que se indican a continuación: en el listado ensamblador, se deberán cambiar las líneas que se citan:1620 LD (#AE83),DE 1630 LD (#AE85),DE 1640 LD (#AE87),DE 1650 LD (#AE89),DEAquellos que elijan la opción del cargador Basic, deberán efectuar los siguientes cambios:50 IF SUMA<>54975 TKEN PRINT "ERROR EN DATAS" 510 DATA 19,237,83,131,174,237,83 520 DATA 135,174,237,83,137,174,237 530 DATA 83,139,174,201,245,229,213Para poder disfrutar del programa, deberemos copiar el listado que aparece a continuación, y ensamblarlo en la dirección que se desee, una ve hecho esto deberemos salvar en cinta o disco el código objeto, para poder ejecutarlo cuando se desee. Aquellos que prefieran teclear el cargador Basic, deberán ejecutarlo una vez terminado, y en caso de que no aparezca ningún error, salvarlo como código objeto, con:SAVE “GENERA”,B, &A000,1024Y para ejecutarlo:LOAD "GENERA" CALL &A000,0 (ó 1 ó 2).AS
| ★ AMSTRAD CPC ★ DOWNLOAD ★ |
|
|
CPCrulez[Content Management System] v8.74-desktop/c Page créée en 134 millisecondes et consultée 61 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. |
|