segunda-feira, 15 de julho de 2019

Realce de sintaxe no BASIC MSX / Syntax highlighting on MSX-BASIC




            Este aqui é um pequeno truque que descobri para gerar um "pseudo" realce de sintaxe na SCREEN 1 (modo de texto) do MSX. 


        O resultado fica como visto abaixo:


O código para gerar esse efeito é exatamente o da imagem.

       Para modificar a cor basta alterar o valor após a vírgula:







Alguns valores alteram também a cor de fundo:




       Já deu pra ver que o "pulo do gato" está nesses "VPOKEs", que alteram apenas a cor das letras maiúsculas, deixando o restante (números e símbolos) em branco (cor padrão). Acredito que agora ficou claro porque chamei de "falso" realce de sintaxe. Apesar disso, pode-se dizer que tal macete não é de todo irrelevante (!), pois de fato melhora a legibilidade do código. 


      No meu caso, achei particularmente útil no momento em que achatava meu "ten liner". Veja abaixo como pode realmente facilita um pouco a vida do espremedor de código programador:

     


Trecho do meu "10 Liner"  ("Ballistic Challenge").


Agora o mesmo trecho porém sem o realce:

É mais fácil encontrar genro com a foto da sogra na carteira do que bugs nesse código! 

         
  E mais outro fragmento, com outra cor:




           Agora mais alguns exemplos com códigos mais "normais" (não comprimidos):






       
         É possível adicionar outra cor no lugar do branco, para isso basta chamar o comando COLOR escolhendo a cor do primeiro plano (por exemplo.: color 7, 1, 1) antes dos VPOKEs:

  
Estas duas linhas já fazem a mágica acontecer















 Como escolher as cores (da tinta e do fundo)

    Há 16 cores e para cada uma é dado um código, entre 0 e 15, como abaixo:

Código das cores do MSX em SCREEN 1


     O código a ser VPOKEado na VRAM (ou seja, o valor após a vírgula), pode ser calculado da seguinte maneira:

Pegue o código da cor de tinta selecionada. Multiplique por 16 e adicione o código para a cor do fundo. 

   Suponhamos que queremos cor de tinta branca com fundo azul escuro. Basta multiplicar 15, que é o código da cor branca, por 16 e somarmos com o código da cor azul escuro, que é 4:


15 x 16 = 240 + 4 = 244





   
     Este recurso só é possível nas SCREEN 1 e 2. Se você precisar ou quiser alterar as cores dos caracteres na SCREEN 2 (modo gráfico), os endereços da VRAM para os VPOKES ficam entre 8192 e 14335. 
      
         

           Até a próxima!
       

       

BASIC 10-Liners Contest 2020