★ APPLICATIONS ★ CREATION GRAPHIQUE ★ TEXTOS EN MOVIMIENTOS MUY SUAVES ★ |
RSX Rota (Amstrad User) | Applications Creation Graphique |
Los que conozcan juegos como Manic Miner o Jet Set Willy saben a qué nos referimos. Este listado introduce el comando |ROTA,X,Y, a$. X e Y son las coordenadas donde queremos situar el texto, y a$ debe contener el texto a rotar. Si a$ está vacia el ordenador se colgará. El ancho del texto a rotar está limitado al ancho de la pantalla según el modo de pantalla. Para que el texto deje de rotar, bastará con teclear |ROTA sin parámetros. Igualmente se desactiva la rutina al utilizar el comando MODE. Hay que hacer notar que esta rutina utiliza el sistema de interrupciones, por lo que el texto puede seguir rotando mientras, por ejemplo, editamos un programa. Probad el listado de demostración después de haber ejecutado con éxito el cargador. Observaréis que este truco funciona incluso aunque se haya producido algún scroll de pantalla previamente, para lo cual hemos tenido la fortuna de contar con el sistema operativo del AMSTRAD, que nos proporciona una serie de rutinas muy interesantes, tales como la situada en &BC1A. A esta rutina le damos las coordenadas X e Y de un carácter de pantalla en los registros H y L, y nos devuelve en HL la dirección de la fila de pixels superior izquierda del carácter, y en el registro B el ancho en bytes de un carácter, que depende del modo de pantalla en que nos encontremos (1 en MODO 2,2 en MODO 1 y 4 en MODO 0). Las coordenadas que tenemos que darle corresponden al comando LOCATE pero disminuidas en 1 (es decir, si queremos pasarle las coordenadas 3 y 5, deberemos introducir 2 en el registro H y 4 en el registro L). También se ha utilizado el sistema operativo para toda la gestión de interrupciones, mientras que lo que es la rotación de texto en si se realiza directamente sobre la memoria de pantalla. Se ha utilizado la cola de interrupciones sincronizadas con el retorno del trazo del tubo de rayos catódicos. Como el acceso a disco y cassette prohíbe las interrupciones del Z80, al realizar estas funciones el texto se detendrá (caso del cassette) o presentará «tropiezos» (caso del disco) pero en cualquier caso se recupera el movimiento al finalizar el proceso de Entrada/Salida. J.J.V. y A.Z.E. , Amstrad User
|