Capítulo 2 - ESCREVENDO NOMES



  Agora, vamos usar a mesma sub-rotina para escrever um nome na tela. Vamos aproveitar para ver uma ferramenta bastante útil na depuração de um programa: o SI.

  Digite o programa ao lado.
10 Indica onde o programa irá começar.
20 Define uma etiqueta, ou seja, toda vez que o programa encontrar a palavra WRTVRM, substituirá pelo valor &H4D.
30 Atribui valor 0 aos registradores H e L. HL passa como parâmetro para a sub-rotina WRTVRM o endereço da VRAM. 0 fica em 0,0; 1 em 0,1, etc.
40 Passa para os registradores BC a posição inicial da primeira letra do nome.
50 Passa como parâmetro para A, o conteúdo da memória no endereço BC.
60 Chama sub-rotina da BIOS que escreve letra na tela.
70 Incrementa (x = x+1) HL (posição na tela).
80 Incrementa BC (posição no nome).
90 faz operação lógica com A, para setar os flags. O A contém o código ASCII da letra atual do nome.
100 Quando o caracter ASCII for 0, encerra o programa, senão GOTO loop.
110 "RETurn".
120 Cria a string com o nome.
130 Acrescenta um byte 0 ao final do nome, para indicar ao programa onde parar.
   
  Dê um pulinho no BASIC para rodar o programa. Se você já havia definido o endereço de execução no BASIC em &HC000, use direto o x=usr(0). Senão, use o defusr=&hc000 antes.
   
  Esta variação, escreve o nome na tela várias vezes.
   
  Aqui está uma grande ferramenta de depuração. Digite SI &HC000 no RSC II e em seguida, H.
  Observe na tela, o valor de todos os registradores na tela. Você poderá executar o seu programa passo a passo e verificar as mudanças que acontecem nos registradores, e com isto, verificar se a instrução usada está funcionando de acordo com o desejado.
  Se você teclar E, a instrução que estiver na última linha será executada e todas as mudanças (se ocorrer) serão vistas na tela. Não execute as subr-rotinas, ou o RSC II irá travar :(. Quando você chgar a um CALL WRTVRM, por exemplo, digite S, que a próxima linha virá sem que esta seja executada :). Para sair, tecle <CTRL+STOP>.



A teoria foi desenvolvida por Marcelo Silveira.
/MARMSX/RSCII/DICA2 1
Hosted by www.Geocities.ws