CURSOS


Aqui você vai encontrar material de apoio para linguagem de programação voltada ao MSX;

 

 PASCAL / TURBO PASCAL

 

HISTÓRIA;

A linguagem Pascal foi nomeado para Blaise Pascal, um matemático francês que foi um pioneiro na história do desenvolvimento do computador.

Em 1641 , com a idade de dezoito anos, Pascal construiu a primeira máquina aritmética , sem dúvida, o primeiro computador.

Ele iria aperfeiçoar o instrumento, oito anos depois, Pascal deixou o mundo da geometria e física, e mudou seu foco para os estudos religiosos, ou como escreveu Pascal, “Para contemplar a grandeza e a miséria do homem”.

blaisepascal

Pascal morreu em Paris em 19 de agosto, 1662 .

Niklaus Wirth completou o desenvolvimento da linguagem de programação Pascal original, em 1970.

Niklaus

Niklaus Wirth – Criador da linguagem Pascal

Ele baseou-a sobre o estilo do bloco estruturado da linguagem de programação Algol .

Havia dois objetivos originais para Pascal . De acordo com a Norma Pascal (ISO 7185) , esses objetivos eram;

a) disponibilizar uma linguagem adequada para o ensino de programação como uma disciplina sistemática baseada em conceitos fundamentais de forma clara e naturalmente refletida pela linguagem;

b ) para definir uma linguagem cujas implementações poderia ser confiável e eficiente em computadores então disponíveis.

Pascal foi usado nos anos setenta e oitenta para ensino da programação nos computadores.

A linguagem em si é padrão (ANSI ), mas também serviu como modelo utilizado pela Wirth ( modular ) para linguagens mais avançadas, tais como Modula e Oberon.

Borland Turbo Pascal foi produzido tanto para CP/M e MS-DOS, e a versão 3 foi um enorme sucesso e grande parte do software na década de oitenta em pequenos computadores foi escrito com Turbo Pascal.

Infelizmente não foi em Pascal padrão , foi adaptado para CP/M  e ambiente MS-DOS.

A versão 3 foi a última versão para CP/M, no PC muitas versões se sucederam ( Borland Pascal 7 foi o baseado na ultima versão do DOS ) e eventualmente, evoluiu para Delphi (Windows) e Kylix (Linux) .

 

INTRODUÇÃO AO TURBO PASCAL;

A linguagem Turbo Pascal é uma linguagem estruturada, isto é, permite-nos uma melhor organização na maneira de trabalhar.

Como em maioria das linguagens de alto nível, o programa é traduzido para a linguagem de máquina e então executado (o Basic é interpretado).

Afinal, o que vem a ser traduzido ou interpretado?  Um programa é traduzido quando um novo programa equivalente ao fonte é criado, em linguagem de máquina.

Por exemplo, o compilador pega seu programa fonte (.pas) e cria um novo programa equivalente ao seu em linguagem de máquina (.com o na memória). Já o programa interpretado, cada instrução do seu programa é interpretada com instruções em L.M. equivalentes, no momento da execução.

A versão do Pascal do MSX é perfeitamente compatível com a do PC, em termos de funcionamento e arquivo fonte .PAS, isto é, se você fizer um programa em pascal no MSX e levar o fonte para o PC e compilar, tudo bem (no Turbo Pascal 6 e 7 do PC, deve ser acrescido o comando USES CRT).

Este curso tem como finalidade familiarizar você ao Pascal do MSX, incluindo a utilização de blibliotecas criadas por Kari Lamassari, para o MSX 2.

 

INICIANDO;

Diferente do Basic, o Pascal e o C precisam que nós especifiquemos o tipo da variável que iremos trabalhar. Isto é importante saber para futuras aplicações.

Mas por quê fazer isto? Porque todas as variáveis armazenadas na memória são números e estes números podem representar duas coisas; código ASCII de uma letra ou um valor numérico.

Além de saber qual o tipo, é necessário saber o tamanho da variável: 1, 2, 3, 4, …, N bytes. Exemplificando, se dissermos que a variável IDADE é do tipo SHORT, indicamos que o dado é um valor numérico e de tamanho 1 byte.

Todo programa em Pascal precisa ter uma indicação de inicio e fim, no programa principal e nas decisões e loops como if, while, for.

No nosso site encontramos o Pascal para MSX. No mesmo arquivo compactado, encontramos tudo que precisamos para rodar o Turbo Pascal.

Turbo Pascal

Assim que o pascal se inicia, ele irá perguntar se você quer que seja incluída as mensagens de erro, diga que sim, teclando Y.

pascal2

 Na tela principal do Pascal. Temos;
E – Edita arquivo.
C – Compila arquivo.
R – Executa arquivo em uso (Work file).
S – Salva arquivo.
X – Executa.
D – Mostra diretório.
Q – Sai d Pascal.
O – Opções de compilação:
-> M – Compila o programa na memória.
-> C – Compila no disco em formato .com.
-> H – Compila em formato Chain.
-> Q – Sai deste menu.

pascal3

Uma outra tecla que pode ser pressionada, que não aparece no menu é a tecla W. Ela altera o arquivo ativo.
Se nenhum arquivo estiver ativo, ao editarmos (E) um arquivo, ele pedira o nome do arquivo a abrir (Work file). Tecle E e escreva um nome qualquer, sem a extensão. Por sugestão, escreva prog1. Se ele já existir, será aberto, senão criará um novo. Ele criará um arquivo prog1.pas.
Agora, digite o programa. A tecla CTRL+Y apaga a linha e CTRL+K e depois D sai da edição.

pascal4

Ao digitar CTRL+K D, o propt reaparece. Se desejar, tecle uma das setas para voltar o menu.
Agora, poderemos fazer duas coisas: primeiro, somente compilar o programa na memória. Tecle C. segundo, se quisermos rodar, podemos apertar o R, sem a necessidade do C.

Note que apenas escrevemos o programa, compilamos na memória e o rodamos.

Temos que salvar o fonte do nosso programa (o programa em Pascal). Tecle S. Este arquivo é salvo em formato texto e pode ser lido no Pascal do PC e também no Edit, Word etc.

Se quisermos criar um arquivo que rode fora do Pascal, teremos que compilá-lo em um arquivo .COM. Tecle O e em seguida C. Pressione Q e em seguida C.

Agora ele irá sempre que rodarmos ou compilarmos o programa gravar um formato .COM de nosso programa. Ah, cada linha de programa, exceto os begins e ends, são terminadas com um ponto e vírgula (;).

Entendendo o mecanismo do Pascal:

pascal5

O pascal pode tanto compilar (transformar a sua fonte em Pascal para a linguagem de máquina) na memória, como direto para o disquete, no formato .COM. Entre no menu de compilação.

No esquema, compilamos na memória, para testar o programa.

Vejamos alguns exemplos;

Exemplo 1:

Basic  Pascal:
10 print”O MSX vive!” begin
write(‘O MSX vive!’);
end.

Exemplo 2:

Basic  Pascal:
10 for f=1 to 10
20 print f,”O MSX vive!”
30 next f
var f : integer;begin
for f:=1 to 10 do
writeln(f,’ O MSX vive!’);
end.

As variáveis podem ser:

Nome No Pascal Tamanho
Inteira integer 2 bytes (-32768 a 32767)
Short shortint 1 byte (-128 a 127)
Longa longint 4 bytes (-2147483648 a 21…)
Byte byte 1 byte (0 a 255)
Word word 2 bytes (0 a 65535)
Booleana boolean 1 byte (0 ou 1)
Caracter char 1 byte (valor ascii)
String string[n] n bytes

Exemplo 3:

Basic  Pascal: 
10 input”Escreva MSX para sair”;n$
20 if n$  “MSX” then 10
var n : string[255];begin
while n  ‘MSX’ do
begin
write(‘Escreva MSX para sair: ‘);
readln(n);
end;
end.

Quando o FOR, WHILE recebe apenas uma instrução, begin e end são dispensáveis.

A variável string tem que ser declarada com o numero total de caracteres. Ex: string[10] recebe texto com até 10 letras.

A instrução read lê dados do teclado. A inserção de ln ao final de write e read significa que após executar estas instruções, deve-se pular uma linha.

Os espaços entre as linhas e a tabulação são à seu critério.

Exemplo 4:

Basic  Pascal:
10 input”Escreva seu nome”;n$
20 if n$=”MSX” then ?”Fala xará” else ? n$+” é o seu nome!”
var n : string[255];begin
write(‘Escreva seu nome: ‘);
readln(n);
if nome=’MSX’ then
writeln(‘Fala xará’);
else
writeln(‘Seu nome é ‘,n);
end.

Todas as teclas de atalho do Pascal:

Controle do cursor Teclas Opcional
Caracter à esquerda CTRL-S Seta à esquerda
Caracter à direita CTRL-D Seta à direita
Linha para cima CTRL-E Seta para cima
Linha para baixo CTRL-X Seta para baixo
Tela para cima CTRL-R
Tela para baixo CTRL-C
Palavra à esquerda CTRL-A
Palavra à direita CTRL-F
Scroll para cima CTRL-W
Scroll para baixo CTRL-Z
Começo da linha à esquerda CTRL-QS
Fim da linha à direita CTRL-QD
Topo da tela CTRL-QE
Fim da tela CTRL-QX
Topo do arquivo CTRL-QR
Fim do arquivo CTRL-QC
Começo do bloco CTRL-QB
Fim do bloco CTRL-QK
Posição anterior CTRL-QP
Tabulação CTRL-I Tab
Tabulação automática (S/N) CTRL-QI
Inserção ou deleção Teclas Opcionais
Inserção CTRL-V Ins
Apaga caracter à esquerda BS
Apaga caracter sob cursor CTRL-G Del
Apaga palavra à direita CTRL-T
Insere linha CTRL-N
Apaga linha CTRL-Y
Apaga até o fim da linha CTRL-QY
Manuseio de blocos Teclas Opcional
Marcar começo de bloco CTRL-KB
Marcar fim de bloco CTRL-KK
Marcar uma palavra CTRL-KT
Mostar / esconder bloco CTRL-KH
Copiar bloco marcado CTRL-KC
Mover bloco marcado CTRL-KV
Ler bloco de um arquivo CTRL-KR
Escrever bloco num arquivo CTRL-KW
Procura e troca Teclas Opcional
Procurar string CTRL-QF
Procurar/trocar string CTRL-QA
Repetir procura/troca CTRL-L
Outros comandos Teclas Opcional
Inserir caracter de controle CTRL-P, CTRL-X
Abandonar CTRL-U
Restaurar linha CTRL-QL
Terminar Edição CTRL-KD

Kari Lamassari criou “bibliotecas” para o uso da parte gráfica e de rotinas do MSX 2 e DOS-2. Biblioteca é um programa que contém novos comandos para uma linguagem.

São arquivos com extensão .INC e devem ser chamados dentro do programa em pascal da segunte maneira:

{$i date.inc}var hora : integer;

begin
   gettime:=hora;
End.

 
  Note que o comando gettime não existe no pascal, mas com a biblioteca date.inc, o comando passa a ficar disponível. Repare que a inclusão da biblioteca deve ser a primeira coisa a ser feita.

tp3back

DOWNLOAD TURBO PASCAL 2.0

DOWNLOAD TURBO PASCAL 3.0

DOWNLOAD TURBO PASCAL 3.0 – MSX 2.0

(*) Fonte – Marcelo’s HP – Curso de Pascal para MSX.

 BASIC / MSX BASIC

“Os microcomputadores da linha MSX possuem um grande repertório de comandos, muitos deles ainda desconhecidos.  Desfrute deste potencial, valendo-se das principais instruções do MSX BASIC”

 

37139

Por uma questão de objetividade, dividimos os comandos em 11 grupos segundo suas funções: uso em programação, som, entrada e saída, fluxo, uso exclusivo em gráficos , uso em texto, manipulação de variáveis, manipulação de memória, tratamento de interrupções, funções matemáticas e outras.

Note que o MSX BASIC possui mais de 180 comandos e funções, sendo também a mais poderosa das linguagens para micros de 8 bits existente no mundo. A nível de mercado nacional, o MSX BASIC pode ser comparado com o BASIC do IBM-PC, pois este é uma máquina de 16 bits.

Nas tabelas abaixo, você encontrará os 11 grupos de funções e seus respectivos comandos do MSX BASIC.

Por questões de espaço, trataremos com alguma profundidade aqueles comandos que julgamos importantes em cada grupo.

Tratamento de Interrupções
ERROR

INTERVAL ON/OFF/STOP

KEY <n> ON/OFF/STOP

SPRITE ON/OFF/STOP

STRIG ON/OFF/STOP

ON ERROR GOTOON INTERVAL

ON KEY GOSUB

ON SPRITE GOSUB

ON STOP GOSUB

ON STRIG GOSUB

RESUME

Outros Usos
BASE

DEF USR

FRE

KEY LIST

KEY ON/OFF

KEY <n>,”<série>”LET

TIME

USR

VARPTR

VDP

Uso em Fluxo de Programas
FOR-NEXT

GOSUB

GOTO

IF THEN ELSEON GOTO

RETURN

RESUME

ON GOSUB

Uso Exclusivo em Gráficos
CIRCLE

CLS

COLOR

DRAW

LINE

PAINTPOINT

PRESET

PSET

PUT SPRITE

SCREEN

SPRITE$

Uso em Som
BEEP

PLAYPLAY(<n>)

SOUND

Uso em Texto
CLS

COLOR

CSRLN

LOCATE

PRINT

PRINT USINGSCREEN

SPRITE$

SPC

TAB

WIDTH

POS

PUT SPRITE

Funções Matemáticas
ABS

AND

ATN

BIN$

COS

DEF FN

EQV

EXP

FIX

HEX$

IMPINT

LOG

NOT

OCT$

OR

RND

SGN

SIN

SQR

TAN

XOR

Uso em Programação
AUTO

CLEAR

CONT

DATA

DEF FN

DELETE

DIM

END

ERASE

ERR/ERLLIST

NEW

READ

REM

RENUM

RESTORE

RUN

STOP

TROFF

TRON

Uso em Entrada e Saída
BLOAD

BSAVE

CALL FORMAT

CALL SYSTEM

CLOAD

CLOSE

COPY

CSAVE

DSKF

EOF

FIELD

FILES

GET #

INKEY$

INP

INPUTINPUTS

INPUT #

KILL

LFILES

LINE INPUT

LINE INPUT #

LIST

LLIST

LOAD

LOF

LPOS

LPRINT

LSET

MAXFILES

MERGE

MOTOR ON/OFFNAME

OPEN

OUT

PAD

PDL

PRINT

PRINT #

PRINT USING

RUN

RSET

SAVE

STICK

STRIG

WAIT

Manipulação de Memória
POKE

VPOKEPEEK

VPEEK

Uso na Manipulação de Variáveis
ASC

CDBL

CHR$

CINT

CSNG

CVD

CVI

CVS

DEFINT

DEFSNG

DEFDBL

DEFSTR

DIMINSTR

LEFT$

LEN

MID$

MKD$

MKI$

MK$

RIGHT$

SPACE$

STR$

STRING$

SWAP

VAL

Vamos ao Assunto

Uso em Texto

SCREEN: Serve para selecionar o tipo de tela. SCREEN 0 ajusta a tela de texto para 40 caracteres por 24 linhas, SCREEN 1 ajusta a tela para 32 caracteres por 24 linhas.

PRINT USING: Usado para imprimir séries de caracteres ou números em formatos específicos. Existem formatos para séries de caracteres e formatos pra números, que podem ser melhor visualizados na tabela abaixo:

Símbolo Função Exemplo
“^^^^” Retorna dados numéricos com notação em ponto flutuante PRINT USING “#####^^^^”;234.56
“$$” Adiciona $ antes de dados numéricos PRINT USING “$$###.##”;12.35
“+” Coloca o sinal + ou – conforme eles sejam positivos, negativos ou nulos PRINT USING “+###.##”;1.25
“-“ Coloca o sinal – após números negativos PRINT USING “-“;-1.25
“#” Formata o número de dígitos apresentados de um dado numérico PRINT USING “###.##”;355.45
“**” Preenche com asteriscos os espaços em branco de um dado numérico PRINT USING “**”;1.2540
“$**” Acrescenta o símbolo $ antes de dados numéricos e preenche com asteriscos os espaços não ocupados
“,” Coloca uma vírgula em cada três dígitos à esquerda do ponto decimal PRINT USING “####,##”;348.23,29
“!” Retorna o primeiro caracter de uma série de caracteres PRINT USING “!”;A$
“\n esp\” Retorna n+2 caracteres de uma série de caracteres PRINT USING “\   \”;D$
“&” Retorna todos os caracteres de uma série PRINT USING “&”;C$

PUT SPRITE: Este comando, que já foi explicado no artigo Comandos Gráficos no MSX (MS No 54), permite o uso de sprites em modo texto 1 (SCREEN 1).

O programa da listagem 1 faz o seguinte: a linha 10 coloca o micro em modo texto 1 com sprites de 8×8 pontos, a linha 20 define o sprite número 8 como sendo uma linha de 8 pontos (chr$(255)), a linha 30 imprime o texto “MOREIRA & BURD”, a linha 40 movimenta o sprite na horizontal da posição 0 até a posição 100, e a linha 50 finaliza o programa, permanecendo o micro em modo texto, porém, com o sprite fixo na tela (experimente pressionar ENTER várias vezes e veja o que ocorre com o sprite).

Manipulação de Memória

VPEEK: Retorna o conteúdo do byte de uma determinada posição da memória de vídeo (VRAM). Cabe lembrar que os MSX nacionais possuem 16 Kb de memória exclusiva para vídeo, a qual pode ser inclusive utilizada para armazenar dados. Este comando é semelhante ao comando PEEK.

VPOKE: Armazena um byte num dado endereço da VRAM, sendo similar ao comando POKE.

Tratamento de Interrupções

Este é um dos pontos altos do MSX BASIC, pois permite inclusive o uso de um relógio interno para interrupção por tempo.

ON INTERVAL GOSUB: Determina que a cada intervalo de tempo (especificado no comando), o fluxo do programa seja desviado para uma sub-rotina qualquer.

ON KEY GOSUB: Determina que uma sub-rotina seja executada quando uma das dez teclas de função for pressionada.

ON SPRITE GOSUB: Determina que uma sub-rotina seja executada quando ocorrer uma colisão de sprites, ou seja, quando um ponto de um sprite tocar um ponto acesso de outro sprite.

Funções Matemáticas

OCT$: Converte um número decimal em uma série de caracteres que representam o valor deste número (base 8).

HEX$: Semelhante à função anterior, retornando, porém, o seu equivalente na representação hexadecimal (base 16).

BIN$: Similar às funções anteriores, retornando, porém, o número na sua representação binária (base 2).

Uso em Programação

Os MSX trazem todos os comandos existentes nos micros mais avançados, tais como AUTO, RENUM, CLEAR, etc.. Falaremos, a seguir, dos comandos ERR e ERL que auxiliam na correção e manipulação de erros, inclusive do próprio usuário.

ERR: Retorna o código do erro

ERL: Retorna o número da linha onde ocorreu o erro.

Uso em Som

A geração de som e efeitos sonoros é mais um ponto forte do MSX, veja por quê:

PLAY: Este comando permite executar músicas segundo uma macrolinguagem musical. Nesta macrolinguagem é possível tocar oito oitavas, modificar o tempo de execução de uma música, utilizar até dez formatos de ondas sonoras diferentes, etc.

É importante lembrar que os MSX contam com três canais de som independentes (o que permite a geração de sons e músicas extremamente complexas) e que o integrado gerador de som pode executar uma tarefa musical independente da UPC, isto é, o micro pode tocar uma música enquanto a UPC executa operações diversas.

SOUND: Usado para manipular os registradores do integrado de som, também chamado de PSG (Programmable Sound Generator). Estes registradores controlam itens como volume, mixage de ruído, formas de ondas sonoras, etc..

Uso em Entrada e Saída

Neste segmento, incluímos, todos os comandos do sistema operaciona MSX DOS e os comandos do MSX BASIC. Trataremos apenas deste último, deixando os comando do MSX DOS para um próximo artigo.

LINE INPUT: Associaos caracteres digitados a uma variável alfanumerica, aceitando o delimitador vírcula (,) como um caracter qualquer (acabou a velha dor de cabeça).

STICK: Retorna um valor numérico conforme o estado do controlador de jogo (joystick) ou teclas de controle de cursor (as teclas que ficam à direita do teclado).

STRIG: Retorna o estado dos botões de disparo do controlador de jogo ou da barra de espaço. Se um destes elementos for pressionado, retorna o valor -1, em caso contrário, será retornado o valor 0

Uso em Fluxo de Programas

IF THEN ELSE: Este é o comando IF THEN, comum a todo BASIC, relacionado ainda com o ELSE (senão), que é realizado quando a comparação do IF resulta falso.

RESUME: Continua a execução de um programa BASIC após uma rotina de erro ter sido executada. Possui três modalidades: RESUME, onde o programa continua na instrução que causou o erro, RESUME NEXT, onde o programa continua na instrução imediatamente após o erro, e RESUME número da linha, onde o programa continua na linha de número indicado.

Uso na Manipulação de Variáveis

INSTR: Busca a primeira ocorrência de um ou mais caracteres dentro de outra série de caracteres, imprimindo os caracteres iniciais desta ocorrência.

SWAP: Troca o conteúdo de duas variáveis entre sí.

Outros Comandos

TIME: É uma variável reservada do sistema. Esta variável conta o tempo, sendo automaticamente incrementada a cada 1/60 segundo.

VARPTR: Descobre o endereço na memória do MSX em que uma determinada variável ou matriz em BASIC está. Uma vez determinado este endereço, você pode passá-lo para um programa em linguagem de máquina (por exemplo) que poderá ler o conteúdo da variável ou elemento da matriz. Este comando é muito útil para programadores experientes que trabalham com linguagem de máquina.

Manipulando Arquivos em Cassete

Nosso propósito, neste final, é fazer um breve relato dos comandos disponíveis para a manipulação de arquivos em fita cassete. Em seguida, daremos um exemplo simples de um programa para demonstrar alguns dos comandos.

BSAVE e BLOAD: Armazena e lê da fita um arquivo binário. Este arquivo pode conter dados de memória, uma tela gráfica, programas em linguagem de máquina, etc..

BLOAD”TESTE”:Carrega o arquivo TESTE na memória.

CSAVE e CLOAD: Armazena e lê arquivos BASIC exclusivamente em fita.

CSAVE “TESTE”

OPEN e CLOSE: Acessam um dispositivo como um arquivo de entrada ou saída. O dispositivo pode ser: gravador, impressora, tela de texto, etc. CLOSE fecha o dispositivo.

OPEN “CAS:” FOR OUTPUT AS #3, abre o gravador cassete como arquivo de saída com número de referência 3. Para se escrever um dado no gravador, usa-se, por exemplo, PRINT #3,”Testando…”

OPEN “CAS:” FOR INPUT AS #2, abre o gravador cassete como arquivo de entrada com número de referência 2. Para se ler do gravador, usa-se, por exemplo, INPUT #2,L$

Nossa observação final sobre este curso é de que ele representa apenas uma pequena amostra do MSX BASIC, pois seria impossível descrever todos os comandos em um único artigo.

Um aspecto observado por nós foi o de que em nenhum livro ou manual constam todos os comandos do MSX BASIC, fato este que só conseguimos ter acesso a todos os comandos através de uma guia de referência completo do MSX, que está disponível na internet e na época foi escrita pela MacGraw-Hill do Brasil.

images

Terminamos com uma observação pessoal: dentro do mercado de micros de 8 bits, o MSX é, sem dúvida, o melhor computador que já utilizamos, quer seja pelas facilidades que apresenta em programação, quer pela total padronização de seus periféricos.

Fonte: Cybernostra.com

Deixe um comentário