Essa versão implementa a maioria das expressões do QBasic, e permite executar muitos de seus programas, incluindo os clássicos jogos Gorillas e Nibbles. Além do mais, QB64 foi desenhado para ter um IDE semelhante ao do QBasic. O programa estende a linguagem de programação do QBasic para incluir tipos de dados de 64 bits, assim como melhor suporte a sons e gráficos.
Desde a versão 2.0, o QB64 oferece funções para depurar o código do usuário em tempo real, com o novo metacomando $DEBUG.[3]
História
QB64 foi originalmente compilado com QuickBASIC 4.5. Após um desenvolvimento significativo, Galleon, o programador, teve alguma dificuldade devido aos limites de memória e mudou para o Microsoft BASIC PDS 7.1, que lhe resolveu essa dificuldade durante um curto espaço de tempo. Após a versão 0.63, QB64 adquiriu a capacidade de compilar a si próprio, pelo que o limite da memória convencional já não se aplicava.
Sintaxe
A sintaxe do QB64 é projetada para ser completamente retrocompatível com o QuickBASIC. Números de linha não são obrigatórios, e os comandos são terminados com uma nova linha ou com dois pontos :.
Um exemplo da emulação de memória VGA implementada no QB64 para compatibilidade:
CLSS$="Olá, mundo!"DEF SEG=&HB800'aponta para a memória de vídeoFORI=1TOLEN(S$)POKE160+(I-1)*2,ASC(MID$(S$,I,1))'caractereNEXTDEF SEG'redefine o segmento para o padrão
Um exemplo do uso de arquivos de áudio com o QB64:
som&=_SNDOPEN("som.wav")'WAV, OGG ou MP3_SNDPLAYsom&
Um exemplo do uso de arquivos de imagem com o QB64:
SCREEN_NEWIMAGE(800,600,32)'cria uma tela de 32bitimagem&=_LOADIMAGE("arquivoDeImagem.png")'BMP, JPG, PNG, etc._PUTIMAGE(0,0),imagem&_FREEIMAGEimagem&'libera a memória utilizada pela imagem
Exemplo de como o QB64 utiliza múltiplos timers:
t1=_FREETIMERt2=_FREETIMERON TIMER(t1,1)GOSUBTimer.Trap'o código que vem após o label Timer.Trap será executado a cada 1 segundoON TIMER(t2,.5)mySub'QB64 também pode executar uma SUB com TIMER;' neste caso, mySUB será executada a cada 500 milisegundos'ativa os timers:TIMER(t1)ONTIMER(t2)ONDO'entra em loop até a janela ser fechada_LIMIT1'executa o loop em 1 ciclo por segundo, demonstrando que timers não são afetadosLOOPTimer.Trap:PRINT"1s; ";RETURNSUBmySubPRINT"500ms; ";ENDSUB
Extensões ao QuickBASIC
Os comandos adicionais do QB64 começam por um underscore (traço inferior) de forma a evitar conflitos com nomes já existentes no QuickBASIC. A partir da versão 1.4, o metacomando $NOPREFIX foi introduzido, a fim de que as instruções modernas possam ser utilizadas sem o prefixo (_)[4]. Adicionalmente, novos tipos de dados existem no QB64, incluindo _BIT, _BYTE, e _INTEGER64 assim como tipos de dados sem sinal. Os novos tipos de dados têm um sufixo tal como nos tipos de dados tradicionais do BASIC. QB64 também inclui uma biblioteca de audio que permite tocar os formatos mais usuais, incluindo ficheiros MP3, Ogg Vorbis, e WAV, assim como bibliotecas que permitem ao utilizador utilizar resoluções gráficas superiores a 640*480 (máximo permitido pelo QuickBASIC[5]), utilização de variadas fontes de texto, e inserção de imagens em formato BMP, PNG e JPEG. Permite igualmente a utilização de cores a 32 bits. As bibliotecas são incluídas automaticamente pelo QB64, pelo que o programador não necessita de as especificar. E tal como no QuickBASIC, o programador pode incluir suas próprias bibliotecas através do comando $INCLUDE. Bibliotecas externas são suportadas por meio do comando DECLARE LIBRARY, podendo utilizar extensões escritas em C e DLLs diretamente.
Bibliotecas
Atualmente, QB64 utiliza a biblioteca OpenGL para os modos gráficos e modos de texto.
Referências
↑Stephane Richard (16 de novembro de 2007). «In The News». PCOPY! Issue #50. Consultado em 17 de agosto de 2008. Arquivado do original em 21 de dezembro de 2009
↑E.K.Virtanen (26 de maio de 2008). «Interview With Galleon». PCOPY! Issue #70. Consultado em 14 de julho de 2008. Arquivado do original em 21 de agosto de 2008