★ APPLICATIONS ★ DIVERS ★ TEXTOS EM MOVIMENTOS SUAVES ★![]() |
| RSX RODA (Amstrad Magazine) | Applications Divers |
OS que conhecem jogos como Manic Miner ou Jet Set Willy sabem a que é que nos referimos. Esta listagem apresenta o comando RODA, X, Y, a$. Assim, X e Y são as coordenadas onde queremos situar o texto, enquanto a$ deverá conter o texto que irá girar. Se a$ estiver vazia o computador “encalha”. A largura do texto a girar está limitada pela largura do ecrã, segundo o tipo de ecrã. Para que o texto deixe de girar basta digitar RODA sem mais parâmetros. O comando MODE desactiva igualmente esta rotina. É preciso notar que a rotina utiliza o sistema de interrupções, pelo que o texto pode continuar girando enquanto, por exemplo, editamos um programa. Experimente a listagem de demonstração depois de carregar o programa. Verá que este truque funciona mesmo que, previamente, se tenha executado algum scroll, o que se consegue graças ao sistema operativo do Amstrad que integra uma série de rotinas muito interessantes, tais como a situada em #BC1A. Damos a esta rotina as coordenadas X e Y de um determinado caracter, nos registos H e L, e ela apresenta-nos em HL a direcção da fila superior esquerda de pixels, e no registo B a largura em bytes de um caracter, que depende do modo de ecrã em que nos encontremos (1 em MODO 2, 2 em MODO 1 e 4 em MODO 0). As coordenadas que temos que dar-lhe correspondem ao comando LOCATE, mas subtraídas de uma unidade (quer dizer, se queremos as coordenadas 3 e 5, devemos introduzir 2 no registo H e 4 no registo L). O sistema operativo foi igualmente utilizado para toda a gestão de interrupções, enquanto que o que é rotação de texto se realiza directamente na memória de ecrã. As interrupções sincronizadas foram feitas recorrendo ao retorno do traço do tubo de raios catódicos. Como o acesso a disquete e cassete não permite as interrupções do Z80, ao realizar estas funções o texto detém-se (caso de cassete) ou apresenta “saltos” (caso da disquete). Mas em qualquer dos casos recupera-se o movimento ao terminar o processo de Input/Output.
|