Você está na página 1de 12

Capítulo 1: Uma conversa técnica

CAPÍTULO 1: UMA CONVERSA TÉCNICA

Primeiro, vamos tratar de questões que são necessárias para entender


como funciona a maioria dos sistemas operacionais que tem uma interface
de linha de comando. O MSX-DOS é um deles, claro. Muito do que eu
falarei aqui, vale também para sistemas operacionais padrão Unix (Linux,
BSD, Mac OS X, etc) e o Windows, quando você executa o CMD.EXE ou o
POWERSHELL.EXE. Claro, o foco aqui é o MSX-DOS.
Também teremos uma conversa sobre partições e sistemas de arquivos,
que é necessário para entender algumas das limitações do sistema
operacional. No final, um pouquinho sobre a arquitetura do padrão MSX, as
extensões da BIOS, as SubROMs…

Este capítulo é mais focado no usuário iniciante. Mas os usuários


intermediários e avançados, aqueles que tem familiaridade com o MS -DOS
terão pouca dificuldade com o sistema em si e tirarão proveito do conteúdo
desse capítulo.

Primeiro… O que é um sistema operacional?


O sistema operacional é o software cuja função é administrar o hardware
do computador, fazendo a interface entre o hardware e o usuário. Este
usuário pode ser um programa ou mesmo o ser humano. Logo, podemos
supor que o sistema operacional é fundamental para o funcionamento da
máquina. Ele é seguramente o programa mais importante a ser executado
em um computador.

9
Capítulo 1: Uma conversa técnica

Você pode dividir o sistema operacional em três partes básicas, que são:

1. Um núcleo do sistema, ou kernel. O kernel é a parte mais importante


do sistema, sendo a sua função gerenciar todo o funcionamento
da máquina. No nosso objeto de estudo, o MSX-DOS, seu kernel é
monolítico, monotarefa e monousuário. Não entraremos nesses
aspectos para explicá-lo. Mas, se você quiser estudá-lo, recomendo
fortemente o estudo do código-fonte do Nextor8.

2. Um conjunto de bibliotecas para que possa ser estabelecido um


diálogo entre o kernel e os programas. No caso do MSX-DOS, existem
um grande conjunto de funções e variáveis de ambiente que podem
ser acessadas pelos programas, que iremos cobrir aqui nesse livro.

3. Um conjunto de utilitários para que os usuários “humanos” possam


interagir com a máquina. Nessa categoria podemos classificar o
interpretador de comandos do MSX-DOS, o COMMAND.COM (e o
COMMAND2.COM, do MSX-DOS 2), os comandos externos, entre
outros.

O interpretador de comandos, ou shell


Então, nós, usuários, iremos interagir com o que chamamos de interpretador
de comandos, ou shell. E para interagirmos com esse programa, digitamos
comandos. O interpretador fará o seu trabalho (que é interpretar) e executará o
que você solicitou. Claro, se você digitar algo errado, você verá uma mensagem
na tela, apontando o erro. Mas em nenhum momento o interpretador lhe
enviará uma mensagem dizendo “Excelente comando ou nome de arquivo!”
Ou seja, se você errar, ele apontará o seu erro. Se você acertar… Não fez mais
do que a sua obrigação.

8 https://github.com/Konamiman/Nextor

10
Capítulo 1: Uma conversa técnica

Pois então, e os comandos? Bem, temos basicamente dois tipos de


comandos, os internos e os externos. Os comandos internos são aqueles
comandos que já estão codificados dentro do interpretador de comandos.
Logo, eles estão sempre presentes, são mais simples e muito mais úteis.

O MSX-DOS somente tem comandos internos. Logo, é comum confundirem


utilitários com comandos externos, que são programas executáveis que
auxiliam o funcionamento do sistema. No caso do MSX-DOS, é muito comum
colocarem o conteúdo do pacote MSX-DOS Tools no diretório A:\DOS, e
as páginas de ajuda em A:\DOS\HELP. O pacote do COMMAND2.COM
fornecido pelo grupo The New Image (TNI) traz alguns utilitários, além
das páginas de ajuda. Recomendamos fortemente que você os use. Mas,
dependendo da origem do seu cartão SD, CF ou pendrive, é bem provável
que todas essas ferramentas já estejam lá disponíveis.

Dispositivos
O MS-DOS é um herdeiro do CP/M, que tem fortes raízes no TOPS-10 e
traz alguns elementos do Unix, o primeiro sistema operacional de tempo
compartilhado bem sucedido feito no mundo. Logo, muitos dos conceitos
do Unix e seus herdeiros (Uzix9, Fuzix10, até o Linux) estão presentes no
MSX-DOS. Um deles é o conceito de dispositivos.

Os dispositivos são parte integrante do hardware. Então, quais são os


dispositivos que o MSX-DOS tem? Vamos a lista:

• A:, B:, C:, até D: (no MSX-DOS 1) ou até H: (no MSX-DOS 2) – letras de
drive. Cada partição compõe um dispositivo, e há uma letra associada
a ele.

9 http://uzix.sourceforge.net/
10 http://www.fuzix.org/

11
Capítulo 1: Uma conversa técnica

• AUX: (Porta serial). Se você tiver uma interface do tipo RS-232, esse
será o dispositivo que estará vinculado a ela.

• CON: (Console). No nosso caso, o terminal, a tela do computador.

• PRN: (Impressora). Você pode redirecionar a saída de um comando


para a impressora, por exemplo. Claro, se você tiver uma impressora
conectada ao seu MSX, o que hoje em dia, é chique no último.

• NUL: (Dispositivo nulo). Ele não existe, mas usamos ele para alguns
testes. Se for usado como dispositivo de entrada, ele retorna um sinal
de “fim de arquivo”. Se ele for usado como dispositivo de saída, simula,
mas não executa as operações de gravação neste dispositivo. Alguns
usuários bem humorados dizem que o NUL é o melhor lugar para
guardar uma cópia de segurança dos seus dados. Afinal, não ocupa
espaço! Mas não espere recuperar os dados caso você precise...

Caracteres “coringa”
Os caracteres “coringa” (ou caracteres de referência global) são recursos
usados para apontar um ou mais arquivos ou diretórios do sistema de uma
só vez. Este é um recurso que permite que você faça a filtragem do que será
listado, copiado, apagado, etc. No MSX-DOS, temos 2 tipos de coringas:

• O asterisco (“*”) faz referência a um nome completo/restante de


um arquivo/diretório. Logo, quando colocamos A*.*, significa que
o nome do arquivo/diretório começa com A, e o resto do nome e a
extensão podem ser qualquer coisa, de 1 a 7 caracteres (no caso do
nome). Logo, ABCDEFGH.TXT e AEIOU.GRP são válidos nesse
caso, mas BEFAJ.TXT não.

12
Capítulo 1: Uma conversa técnica

• O ponto de interrogação (“?”) faz referência a uma letra naquela


posição. Logo, quando colocamos A?.?, significa que o nome do
arquivo/diretório começa com A, e só tem um caractere após o A,
e um caractere na extensão. Então, AB.C é válido, mas AB.PAS
não é.

Os interpretadores de comandos do MSX-DOS 1 e do MSX-DOS 2 (COMMAND.


COM e COMMAND2.COM) são limitados nesse ponto, trabalhando apenas
com asteriscos e interrogações, e de uma forma limitada. Logo, não é
possível fazer algo como *A*.TXT, por exemplo.

Diretórios
Os diretórios são divisões lógicas criadas em um sistema de arquivos, que
permite que arquivos que tenham relação, sejam agrupados.

Logo, você pode ter um diretório chamado JOGOS, e dentro dele ter
diretórios como ROM, DSK, TRADUCAO, etc. Assim, você pode colocar
os jogos nessa pasta, separando os arquivos ROM, imagens de disquete
e traduções em diretórios separados. Então, os diretórios servem para
organizar o caos que rapidamente um dispositivo de armazenamento pode
se tornar.

Alguns usuários referem-se aos diretórios como pastas, numa alusão ao


conceito popularizado pelas interfaces gráficas, fazendo uma analogia às
pastas suspensas de arquivos de documentos. No final das contas, diretório
é pasta, pasta é diretório e estamos conversados.

No MSX-DOS 1 não temos o conceito de diretórios, estando


limitados a colocar no máximo 112 arquivos por unidade. No caso do
MSX-DOS 2, podemos ter diretórios e o limite é bem maior, cerca de
256 arquivos por diretório.

13
Capítulo 1: Uma conversa técnica

O ponto, o “ponto-ponto” e outros


Em todos os diretórios, existem dois caracteres especiais, o ponto e o “ponto-
ponto”. É muito comum falarmos “dois pontos”, mas isto gera confusão, já
que as pessoas associam aos dois-pontos (um em cima e o outro embaixo)
e não aos dois pontos seguidos. Logo eu sempre chamarei de “ponto-ponto”.

Ambos funcionam como ponteiros, ou seja, direcionam para algum lugar.


Mas vamos ver no que eles diferem:

• O ponto aponta para onde você está. Ou seja, ele aponta para o
diretório onde você está. Parece bobeira, mas isto é útil para quando
você copia um arquivo, por exemplo, e quer garantir que ele seja
copiado para onde você está.

• O ponto-ponto aponta para um diretório em um nível anterior. Logo,


se você estiver em um diretório, ao apontar para o “ponto ponto”,
você será redirecionado para o diretório que está “acima” do atual.

• O traço (“-”) aponta para o diretório onde você estava anteriormente.


Se você estiver em um diretório, ao apontar para o “traço”, você será
redirecionado para o diretório onde você estava anteriormente.

• Exemplo: Digamos que você estava no diretório A:\UTILS, e mudou


de diretório, para A:\DOS\HELP.

• O “ponto” direciona para A:\DOS\HELP.

• O “ponto-ponto” direciona para A:\DOS.

• O “traço” direciona para A:\UTILS.

É claro que esta funcionalidade fica mais clara com o MSX-DOS 2, que tem
suporte a diretórios.

14
Capítulo 1: Uma conversa técnica

Prompt de comando
O prompt de comando é o ponto onde você pode inserir comandos para que
o interpretador possa entendê-los e executá-los – ou não. Nos sistemas
operacionais que seguem o padrão MS-DOS (MSX-DOS incluso), é comum
termos um prompt da seguinte forma:
A:\UTILS\LOCATE\DB>

Onde:

• A: é a letra de drive.

• \UTILS\LOCATE\DB é o caminho indicando a localização atual.

• > é o caractere que aponta que dali por diante, você poderá digitar
comandos.

Para usuários que lidaram com o MS-DOS, o prompt mais conhecido é o C:\>,
já que a primeira partição do HD fica no drive C.

Caminhos, caminho absoluto e caminho relativo


Quando falamos de A:\UTILS\LOCATE\DB, isto é o que chamamos
de caminho. O caminho, ou path, especifica uma localização única em um
sistema de arquivos. O caminho aponta para a localização de um arquivo
dentro de uma mídia (HD, disquete, cartão SD, etc), seguindo a hierarquia
da árvore de diretórios. Esse caminho é expresso em uma sequência de
caracteres e delimitadores representando cada diretório. No caso do CP/M
(e do MS-DOS, e do MSX-DOS) é a barra invertida, o “\”. Em sistemas padrão
Unix, é a barra (“/”).

15
Capítulo 1: Uma conversa técnica

Os caminhos podem ser absolutos ou relativos. Um caminho absoluto aponta


para a mesma localização dentro do sistema de arquivos, independente do
diretório onde você está. Assim, ele deverá incluir o diretório raiz do dispositivo.

O caminho relativo parte do diretório onde você está, sem precisar trazer o
caminho absoluto, que apesar de completo, é muitas vezes grande demais.

Vamos a dois exemplos:


A:\DOS> A:\DOS\HELP\DIR.HLP

Este é um caminho absoluto. Independente de onde você esteja, você começa


no diretório raiz do dispositivo (A:\), segue pelo diretório DOS, depois o
diretório HELP, para então chegar no arquivo DIR.HLP.
A:\DOS> HELP\DIR.HLP

Aqui temos um caminho relativo. Logo, já estamos em A:\DOS, então não


é necessário partir do diretório raiz para chegar em DIR.HLP. O caminho é
menor, mas depende do diretório onde você está - ao contrário do caminho
absoluto.
A:\JOGOS> ..\DOS\HELP\DIR.HLP

Aqui temos um outro caminho relativo. Estando em A:\JOGOS, sobe um


diretório e segue pelo diretório DOS, depois o diretório HELP, para então
chegar ao arquivo DIR.HLP.

Arquivos batch
Um arquivo batch contém sequências de comandos a serem executados
pelo sistema operacional. No Unix, nós conhecemos como shell scripts, e
posso dizer com pureza d’alma que eles são os “primos ricos” dos arquivos

16
Capítulo 1: Uma conversa técnica

batch. Eles são muito mais completos, tem mais flexibilidade e capacidade do
que os arquivos batch. Mas vamos falar dos “primos pobres”. Na prática, os
scripts em shell e os arquivos batch são quase iguais e têm o mesmo objetivo:
Automatizar certas tarefas que são repetitivas.

Vamos supor que você tenha uma SD-Mapper, e milagrosamente você


entendeu a sintaxe do comando MAPDRV, do Nextor (falo disso lá no
capítulo 5, calma). Então, toda vez que você liga o seu MSX, você mapeia as
partições dos seus cartões SD nas letras de drive correspondente… E é uma
linha de comando das grandes. Não seria melhor automatizar esse processo?
Então, você pode criar um arquivo batch para sempre que você queira que
isso aconteça, basta executá-lo e o MSX-DOS o faz. Legal, não?

AUTOEXEC.BAT e o REBOOT.BAT
O AUTOEXEC.BAT é um arquivo batch a ser executado toda vez em que o
computador é iniciado com aquela mídia. Logo, se você tem disquetes com
AUTOEXEC.BAT e você ligou o seu MSX, ele será executado. Mas não
temos aqui o CONFIG.SYS (como havia no MS-DOS). Todas as variáveis de
ambiente devem ser setadas no MSX-DOS.

No MSX-DOS 2 temos também o arquivo REBOOT.BAT, que é executado toda


vez que o usuário retorna do interpretador BASIC para o sistema operacional,
digitando CALL SYSTEM. Logo, é comum que o REBOOT.BAT seja quase
idêntico ao AUTOEXEC.BAT.

Redirecionamentos
Redirecionamentos é um dos recursos mais úteis que qualquer sistema
operacional tem. Mesmo o MSX-DOS 1 tem eles disponíveis. Você pode
redirecionar a entrada, a saída ou criar um duto (pipe) entre dois comandos.

17
Capítulo 1: Uma conversa técnica

Antes de tudo, é bom lembrar que o MSX-DOS (e o MS-DOS, e o Linux, e outros)


tem uma entrada padrão, que é o teclado. Mas ele tem 2 saídas: A saída padrão
e a saída de erros. A segunda é para aonde são enviadas as mensagens de
erro. Ambas apontam para o mesmo lugar, a tela. Veremos brevemente como
fazer o redirecionamento.

Vale ressaltar que teremos exemplos com alguns comandos abaixo. Falaremos
mais a respeito desses comandos de forma mais apropriada no decorrer
do livro.

Redirecionamento de saída
Você vai redirecionar a saída para, por exemplo, um arquivo-texto. Assim, se
você digitar DIR > SAIDA.TXT, o MSX-DOS criará um arquivo chamado
SAIDA.TXT, e resultado do comando DIR será enviado para ele. Você depois
pode editar esse arquivo no MPW, no TED ou no MSX VI, vai ler o arquivo no PC
e usar um editor de textos… Seja lá o que você for fazer. O caractere “>” aponta
para onde será enviada a saída. Ele criará um novo arquivo com esse nome
e colocará a saída dentro dele. Mas se você usar “>>” e o arquivo já existir,
você acrescentará essa informação no arquivo, não criará um novo, caso não
exista, funciona como o caractere “>”.

Veremos um exemplo:
DIR > SAIDA.TXT

Executamos o comando DIR, que lista o conteúdo de um diretório e o envia


para a saída padrão, a tela. No caso, como estamos usando o caractere “>”,
significa que estamos redirecionando a saída desse comando para o arquivo
SAIDA.TXT.

18
Capítulo 1: Uma conversa técnica

Mas, e a saída de erros? Bem, se você não colocar nada, ela será repassada à
saída padrão, a tela. Agora, se acrescentarmos 2> NUL: ao comando. Você
teria algo como:
DIR > SAIDA.TXT 2> NUL:

Isto significa que estamos redirecionando a saída de erro (a saída 2) para o


dispositivo NUL.

Ainda, se você quiser que ambas as saídas sejam repassadas para o mesmo
arquivo, você deverá executar o seguinte comando:
DIR > SAIDA.TXT 2>&1.

Assim, a saída de erros (a saída 2) será repassada para a saída padrão


(saída 1), e tudo sera colocado no arquivo SAIDA.TXT.

Redirecionamento de entrada
Este é um recurso muito pouco usado, mesmo em sistemas mais complexos
que o MSX-DOS. Procurei um bom exemplo, mas não achei.

Encadeamento de comandos (o uso de pipes, ou dutos)


Isto é um recurso que muitos usuários Unix não conseguem viver sem.
Basicamente, o encadeamento de comandos consiste em fazer com que a
saída de um primeiro comando seja a entrada de um segundo comando, para
dar continuidade ao processamento. Os dados enviados são processados pelo
próximo comando. Por exemplo:
TYPE AUTOEXEC.BAT | GREP SET

19
Capítulo 1: Uma conversa técnica

Aqui temos o comando TYPE, que pega o arquivo AUTOEXEC.BAT e o


envia para a saída padrão (a tela). Mas, com o uso do pipe (a barra vertical, o
‘|’), essa saída é redirecionada para o segundo comando (o GREP). Este filtra o
texto que lhe é passado, exibindo apenas as linhas que contém a palavra SET.

Dessa forma, temos dois comandos funcionando em conjunto, onde um


envia o conteúdo para o outro filtrar. O resultado será colocado na tela. Caso
seja necessário, é possível encadear vários comandos, cada um resolvendo
parte de um problema. É a filosofia “dividir para conquistar”, de forma que
cada comando resolva uma parte do problema, e a união de todos resolva o
problema como um todo.

Em sistemas padrão Unix, isto foi elevado ao estado de arte. Mas sistemas
não-Unix, como o MSX-DOS, é possível usar esse recurso também. No MSX-
DOS 1 isso é pouco usado, mas no MSX-DOS 2 temos mais desse recurso
sendo usado.

Mais alguns exemplos


• DIR > PRN: - Redireciona a saída do comando DIR para o dispositivo
PRN, ou seja, a impressora. Se você tiver uma impressora ligada no
seu MSX e ela estiver ligada e com papel, o resultado do DIR sairá
nele.

• DIR *.COM > SAIDA.TXT 2> NUL: - Será listado todos os


arquivos cuja extensão termine com .COM. O resultado será jogado
no arquivo SAIDA.TXT, e a saída de erros, no dispositivo nulo ( NUL:).

• COPY CON: TESTE.BAT – Aqui, tudo que você escrever no


console (CON) será copiado para o arquivo TESTE.BAT. Ou seja,
tudo o que você digitar será salvo nesse arquivo. Para encerrar,
pressione CONTROL+Z, que é o caractere que marca o fim de um
arquivo.

20

Você também pode gostar