home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Columbia Kermit
/
kermit.zip
/
archives
/
misc.tar.gz
/
misc.tar
/
portug.txt
< prev
next >
Wrap
Text File
|
1988-08-16
|
169KB
|
4,157 lines
.po12
.op
KK KK EEEEEEEE RRRRRRRR MM MM IIII TTTTTTTTTT
KK KK EE RR RR MMM MMM II TT
KK KK EE RR RR MMMM MMMM II TT
KK KKKK EEEEEE RRRRRRRR MM MMM MM II TT
KKKK KK EE RR RR MM M MM II TT
KK KK EE RR RR MM MM II TT
KK KK EEEEEEEE RR RR MM MM IIII TT
____________________________________________________________
____________________________________________________________
GGGGGGG UU UU IIII AAAAAAAA
GG UU UU II AA AA
GG UU UU II AA AA
GG GGGG UU UU II AA AA
GG GG UU UU II AAAAAAAAAA
GG GG UU UU II AA AA
GGGGGGG UUUUUUUU IIII AA AA
DDDDDDDD OOOOOOO
DD DD OO OO
DD DD OO OO
DD DD OO OO
DD DD OO OO
DD DD OO OO
DDDDDDDD OOOOOOO
'
UU UU SSSSSS UU UU AAAAAA RRRRRRR IIII OOOOOO
UU UU SS UU UU AA AA RR RR II OO OO
UU UU SS UU UU AA AA RR RR II OO OO
UU UU SSSSSS UU UU AA AA RRRRRRR II OO OO
UU UU SS UU UU AAAAAAAA RR RR II OO OO
UU UU SS SS UU UU AA AA RR RR II OO OO
UUUUUU SSSSSS UUUUUU AA AA RR RR IIII OOOOOO
____________________________________________________________
____________________________________________________________
Quinta Edic,a~o Brasi'lia, setembro de 1986
.pa
KERMIT - Guia do Usua'rio
Quinta Edic,a~o
Frank da Cruz
Columbia University Center for Computing Activities
New York, NY, 10027
Copyright (C) 1981, 1982, 1983, 1984
Trustees of Columbia University in the City of New York
Traduc,a~o de J. Ricardo B. Ghirlanda
Telecomunicac,o~es Brasileiras S. A. - TELEBRAS
Brasi`lia - DF, 1986
E' permitida e, mesmo, incentivada, a co'pia e divulgac,a~o
de qualquer parte deste manual, desde que para fins na~o
comerciais.
.foKERMIT - Guia do Usua'rio i
SUMA'RIO
Prefa'cio .............................................iii
Um Pouco de Histo'ria..................................iii
Pedidos de Informac,a~o..................................iv
1. Introduc,a~o..............................................1
2. Como usar o KERMIT......................................4
2.1. O programa KERMIT..................................4
2.2. Falando com dois computadores de uma vez...........5
2.3. Transferindo um arquivo............................6
2.4. Comandos ba'sicos...................................7
2.5. Exemplos reais.....................................9
2.5.1. MICRO --- HOST............................9
2.5.2. HOST --- HOST...........................11
2.5.3. MICRO --- MICRO..........................13
2.6. Outra maneira: o SERVIDOR.........................14
3. Quando as coisas va~o mal...............................17
3.1. Problemas com a linha de comunicac,a~o..............17
3.2. A transfere^ncia ficou presa.......................18
3.3. O micro se enganchou..............................19
3.4. O host sumiu......................................19
3.5. O disco esta' cheio................................19
3.6. Interfere^ncia de mensagens........................20
3.7. Erros no host.....................................20
3.8. O arquivo e' lixo..................................20
3.9. Veio lixo depois do fim do arquivo................20
4. Comandos KERMIT........................................22
4.1. Operac,a~o remota e local..........................22
4.2. Interface de comandos............................23
4.3. Notac,a~o..........................................24
4.4. Suma'rio dos comandos KERMIT......................25
4.5. SEND.............................................26
4.6. RECEIVE..........................................28
4.7. GET..............................................29
4.8. SERVER...........................................30
4.9. BYE..............................................30
4.10. FINISH...........................................30
4.11. REMOTE...........................................30
4.12. LOCAL............................................32
4.13. CONNECT..........................................32
4.14. HELP.............................................33
.foKERMIT: Guia do Usua'rio ii
4.15. TAKE.............................................33
4.16. EXIT, QUIT.......................................33
4.17. O comando SET....................................33
4.18. DEFINE...........................................43
4.19. SHOW.............................................43
4.20. STATISTICS.......................................44
4.21. LOG..............................................44
4.22. TRANSMIT.........................................44
5. Implementac,o~es do KERMIT...............................45
6. KERMIT para IBM VM/CMS.................................47
6.1. SEND.............................................48
6.2. RECEIVE FN FT FM.................................48
6.3. SET..............................................48
6.4. SHOW.............................................49
6.5. STATUS...........................................49
6.6. CMS..............................................49
6.7. CP...............................................49
6.8. HELP.............................................49
6.9. Fatos Relevantes.................................49
6.10. Mensagens do sistema.............................51
7. KERMIT para CP/M-80....................................53
7.1 Suma'rio do CP/M....................................53
7.2 Descric,a~o do KERMIT-80.............................54
7.3 Comandos do KERMIT-80..............................55
7.4 O KERMIT gene'rico..................................59
7.5 Instalac,a~o.........................................60
7.5.1. Baixando o KERMIT-80........................61
7.5.2. Construindo um KERMIT.......................63
7.5.3. O KERMIT-80 gene'rico........................64
Ape^ndice A:
O Conjunto de Caracteres ASCII (ANSI X3.4/1968)......66
.pa
PREFA'CIO
.foKERMIT: Guia do Usua'rio iii
Desde que foi produzida a quarta edic,a~o deste manual,
em julho de 1983, os KERMITs tem voado mais e mais
ra'pidos do que algue'm possa acompanhar. Velhas verso~es
foram melhoradas e apareceram implementac,o~es para outros
sistemas. Deixou de ser pra'tico tentar cobrir todas as
implementac,o~es num u'nico manual. Assim este manual tentara'
descrever um tipo "ideal" de programa KERMIT, que tenha a
maioria das facilidades especificadas no Manual do Protocolo
KERMIT. A maior parte dos KERMITs se enquadrara' nessa
descric,a~o, de alguma forma.
Depois da parte principal deste manual, independente
de sistema, do manual, existem sec,o~es para diversos pro
gramas KERMIT particulares, enfatizando suas diferenc,as do
ideal, neste momento.
As partes deste manual que dependem de sistema ficara~o,
rapidamente, obsoletas. Informac,o~es correntes acerca de
qualquer programa KERMIT em particular podem ser encontra
das nos arquivos de documentac,a~o ou nos textos de HELP
internos ao pro'prio programa.
UM POUCO DE HISTO'RIA
O protocolo KERMIT para transfere^ncia de arquivos foi
projetado no Columbia University Center for Computing
Activities (CUCCA) em 1981-82 por Bill Catchings, princi
palmente, e por Frank da Cruz. O Bill escreveu os dois
primeiros programas, um para o DECSYSTEM-20 e outro para
um microcomputador sob CP/M.
O objetivo inicial era dar aos usua'rios dos sistemas
de timesharing da Columbia University, composto de um DEC-
20 e um IBM-4341, uma forma de guardar seus arquivos em
disquetes. O projeto deve muito aos modelos ANSI e ISO e
algumas ide'ias foram tomadas de projetos similares das
universidades de Stanford e Utah. O protocolo foi proje
tado para se ajustar a`s "sensi'veis" comunicac,o~es full-
-duplex do front-end do sistema DEC-20 e as peculiaridades
half-duplex do sistema de comunicac,a~o do IBM. O protocolo
foi logo implementado com sucesso no IBM-4341 do CUCCA, sob
VM/CMS, por Daphne Tzoar.
Entretanto a IBM lanc,ou o PCS, que comec,ou a apa
recer em nossos escrito'rios e, com ele, a necessidade
de uma forma gene'rica de transfere^ncia de arquivos
entre as diversas ma'quinas. Logo Daphne preparou uma
implementac,a~o para o IBM/PC.
Apo's o sucesso inicial do KERMIT, na CUCCA, ele foi
apresentado em confere^ncias a grupos de usua'rios (como
DECUS e SHARE) e passou a ser pedido por outras instala
c,o~es. Uma vez publicada a descric,a~o do protocolo,
algumas dessas instalac,o~es escreveram suas pro'prias
implementac,o~es ou adaptaram as existentes para que rodassem
em sistemas adicionais e mandaram de volta essas novas
verso~es para o CUCCA, de forma a serem distribui'das,
novamente, para outros. Assim o KERMIT cresceu ate'
suportar cerca de 50 sistemas diferentes. Tem sido enviado
em fita magne'tica do CUCCA para centenas de instalac,o~es
em du'zias de pai'ses, alcanc,ando centenas ou milhares mais
atrave's de va'rios grupos de usua'rios e redes de teleproces
samento.
.foKERMIT: Guia do Usua'rio iv
Ate' agora as contribuic,o~es ao esforc,o do KERMIT tem
sido feitas por indivi'duos nas seguintes instituic,o~es:
Stevens Institute, Cornell University, Rutgers
University, Cerritos College, The University of Toronto,
The University of Tennesse at Knoxville, The University
of California at Berkeley, The University of Toledo, The
University os Texas at Austin, The University of
Michigan, Oakland University, The University of Wisconsin,
University College Dublin, The University of Washington,
ABC-Klubben Stockholm, The Helsinki University of
Technology, The US National Institutes of Health,
Digital Equipment Corporation, The Source Telecomputing,
Hewlett-Packard Laboratories, Litton Data Systems, RCA
Laboratories, ATARI Computer, Telecomunicac,o~es Brasileiras
S. A. em Brasi'lia e em Campinas-SP, Empresa Brasileira de
Agropecua'ria, assim como muitos outros. A lista cresce
constantemente.
PEDIDOS DE INFORMAC,A~O
O software do KERMIT e' gra'tis e disponi'vel a todos.
A Columbia University, no entanto, na~o consegue distri
buir software na escala requerida pelo KERMIT. De for
ma a baixar seus custos de mi'dia, impressa~o, envio,
materiais, trabalho e recursos computacionais, pede uma
moderada taxa de distribuic,a~o das instalac,o~es que re
quisitem o KERMIT diretamente de la'. A distribuic,a~o e' feita
nos seguintes termos:
Distribuic,a~o completa: $100.00
(fita, manual do usua'rio e manual do protocolo)
Documentac,a~o impressa: $5.00 (cada)
(manuais ou listagem de programas-fonte)
Outras instalac,o~es podem redistribuir o KERMIT em
seus pro'prios termos e sa~o encorajadas a fazer isso,
com as seguintes condic,o~es: o KERMIT na~o pode ser ven
dido visando lucro; devem ser prestados os cre'ditos de
autoria quando de direito; novos materiais devem ser reme
tidos para a Columbia University no endere^c,o abaixo de
forma a ser mantido um conjunto definitivo e com
preensivo das implementac,o~es do KERMIT para futuras distri
buic,o~es.
.foKERMIT: Guia do Usua'rio v
.cp10
Para pedir o envio do KERMIT da Columbia University,
escreva para
KERMIT DISTRIBUTION
COLUMBIA UNIVERSITY CENTER FOR COMPUTING ACTIVITIES
7th floor, Watson Laboratory
612 West 115th Street
New York, N.Y. 10025,
pedindo:
a) manuais ou listagens que voce^ quiser (especifique-as) ou
b) fita magne'tica em um dos seguintes formatos:
SISTEMA FORMATO DENSIDADES
TOPS-10 BACKUP/INTERCHANGE, sem label 800, 1600
TOPS-20 DUMPER, sem label 800, 1600
IBM VM/CMS EBCDIC, formato CMS 1600, 6250
ou standard label 1600, 6250
outros ASCII, label ANSI 800, 1600
(especifique SISTEMA, FORMATO e DENSIDADE).
Os cheques devera~o ser pagos ao Columbia Universi
ty Center for Computing Activities.
Uma co'pia de cada manual sera' inclui'da com a fita.
A Columbia University fornecera' a fita, embalagem e envio.
A Columbia University na~o produz disquetes;
sa~o fornecidos "bootstrapping" que permitem que as
verso~es para microcomputadores sejam "baixadas" do compu
tador para o qual as fitas forem preparadas. A fita inclui
todos os fontes, documentac,a~o e, quando pra'tico, arquivos
com os mo'dulos de execuc,a~o. Infelizmente os recursos do
CUCCA sa~o limitados e na~o permitem manter uma forma
automatizada de atualizac,o~es ou de novas implementac,o~es,
documentac,o~es ou correc,o~es que aparecem.
Caso voce^ escreva para a Columbia University, informe
as ma'quinas e sistemas operacionais onde pretende rodar o
KERMIT ou se voce^ estaria interessado em tentar fazer sua
pro'pria implementac,a~o para um novo sistema.
O KERMIT esta' disponi'vel aos usua'rios da BINET NET
WORK via SERVER no host CUVMA. Deve-se teclar
@@SMSG RSCS MSG CUVMA KERMSRV HELP
para maiores informac,o~es. O KERMIT tambe'm esta' disponi'vel
aos usua'rios da ARPANET, via ANONYMOUS FTP do host COLUMBIA-
20, na a'rea PS:<KERMIT>.
.foKERMIT: Guia do Usua'rio vi
O KERMIT tambe'm e' distribui'do regularmente por va'
rios grupos de usua'rios de computadores como DECUS e SHARE.
No Brasil, a Rede de Comunicac,a~o de Dados da TELEBRAS,
apesar de ainda na~o adotar o protocolo KERMIT e, sim, um
pro'prio, oferece o KERMIT para seus usua'rios. Inclusive uma
versa~o "abrasileirada" pela TELEMIG, o Transtexto (TRNTXT),
que inclui a capacidade de controlar a portadora de um modem
de 1200 bps half-duplex, muito difundido. A RCD/TB emprega
tal tipo de modem. Para maiores informac,o~es, ao receber o
"Menu Principal" dos servic,os da RCD/TB, entre em "B" (Banco
de Arquivos) e consulte, no banco 2 (validados), o
KERMIT.DOC, assim:
COMANDO ARQUIVO>c kermit.doc
O servic,o perguntara' se deseja receber o arquivo. Res
ponda "S". Desta forma voce^ tera', em seu micro, todas as
informac,o~es necessa'rias para conseguir a versa~o apropriada
do KERMIT para o seu equipamento.
La' esta~o, tambe'm, os manuais do Usua'rio (este) e o do
Protocolo (caso voce^ se interesse em saber mais do que esta'
explicado neste guia, melhorar uma versa~o existente ou,
ainda, escrever uma versa~o nova).
Uma vez que novos programas KERMIT (ou melhoramen
tos em antigas verso~es) aparecem com freque^ncia, as ins
talac,o~es que usam o KERMIT pesadamente sa~o encorajadas a
contactar a Columbia duas ou tres vezes por ano, para saber
das novidades.
Nenhuma garantia do software nem da documentac,a~o a
seu respeito esta' expli'cita ou implicitamente colocada; nem
os autores sa~o obrigados a informar a todos qualquer defeito
em programas ou suas documentac,o~es.
.pa
.pn1
.foKERMIT: Guia do Usua'rio #
.he Introduc,a~o
1. Introduc,a~o
Todo mundo quer que seus computadores falem entre si.
Existem va'rias formas de se fazer isso, a maioria delas
muito cara. Mas existe uma que e' barata e relativamente
fa'cil: conectar os dois computadores atrave's de suas por
tas TTY (terminal assi'ncrono) e engana'-los de forma que
acreditem que o outro seja um dos seus terminais. Podemos
esperar que isso funcione, ja' que o padra~o de conexa~o e'
quase que universalmente obedecido, tanto em hardware
(plug e sinal: EIA RS-232) quanto em software (carac
teres ASCII). Uma vez conectados dessa forma, os
computadores podem rodar, cada um, programas que se enten
dam, de maneira a permitir a comunicac,a~o desejada por meio
de um protocolo.
Por que um protocolo e' necessa'rio, afinal? Tre^s pro
blemas maiores ocorrem quando se tenta ligar dois computa
dores via uma linha TTY:
1. Rui'do
E' temeroso garantir que na~o existira'
interfere^ncia ele'trica numa linha de
comunicac,a~o. Qualquer linha apresentara',
ocasionalmente, interfere^ncia, ou rui'do,
principalmente se for uma linha discada
ou chaveada, que resulta, tipicamente,
em lixo ou caracteres extras. O
rui'do adultera os dados e, quando se
percebe, normalmente ja' e' muito tarde.
2. Sincronismo
Os dados na~o podem chegar mais rapida
mente do que a ma'quina receptora con
segue manusea'-los. Mesmo que a veloci
dade da linha seja a mesma nas duas
pontas, a ma'quina receptora pode na~o
ser capaz de processar um fluxo conti'
nuo de entrada a tal velocidade. Seu
processador central pode ser muito
lento ou carregado demais, seus buf
fers muito cheios ou pequenos... O
sintoma ti'pico de um problema de sincro
nismo e' a perda de dados. Muitos siste
mas operacionais simplesmente descartam
os dados que chegam quando eles na~o
esta~o preparados para recebe^-los.
3. Quedas de linha
Uma linha pode parar de trabalhar por
curtos peri'odos por causa de um conector
defeituoso, queda de energia ou qualquer
raza~o similar. Em conexo~es discadas ou
chaveadas tais defeitos intermitentes
fara~o com que a portadora caia, encer
rando a conexa~o; mas qualquer conexa~o em
que na~o seja usada a portadora de sinal
o sintoma sera' a perda dos dados.
De forma a prevenir a adulterac,a~o dos dados e
sincronizar a comunicac,a~o, computadores que se entendam
podem trocar informac,o~es de controle, ao mesmo tempo em
que esta~o transferindo dados. Tal insersa~o de informac,o~es
de controle entre os dados e as ac,o~es decorrentes disso
constitui um PROTOCOLO.
O KERMIT e' um desses protocolos. Foi projetado,
especificamente, para transferir arquivos sequenciais
atrave's das linhas comuns de telecomunicac,o~es. Na~o e'
necessariamente melhor que os muitos outros protocolos de
transfere^ncia de arquivo orientados para este ou aquele
terminal mas e' gratis, bem documentado e tem tido
compatibilidade implementada em va'rios microcomputadores bem
como em ma'quinas de pequeno e grande porte.
O KERMIT transfere dados encapsulados em pacotes de
informac,a~o de controle. Tais informac,o~es incluem marca de
sincronismo, nu'mero do pacote para permitir a detecc,a~o
de perda de pacotes, um indicador de comprimento e um
"checksum" para uma verificac,a~o dos dados (paridade hori
zontal). Os pacotes perdidos ou adulterados sa~o detecta
dos e as devidas retransmisso~es sa~o automaticamente
pedidas. Os pacotes duplicados sa~o descartados. Adi
cionalmente va'rios pacotes de controle especiais permitem
que KERMITs se conectem e desconectem para trocar diver
sos tipos de informac,a~o. Pouca coisa e' assumida acerca
das capacidades de cada computador. Por isso o protocolo
KERMIT pode funcionar bem entre va'rios sistemas de tipos
diferentes.
A Sec,a~o 2 (Como usar o KERMIT) lhe diz tudo o que voce^
precisa saber para transferir arquivos de texto na maioria
dos casos e mostra alguns exemplos especi'ficos.
Se voce^ seguir os exemplos da Sec,a~o 2 mas na~o conse
guir fazer uma conexa~o de terminal ou na~o transferir um
arquivo com sucesso, consulte a Sec,a~o 3 (Quando as coisas
va~o mal).
Se voce^ pretende ser um forte usua'rio do KERMIT, deve
ler a Sec,a~o 4 (Comandos KERMIT), que descreve, em detalhes,
todas as facilidades do KERMIT. Uma certa familiaridade
com o material dessa Sec,a~o lhe ajudara' em possi'veis dificul
dades quando quizer fazer novos tipos de conexa~o ou quando
estiver tentando transferir arquivos na~o usuais. Voce
achara', tambe'm, descric,o~es de facilidades avanc,adas de manu
seio de arquivos que foram omitidas de edic,o~es anteriores
deste manual.
A Sec,a~o 5 (Implementac,o~es do KERMIT) resume sistemas
para os quais o KERMIT estava disponi'vel quando da prepara
c,a~o desta edic,a~o.
Os capi'tulos subsequentes descrevem implementac,o~es
particulares selecionadas. Leia a sec,a~o apropriada para
cada sistema em que voce^ for usar o KERMIT; cada sec,a~o
descreve a convenc,a~o para nomes de arquivos e outras faci
lidades importantes para usua'rios KERMIT. Lista, tambe'm, os
comandos KERMIT para aqueles sistemas, principalmente em
termos de suas diferenc,as do KERMIT "ideal" descrito na
Sec,a~o 4.
.pa
.he Como usar o KERMIT
2. Como usar o KERMIT
O KERMIT e' um protocolo para transfere^ncias confia'veis
de arquivos entre computadores atrave's das linhas comuns de
telecomunicac,o~es usadas para conectar os terminais aos
computadores. A meca^nica de uso do KERMIT para se trans
ferir um arquivo pode parecer confusa ate' que se pegue a
ide'ia da coisa. Um pouco de embasamento pode tornar o
processo mais inteligi'vel.
O KERMIT e', provavelmente, a maneira mais barata para
se fazer uma comunicac,a~o entre dois computadores. O
hardware exigido normalmente ja' esta' disponi'vel, o software
e' gra'tis e todos os seus componentes rodam como programas
normais de aplicac,a~o, sem modificac,o~es de sistema. O que,
alia's, contrasta terrivelmente com uma rede de comunica
c,a~o de dados, onde existem canais e "drivers" de comu
nicac,a~o de alta velocidade dedicados, softwares cari'ssimos
e outros "ingredientes". Uma rede prove^ mais servic,os do
que o KERMIT, usualmente a maiores velocidades, ja' que a
rede e' normalmente parte do sistema. Quando uma rede na~o
existe (ou na~o esta' disponi'vel), o KERMIT pode preencher o
espac,o. Mas uma vez que o KERMIT na~o fica integrado a
qualquer sistema em particular e, sim, apoiado nos re
cursos que muitos sistemas tem, requer algum trabalho
adicional para aqueles que quiserem usa'-lo.
.cp3
2.1. O programa KERMIT
O KERMIT embute um conjunto de regras para transferir
confiavelmente arquivos entre computadores. Geralmente um
dos computadores e' um sistema de grande porte (host)
em regime de time-sharing com va'rios terminais ligados a
ele e o outro e' um microcomputador pessoal.
Para que se estabelec,a um protocolo KERMIT, um programa
KERMIT deve estar rodando em cada ponta da linha de comu
nicac,a~o (uma ponta no host, outra no micro).
Dois programas KERMIT trocam mensagens numa linguagem
deles, toda especial: o protocolo KERMIT. O dia'logo
e' qualquer coisa como:
A -- Ola'! Vou comec,ar a mandar arquivos para voce^.
Quando voce^ for comec,ar a mandar mensagens para mim,
por favor na~o as fac,a maiores que 80 caracteres e,
se voce^ na~o ouvir nada de mim por mais de 15 segundos,
acorde-me, sim?
B -- Certo!
A -- Agora, la' vai um arquivo chamado ARQUIVO.TXT, certo?
B -- Certo.
A -- La' vai o primeiro pedac,o...
B -- Peguei!
A -- Muito bem! La' vai o segundo pedac,o...
B -- O segundo pedac,o era lixo.
A -- Bem, la' vai ele de novo...
etc.
Voce^ na~o ve^ isso acontecer: tudo esta' embutido num
co'digo conciso que os dois KERMIT podem entender. Eles se
preocupam com transmissa~o, checagem de erros, traduc,a~o dos
caracteres e tudo o mais. Cada mensagem e' chamada de
"pacote" e cada pacote esta' num formato especial que
qualquer KERMIT pode entender.
.cp3
2.2. Falando com dois computadores de uma vez
Seu trabalho e' fazer os dois KERMITs entrarem no ar.
A confusa~o aparece porque voce^ tem que usar um u'nico
teclado e uma u'nica tela para se comunicar com dois computa
dores diferentes, dois programas distintos. Vamos falar de
um caso comum: voce^ esta' sentado diante de um micro que
tem uma porta serial de comunicac,a~o. Esta porta esta'
ligada a um host usando, digamos, um MODEM.
Normalmente, quando voce^ usa o micro, esta' "falando"
diretamente com ele. Seus comandos sa~o interpretados pelo
sistema operacional do seu micro (CP/M, MS-DOS, UNIX, o que
for) ou por algum programa que estiver rodando no momento
(um editor de textos, um jogo...). O KERMIT e' um programa
como qualquer outro mas que tem a habilidade especial de
tanto interpretar seus comandos diretamente, como outros
programas, quanto de passar tudo o que voce^ digitar para
que o host interprete. Quando mandamos o KERMIT se conec
tar, ele envia cada caracter que se tecla atrave's da
porta serial e cada caracter que chegar por ela vai para
a tela. Isto e' chamado SERVIC,O DE TERMINAL VIRTUAL (um
computador aje "virtualmente" como se fosse o terminal de
outro. Nesse momento voce^ estaria falando com o host e o
micro "ignorando" voce^.
O KERMIT, como muitos outros programas, tem um
"prompt". O prompt e' um si'mbolo que o programa coloca no
canto esquerdo de uma linha para indicar que esta' pronto
para receber um comando de voce^. O prompt do KERMIT e',
normalmente, KERMIT-xx>. O "xx" identifica a
implementac,a~o do KERMIT. O KERMIT que roda no DEC-20
usa o prompt KERMIT-20>; o que roda em micros baseados em
8080 ou Z80 usa KERMIT-80>; o que roda num IBM/PC usa
KERMIT-86 e por ai' vai... Se voce^ ficar confuso acerca
de qual KERMIT esta' falando com voce^, o prompt vai
ajudar. Ale'm disso alguns KERMITs imprimem uma mensagem
informativa (normalmente em ingles^) como
[Conectado ao host; tecle <CTRL-@> para retornar.]
quando voce^ se conecta e outra mensagem como
[Conexa~o encerrada; de volta ao micro.]
quando voce^ volta.
Uma vez conectado ao host, deve existir uma maneira
de voltar ao micro. Isto e' conseguido atrave's de uma se
que^ncia de escape. Conforme o KERMIT passa seus caracteres
para o host, testa cada um para ver se e' um caracter
especial previamente definido como caracter de escape.
Quando ele ve^ tal caracter, deixa de ignorar voce^ (voce^
novamente passa a conversar com o micro, na~o com o
host). O caracter de escape normalmente e' escolhido como
um que voce^ na~o precisara' teclar ao conversar com o
host e que seja difi'cil de ser teclado por acidente
(usualmente um caracter de controle, como CONTROL-@) e que
e' entrado segurando-se a tecla CTRL enquanto se aperta
a tecla com o si'mbolo indicado (nesse caso SHIFT-P). Os
caracteres de controle esta~o escritos aqui como CTRL-X ou
^X, onde X e' o caracter a ser teclado enquanto se aperta a
tecla CONTROL.
.cp3
2.3. Transferindo um arquivo
Para transferir um arquivo, tenha, primeiro, a aten
c,a~o do sistema operacional de seu micro. Uma vez em ni'vel
de comando, rode o KERMIT. Diga ao KERMIT, enta~o, que o
conecte ao host. Ai' voce^ estara' falando com o host. Neste
ponto voce^ tem que se identificar para, so' enta~o, rodar o
KERMIT do host.
Agora voce^ tem um KERMIT de cada lado do fio. O
pro'ximo passo e' dizer a cada um o que fazer. Suponha que o
que voce^ quer e' transferir um arquivo do host para o
micro. Primeiro diga ao KERMIT do host que mande o arqui
vo; enta~o "escape" dele de volta ao do micro e diga-lhe
que receba o tal arquivo. A transfere^ncia comec,a. Pode
se recostar e observar ou ir fazer um bom sandui'che. O
KERMIT do micro continuamente mostrara' os contadores de
pacotes e de retransmisso~es e lhe avisara' quando a trans
fere^ncia houver terminado.
O arquivo desejado esta' agora no disquete do seu micro.
O protocolo KERMIT se assegurou da chegada certa e completa
do arquivo. Agora e' por sua conta: conecte-se de volta ao
host, saia do KERMIT de la', encerre a sua sessa~o de termi
nal, "escape" de volta para o KERMIT do micro e saia dele.
Fac,a, enta~o, o que voce^ havia planejado para o seu
arquivo: edite-o, liste-o, o que quiser.
O protocolo KERMIT (e a maioria dos programas KERMIT)
permitem que se mande, confiavelmente, um arquivo do host
para o micro, do micro para o host, de um host para outro
ou de um micro para outro, sem que se tenha, normalmente,
cuidados com a natureza das ma'quinas particularmente envol
vidas. Muitas implementac,o~es permitem tambe'm que os arqui
vos sejam mandados em grupos, com um u'nico comando, como
"mande todos os meus arquivos FORTRAN!". O cena'rio para
isso e' o mesmo descrito acima, somente os detalhes de
como estabelecer a conexa~o real e' que podem diferir.
O KERMIT trabalha melhor com arquivos "imprimi'
veis" (compostos apenas de letras, di'gitos, si'mbolos de
pontuac,a~o, controles de carro, tabulac,a~o etc.) uma vez que
eles podem ser representados em praticamente todos os tipos
de computador. Tambe'm e' capaz de transferir arquivos
"bina'rios" (como programas executa'veis), composto
por padro~es arbitra'rios de bits. Mas os arquivos bina'rios
normalmente so' tem real significado para computadores do
mesmo tipo daquele que o gerou. Mesmo assim o KERMIT pode
transferir tais arquivos de um sistema A para um outro
sistema B (onde na~o sera' usado) e, dele, para um terceiro
sistema C, similar ao A, em sua configurac,a~o original,
embora, em alguns casos, devamos ter cuidados especiais.
Ja' temos uma compreensa~o ba'sica daquilo que o KERMIT
faz e como o faz. Oportunamente veremos alguns exemplos
mais concretos. Antes voce^ deve conhecer os comandos ba'sicos
do KERMIT.
.cp3
2.4. Comandos ba'sicos
Estas sa~o descric,o~es gene'ricas da maioria dos
comandos KERMIT. Descric,o~es detalhadas vira~o depois. Nestas
descric,o~es "local" se refere ao sistema que voce^ esta'
usando diretamente; "remoto" se refere ao sistema ao qual
voce^ esta' conectado via KERMIT. Os comandos podem ser
compostos de mais de uma palavra e sa~o terminados por um
RETURN.
.cp3
SEND especificac,a~o-de-arquivo(s)
Manda o arquivo ou o grupo de arquivos conforme
especificado, deste KERMIT para o outro. O nome de
cada arquivo e' passado para o outro KERMIT num pacote
de controle especial, de forma a poder ser guardado
com o mesmo nome. Um grupo de arquivos e' usualmente
especificado pelo fato de se incluir caracteres
"coringa", como o "*" na especificac,a~o do arquivo.
Exemplos:
SEND ARQUIVO.TXT (Mande o arquivo ARQUIVO.TXT)
SEND ARQ*.ASM (Mande os ASM comec,ados por ARQ)
Algumas implementac,o~es do KERMIT podem na~o dar
suporte a comandos de transfere^ncia de grupos de
arquivos. Tais verso~es exigem um comando SEND para
cada arquivo a ser transferido.
.cp2
RECEIVE
Recebe um arquivo ou um grupo deles de outro
KERMIT. Caso o nome de um arquivo que chega seja
ilegal, tenta transforma'-lo num nome legal, por
exemplo, abandonando caracteres na~o-alfanume'ricos ou
excessivos. O nome assim formado na~o e', garanti
damente, u'nico. Nesses casos arquivos ja' existentes
podem se perder. Algumas verso~es de KERMIT tentam
previnir que isso acontec,a, avisando a voce^ a colisa~o
dos nomes e tomando (ou deixando que voce^ o fac,a)
ac,o~es evasivas.
.cp2
CONNECT
Forma um "terminal virtual" do sistema remoto.
Num micro, isto usualmente significa mandar tudo o que
vem do teclado atrave's da porta serial e o que aquilo
que chegar pela porta serial mostrar na tela do micro.
Para escapar de uma conexa~o como terminal virtual,
tecle o caracter de escape do KERMIT (um ^@, por
exemplo).
.cp2
SET
Altera o posicionamento das opc,o~es standard
(como o caracter de escape, caracteri'sticas do
arquivo, nu'mero da linha de comunicac,a~o, paridade ou
controle de fluxo).
.cp2
SHOW
Mostra os valores do conjunto de opc,o~es,
modificados pelo comando SET.
.cp2
EXIT
Sai do KERMIT para o sistema operacional sob o
qual ele esta' rodando.
.cp2
HELP ou ?
Teclado em qualquer lugar dentro de um comando
KERMIT: lista os comandos, opc,o~es ou operadores que
se fazem possi'veis em tal ponto. Este comando pode
ou na~o exigir um RETURN, dependendo do sistema
operacional.
.cp3
2.5. Exemplos reais
O KERMIT pode ser usado em diversas situac,o~es: em um
computador pessoal que esteja conectado a um maior, em um
host que esteja ligado em um outro ou em um micro ligado a
outro.
.cp3
2.5.1. MICRO <---> HOST
Neste exemplo, o usua'rio esta' sentado num IBM
Personal Computer (PC), que esta' conectado, atrave's de sua
porta serial, a um computador host DECSYSTEM-20. O IBM/PC e'
o local; o DEC-20 e' remoto. Este exemplo tambe'm se aplica
ra' literalmente a quase todas as implementac,o~es do
KERMIT.
Voce^ ligou seu PC e tem o programa KERMIT em seu
disco. Comece por rodar o KERMIT no PC. Use o comando
CONNECT para se tornar um terminal do DEC-20. Na realidade,
o PC simula o popular terminal HEATH-19 (ou o VT52), por
isso e' uma boa medida dizer ao DEC-20 que seu terminal e' um
desses. Entre com o procedimento de LOGIN no DEC-20 e
chame o KERMIT nele. Aqui esta' um exemplo desse procedi
mento com os comandos que voce^ daria em minu'sculas:
A>kermit (chamando o KERMIT no PC)
KERMIT V1.20
KERMIT-86> (este e' o prompt do KERMIT do IBM/PC)
KERMIT-86>connect (conectando-se ao DEC-20)
[Connecting to host; type ConTRol-]c to return to PC.
Baud rate is 9600, connecting over COM1.]
(voce^ esta', agora, ligado ao DEC-20)
CU20B (o DEC-20 da' mensagens de saudac,a~o)
@terminal heath-19 (diga seu tipo de terminal - opcional)
@login eu co'digo (identifique-se normalmente)
(neste ponto o DEC-20 manda va'rias
mensagens)
@kermit (chamando o KERMIT do DEC-20)
KERMIT-20> (prompt do KERMIT do DEC-20)
(voce esta' pronto para transferir
arquivos)
Os exemplos seguintes ilustram a maneira de mandar
arquivos do DEC-20 para o PC. Note o uso do caracter
coringa "*" para denotar um grupo de arquivos.
.foKERMIT: Guia do Usua'rio #
KERMIT-20>send *.for (mande todos os arquivos FORTRAN)
^]c (volta para o PC, usando a seque^ncia
de escape, neste caso CNTRL-] seguido
de "c")
[Back at PC.]
KERMIT-86>receive (mandando o KERMIT do PC preparar-se
para receber os arquivos)
Se voce^ levar mais de 5 segundos para voltar ao PC
e emitir o comando RECEIVE, os primeiros pacotes do
KERMIT-20 podem chegar prematuramente e aparecerem em sua
tela. Mas na~o se preocupe: o pacote sera' retransmitido
pelo KERMIT-20 ate' que o KERMIT-86, no PC, confirme a sua
recepc,a~o.
Uma vez estabelecida a conexa~o, o PC vai lhe mostrar o
que estiver acontecendo: depois de limpar a tela, espera
os pacotes que chegam; conforme forem chegando, o nome
corrente de cada arquivo e o nu'mero do pacote va~o sendo
mostrados em sua tela. Quando o prompt do PC
("KERMIT-86>") aparecer na sua tela, e' sinal que a
transfere^ncia terminou. Durante a transfere^ncia, a tela do
micro mostrara' algo assim:
IBM PC KERMIT-86 V1.20
NUMBER OF PACKETS: 294 RECEIVING...
NUMBER OF RETRIES: 2
FILE NAME: PROGRAMA.FOR
Os contadores de pacotes (PACKETS) e de retransmisso~es
(RETRIES) sa~o continuamente atualizados e a palavra na
parte superior direita da tela (RECEIVING, SENDING,
COMPLETE, INTERRUPTED ou FAILED) mostra o status da trans
fere^ncia.
Quando a transfere^ncia terminar (muitas verso~es do
programa KERMIT soam um bip), voce^ deve se re-conectar ao
host (DEC-20), sair do KERMIT de la', avisar ao DEC-20
que voce^ vai encerrar a sessa~o (LOGOUT) e escapar de volta
ao PC, como voce^ ja' havia feito antes.
KERMIT-86>connect (de volta ao DEC-20)
[CONNECTING TO HOST; TYPE CONTROL-] C TO RETURN TO PC.
KERMIT-20> (ca' estamos no's!)
KERMIT-20>exit (saindo do KERMIT-20)
@logout (despedindo-nos do DEC-20)
LOGGED OUT JOB 55, USER EU, ACCOUNT MINHA-CONTA, TTY 146,
AT 12-JUL-84 16:59:55, USED 0:00:17 IN 0:21:55
^]c (escapando de volta para o PC...)
KERMIT-86>exit (... e saindo do KERMIT do PC)
Os arquivos que voce^ transferiu devem estar agora no
disco do PC.
Para mandar arquivos do PC para o DEC-20, proceda
similarmente. Em primeiro lugar siga as instruc,o~es de
LOGIN no DEC-20 atrave's do PC. Depois, em resposta ao
prompt do host "KERMIT-20>", tecle RECEIVE ao inve's de
SEND. Escape de volta para o PC e use o comando SEND
para enviar os arquivos do PC para o DEC-20. O PC vai lhe
mostrar, sempre, como vai indo a transmissa~o.
Quando o prompt "KERMIT-86" indicar que a transmissa~o
terminou, siga o procedimento ja' descrito de voltar ao
DEC-20, sair do KERMIT-20 e, depois, do host (LOGOUT). A
menos que voce^ queira fazer qualquer outro servic,o la' no
DEC-20 como, por exemplo, compilar um dos programas que voce^
acabou de enviar.
.cp3
2.5.2. HOST <---> HOST
Esta sec,a~o descreve o uso do KERMIT entre dois hosts.
Um "host" e' um computador de grande porte e uma das carac
teri'sticas que o colocam nesta classe e' o fato de que
ele tem diversos terminais. O uso do KERMIT em trans
fere^ncias host-host difere do caso PC-host na medida em
que a linha que conecta um terminal a um host na~o e' a mesma
atrave's da qual os dados sera~o transferidos de um host para
o outro e que alguns comandos especiais tem que ser emi
tidos para permitir cumprir comandos na~o usuais do outro
host.
Neste exemplo, voce^ ja' esta' "logado" num DEC-20 e usou
um discador automa'tico para se conectar a um sistema
IBM/370, rodando VM/CMS, atrave's da porta TTY 12 do DEC-20.
O discador automa'tico, neste exemplo, e' invocado de um
programa chamado DISQUE (imaginado aqui, por simplicidade),
ao qual basta que se fornec,a o nu'mero do telefone.
@disque 765-4321/baud:1200
Confirme: 765-4321, BAUD 1200. (Voce^ tecla RETURN)
Discando. Favor aguardar...
Portadora detectada atrave's da TTY12:
@
Existem outros me'todos para conectar dois hosts
com uma linha serial. As conexo~es entre ma'quinas
pro'ximas podem ser feitas simplesmente passando um
cabo EIA entre suas portas TTY. Conexo~es manuais tambe'm
podem ser feitas mas sa~o trabalhosas. Se voce^ tem um
micro que suporte KERMIT, talvez ache mais fa'cil transfe
rir um arquivo do host A para ele e, dele, para o host B.
O procedimento abaixo deve servir em qualquer caso,
uma vez feita a conexa~o. Note que o KERMIT-20 executa uma
conexa~o a terminal remoto rodando um programa chamado
TTLINK num "fork" inferior.
@
@kermit (chamando o KERMIT no DEC-20)
KERMIT-20>set ibm (aciona handshaking especial, pa
ridade e eco local)
KERMIT-20>set line (to tty) 12 (indica que linha usar)
KERMIT-20>connect (conectando-se)
[TTLINK: CONNECTING TO REMOTE HOST OVER TTY12;
TYPE <CTRL-Y>C TO RETURN]
VM/370 ONLINE (o sistema da' suas mensagens de saudac,a~o)
login eu co'digo (identificando-se ao sistema IBM)
LOGON AT 20:49:21 EST THURSDAY 07/12/84
CUVMB SP/CMS PUT 8210 01/19/84
kermit
KERMIT-CMS>send profile exec
^Yc (seque^ncia de escape do TTLINK)
[TTLINK: CONNECTION CLOSED. BACK AT DEC-20.]
KERMIT-20>receive (informa ao KERMIT-20 que la' vem arquivos)
A transfere^ncia comec,a nesse momento. O KERMIT-20
imprimira' os nomes dos arquivos que chegarem, seguidos de
pontos ou porcentos para indicar o tra'fego dos pacotes (um
ponto para cada 5 pacotes transferidos com sucesso, um
porcento para cada time-out ou retransmissa~o). A trans
missa~o estara' completa quando voce^ vir um "[OK]", ouvir um
bip soar e o prompt "KERMIT-20" aparecer. Neste ponto nos
reconectamos ao IBM remoto, saimos do KERMIT-CMS (EXIT) e
encerramos a sessa~o (LOGOUT).
profile exec 1 ..%%.[OK]
KERMIT-20>connect (de volta ao IBM para encerrar o servic,o)
[TTLINK: CONNECTING TO REMOTE HOST OVER TTY12:
TYPE <CTRL-Y>C TO RETURN
KERMIT-CMS>exit
R;
logout
CONNECT= 00:03:01 VIRTCPU= 000:00.12 TOTCPU= 000:00.60
LOGOFF AT 20:52:24 EST THURSDAY 12/07/84
^Yc (seque^ncia de escape do KERMIT-20)
[TTLINK: CONNECTION CLOSED. BACK AT DEC-20.]
KERMIT-20>exit (acabado o servic,o do KERMIT)
Este e' todo o procedimento. O arquivo esta' no seu
direto'rio (no DEC-20) completamente legi'vel, como
PROFILE.EXEC -- note que o KERMIT-CMS traduziu da
codificac,a~o EBCDIC usada pela IBM para ASCII e converteu o
espac,o entre o nome e o tipo em um ponto.
Para mandar um arquivo do host local para o remoto,
simplesmente precisamos inverter os comandos SEND e RECEIVE
que aparecem no exemplo acima.
.cp3
2.5.3. MICRO <---> MICRO
O KERMIT tambe'm funciona entre computadores pes
soais (micro, estac,o~es de trabalho). A diferenca aqui esta'
no fato de que os comandos sa~o entrados em dois teclados,
ao inve's de num so'. Isto porque um computador pessoal
normalmente so' aceita comandos atrave's de seu pro'prio
teclado. Se um KERMIT de um micro se conecta a outro,
na~o existira' normalmente programa algum, do outro lado, para
ouvi'-lo.
Fazer a conexa~o fi'sica entre os dois micros exige
certa atenc,a~o. Se as duas ma'quinas estiverem bem pro'ximas,
podera' ser usado um cabo "null-modem". No entanto, micros
diferentes tem diferentes requisitos (uns exigem um conector
fe^mea em sua porta serial, outros macho; uns precisam que
certos sinais RS-232 sejam mantidos altos ou baixos). De
qualquer modo voce^ sempre tem que se assegurar que as
velocidades das portas sa~o as mesmas nas duas ma'quinas.
As conexo~es a longa dista^ncia podem ser feitas via
discagem, desde que MODEMs compati'veis estejam disponi'veis
(pode ser interessante que um dos lados tenha resposta
automa'tica) ou usando qualquer tipo de circuito dedicado ou
chaveado que possa estar disponi'vel (PaBX, centrador de
portas ou outra coisa que se possa ligar em um conector
EIA).
Neste exemplo um DEC VT180 (ROBIN), sob CP/M, esta'
ligado a um SUPERBRAIN da INTERTEC, tambe'm sob CP/M, usan
do-se um cabo null-modem fe^mea-macho. Conseguir um cabo
certo e' a parte difi'cil. A conexa~o pode ser testada rodando
o pro'prio KERMIT nas duas ma'quinas e emitindo o comando
CONNECT em ambas: o que se teclar num dos micros
devera' tambe'm aparecer na tela do outro.
Suponha que voce^ quer enviar o arquivo ARQUIVO.HEX do
ROBIN para o SUPERBRAIN. Proceda da maneira descrita a
seguir.
1. Rode o KERMIT no SUPERBRAIN e de^ o comando de recepc,a~o:
A>kermit
INTERTEC SUPERBRAIN KERMIT-80 - V3.7
KERMIT-80>receive
2. Rode o KERMIT no ROBIN e comande-o para transmitir o
ARQUIVO.HEX
A>kermit
DEC VT18X KERMIT-80 - V3.7
KERMIT-80>send arquivo.hex
Observe os pacotes voando. Quando aparecer o prompt
"KERMIT-80>", a transfere^ncia terminou e voce^ pode sair dos
dois KERMITs.
O ponto chave e' preparar a recepc,a~o em primeiro
lugar (muitos KERMITs de micro na~o incluem a facilidade de
time-out e se o receptor na~o estiver pronto para receber
quando o transmissor comec,a a trabalhar, acontecera' um dead
lock de protocolo.
.cp3
2.6. Outra maneira: o SERVIDOR
Ate' agora estivemos descrevendo as verso~es elementares
do protocolo KERMIT. Uma extensa~o opcional deste protoco
lo inclui o conceito de SERVIDOR. Um SERVIDOR KERMIT e'
um programa KERMIT que na~o interage diretamente com o
usua'rio mas, sim, com outro programa KERMIT. Na~o se
entram comandos para um servidor: ele simplesmente e' cha
mado em uma ma'quina e os comandos para ele sa~o dados pela
ma'quina na outra ponta da conexa~o.
Nem todas as implementac,o~es do KERMIT podem ser ser
vidores e nem todas sabem falar com servidores (ainda). O
servidor deve rodar em um computador remoto, normalmente de
grande porte, como um DEC-20. Ainda se tem que fazer a
conexa~o com ele, identificar-se e disparar o servidor. Mas
na~o se tem mais que comandar um lado para enviar e o
outro para receber, nem se reconectar ao remoto para
encerrar a sessa~o. Usando o servidor, podemos fazer todas
as operac,o~es que quisermos, falando somente com o
KERMIT do computador local. Alguns servidores preveem
servic,os adicionais, como listagens de direto'rios, delec,a~o
de arquivos e consulta aos controles de uso de disco.
Um servidor KERMIT e' um mero programa KERMIT, rodan
do em um modo especial. Age como se fosse um KERMIT comum
depois que se da' o comando RECEIVE (espera por uma men
sagem do outro KERMIT) mas neste caso a mensagem e' um
comando que lhe diz o que fazer, normalmente enviar ou
receber um arquivo ou um grupo deles. Depois de escapar de
volta para o sistema local, podemos dar quantos comandos
de enviar ou receber que quisermos e, quando terminarmos,
podemos emitir o comando BYE, que envia ao servidor KERMIT
remoto a ordem de encerrar a sessa~o por no's. Na~o e'
necessa'rio que voltemos a nos conectar ao remoto para
fazer isto. Podemos, tambe'm, usar o comando FINISH, ao
inve's do BYE, para tirar o servidor do ar mas nos manter
em sessa~o com o host.
Este e' um exemplo do uso de um servidor KERMIT. O
usua'rio esta' usando um micro sob CP/M, ligado a um DEC-20
como host remoto.
A>kermit (chamando o KERMIT do micro)
KERMIT V3.7
KERMIT-80>connect
(pedindo conexa~o, apo's prompt do micro)
[CONNECTING TO REMOTE HOST.
TYPE CTRL-]C TO RETURN TO MICRO.]
CU20E (o DEC-20 o atende)
@login eu codigo (identifique-se, como sempre)
( o DEC-20 imprime va'rias mensagens...)
@kermit (chamando o KERMIT, normalmente)
KERMIT-20>server (mandando-o trabalhar como servidor)
KERMIT SERVER RUNNING ON DEC-20 HOST.
PLEASE TYPE YOUR ESCAPE SEQUENCE
TO RETURN TO YOUR LOCAL MACHINE.
SHUT DOWN THE SERVER BY TYPING THE
KERMIT COMMAND ON YOUR LOCAL MACHINE.
^]C (escapando, agora, para o micro)
[CONNECTION CLOSED, BACK AT MICRO.]
KERMIT-80>get *.pas (pegando todos meus programas PASCAL)
KERMIT-80>send arq*.* (enviando todos os arquivos
comec,ados por "ARQ")
KERMIT-80>exit (saindo do KERMIT; voltando para o CP/M)
A>
(Aqui podemos fazer algum trabalho no micro, como editar um
arquivo.)
A>kermit (rodando mais um pouco o KERMIT)
KERMIT-80>send oficio.txt (mando mais um arquivo)
KERMIT-80>bye (So' isto. Derrubo o servidor)
A> (de volta ao CP/M, automaticamente)
Assim e' mais simples. Note que uma vez iniciado o
servidor KERMIT na ponta remota, podemos rodar o KERMIT
quantas vezes quisermos, sem ter que ficar, mais, indo e
voltando ao host remoto. So' devemos ter cuidado para na~o
nos esquecermos de encerrar o servidor atrave's do comando
BYE.
Seguem os comandos ba'sicos disponi'veis para se falar
com servidores.
SEND especificac,a~o-de-arquivo
Envia um arquivo ou grupo de arquivos do
local para o remoto, da forma normal.
GET especificac,a~o-de-arquivo
Pede ao remoto que envie um arquivo ou um
grupo de arquivos para o local.
Este comando e' equivalente ao SEND num remo
to, seguido por um RECEIVE no local.
Repare que o KERMIT local na~o faz valida
c,a~o das especificac,o~es dos arquivos. Se o
servidor na~o puder obedecer ao comando,
mandara' de volta uma mensagem de erro
apropriada.
.cp3
BYE
Derruba o servidor e sai do KERMIT, bem
como vale um encerramento de sessa~o do host
(LOGOUT).
.cp5
FINISH
Derruba o servidor sem sair do KERMIT.
Um subsequente comando CONNECT nos devolve
ao seu servic,o no host remoto, a ni'vel de
comando CMS.
.pa
.he Quando as coisas va~o mal
3. Quando as coisas va~o mal
Conectar dois computadores pode ser um servic,o engano
samente fa'cil e muitas coisas podem sair erradas. Antes
que possamos efetivamente transferir arquivos, precisamos
estabelecer comunicac,a~o de terminal. Mas um sucesso numa
conexa~o de terminal na~o significa que uma transfere^ncia de
arquivos funcionara' e mesmo quando a transfere^ncia pa
rece estar funcionando, podem acontecer coisas que a arrui
nem.
.cp3
3.1. Problemas com a linha de comunicac,a~o
Se voce^ tem uma versa~o do KERMIT em seu micro mas o
comando CONNECT parece na~o funcionar, assegure-se de que
todas as conexo~es fi'sicas exigidas foram feitas, sem folgas
meca^nicas; se estiver usando um modem full-duplex, veja
se a la^mpada que indica a presenc,a da portadora esta' ligada;
se seu micro tem mais de um conector, veja se esta' usando o
certo; observe se o port esta' preparado corretamente para a
velocidade (ou baud-rate) empregados no host; algumas ver
so~es do KERMIT tem, internamente, o comando SET BAUD, outros
precisam que se prepare o baud rate usando as facilidades
do seu sistema operacional, antes que o KERMIT comece a
rodar; use o comando SHOW para verificar qual o baud rate
corrente; veja se os outros para^metros da linha de comunica
c,a~o (como paridade, bits por caracter, handshake e controle
de fluxo) esta~o propriamente setados.
Consulte, sempre, os manuais de sistemas e de equipa
mentos.
Se todas as conexo~es e preparac,o~es parecem estar
corretas e ainda assim na~o conseguir estabelecer comunica
c,a~o, o defeito pode estar no seu modem. Os modems internos
(aqueles que sa~o colocados num dos slots, dentro do
chassi do micro) na~o sa~o recomendados para o uso com
KERMIT. Muitos dos programas KERMIT para micro sa~o escri
tos para controlar o hardware de comunicac,a~o explicita
mente e os modems internos podem interferir com tal
controle.
O KERMIT normalmente espera ter controle total
da porta de comunicac,a~o. Entretanto, alguns equipamentos
de comunicac,a~o controlam a linha entre os dois computa
dores, em ambas as pontas. Exemplos de onde isto acontece
sa~o os modems "inteligentes", as unidades de selec,a~o ou
contenc,a~o de portas, multiplexadores, redes locais e
redes que abranjem grandes a'reas. Tais equipamentos
podem interferir com o protocolo de transfere^ncia de
arquivos do KERMIT de diversas formas: pode ser imposto um
regime de paridade sobre a linha; isto significa que o
oitavo bit de cada caracter e' usado pelo equipamento para
checar a transmissa~o; o uso de paridade...
... faz com que o checksum dos pacotes se apresentem
incorretos ao receptor e frustam qualquer trans
fere^ncia de arquivos; na maioria dos casos nem o
primeiro pacote passara';
... impede o uso do oitavo bit, impresci'ndivel para
dados bina'rios;
se a conexa~o como terminal funciona mas a transfere^ncia de
arquivos na~o, a paridade geralmente e' a culpada; para
passar por cima deste inconveniente, descubra que paridade
esta' sendo usada e informe ao KERMIT de cada ponta
(atrave's do comando SET) de modo que eles possam:
a) compor e interpretar corretamente os checksums
b) empregar uma codificac,a~o especial que permita passar
o oitavo bit atrave's do canal de comunicac,a~o de 7
bits (muitas redes de comutac,a~o de pacotes, como a
GTE TELENET, exigem que se prepare a paridade); os
equipamentos de comunicac,a~o podem interpretar cer
tos caracteres no fluxo de dados como comandos;
por exemplo: de repente voce^ ve^ o seu modem
"inteligente" se desconectando e comec,ando a dis
car uma ligac,a~o para a Tasma^nia. O u'nico modo de
se contornar tais problemas e' colocar tais equipa
mentos em modo "transparente" ou "bina'rio". A
maioria dos equipamentos de comunicac,a~o tem uma
forma de se fazer isto (veja no manual). Em al
guns casos o modo transparente tambe'm cancela
ra' o processamento da paridade, permitindo o uso do
oitavo bit para dados.
.cp3
3.2. A transfere^ncia ficou presa
Exitem va'rias situac,o~es nas quais transfere^ncias de
arquivos podem ficar presas mas, uma vez que muitos
hosts sa~o capazes de gerar interrupc,o~es de timeout
quando os dados na~o chegam suficientemente ra'pidos,
eles podem usualmente retransmitir ou negar a recepc,a~o (NAK
- negatively acknowledge) de pacotes perdidos. Ainda
assim, se uma transfere^ncia parecer presa, voce^ pode
teclar RETURN na maioria dos micros para simular um
timeout.
Uma excessa~o interessante e' o KERMIT que fica no
host IBM (sob VM/CMS): ele na~o consegue detetar timeout
em sua "console virtual" (ou seja, o terminal do usua'rio).
Dai', quando se esta' usando o KERMIT de um micro ligado a
um host IBM, e' eventualmente necessario se "reavivar"
manualmente o host.
As sec,o~es seguintes discutem varias razo~es pelas
quais uma transfere^ncia em atividade fica presa.
Antes de examina'-las, assegure-se de ter, realmente, um
KERMIT na outra extremidade da linha e de que voce^ emitiu o
comando apropriado (SEND, RECEIVE ou SERVER). Se o lado
remoto na~o for um servidor, lembre-se de que voce^ tem
que se re-conectar a cada transfere^ncia e emitir um
novo comando SEND ou RECEIVE.
.cp3
3.3. O micro se enganchou
O pro'prio micro eventualmente se engancha por
razo~es acima do controle do KERMIT como, por exemplo,
flutuac,o~es de energia. Se a tela do micro na~o foi atuali
zada por um longo peri'odo, o micro pode ter se enganchado.
Tente os passos a seguir (na ordem dada).
- Cheque a conexa~o. Veja se algum conector na~o ficou
frouxo. Se voce^ estiver usando um modem, veja se
ainda existe o sinal da portadora e reestabelec,a a
sua conexa~o, se for o caso.
- Tecle RETURN para acordar seu micro. Isto deve
limpar qualquer deadlock no protocolo. Diversos
RETURNs podem ser necessa'rios.
- Se o problema na~o for de deadlock, reinicie o
micro e, enta~o, reinicie o KERMIT, reconecte-se ao
host, retorne ao seu servic,o ou recomece a partir do
processo de identificac,a~o ao sistema (LOGIN) para
reiniciar a transfere^ncia. Talvez voce^ tenha que
parar e reiniciar o KERMIT no host.
.cp3
3.4. O host sumiu
Se o seu sistema local estiver funcionando mas a
transfere^ncia estiver enganchada, talvez o host remoto ou
o KERMIT dele esteja com defeito. Volte a ni'vel de comando
no KERMIT local (nas implementac,o~es para microcomputa
dores, voce^ pode estar apto a fazer isso teclando cerca de 5
RETURNs ou um ou mais CONTROL-C's). Emita o comando
CONNECT para que voce^ possa ver o que aconteceu. Se o
sistema remoto quebrou, voce^ tera' que esperar ate' que o
consertem e recomec,ar a transfere^ncia do arquivo em que
voce^ estava trabalhando no momento do pane.
.cp3
3.5. O disco esta' cheio.
Se seu disquete local ou se o direto'rio do host lotou,
o KERMIT da ma'quina onde aconteceu o problema o
informara' e encerrara' a transfere^ncia. Pode-se reini
ciar a transfere^ncia repetindo todo o procedimento com
um novo disquete ou apo's uma "limpeza" do direto'rio. Alguns
programas KERMIT permitem que se continue a seque^ncia
onde se havia parado. Por exemplo, no DEC-20, usando-
se o comando SEND e incluindo o nome do arquivo no campo
"(INITIAL)":
KERMIT-20>send *.for (initial) arquivo4.for
.cp3
3.6. Interfere^ncia de mensagens
Voce^ pode descobrir que ocasional e imprevi
sivelmente as transmisso~es de arquivos falham. Uma das
explicac,o~es poderia ser que mensagens de terminais esta~o
se misturando com seus pacotes de dados. Isto pode in
cluir mensagens de broadcasting do sistema (como "O sistema
vai sair do ar em 30 minutos."), mensagens de outros
usua'rios ("Ei, Ricardo! Que programa e' esse, KERMIT, que
voce^ vive rodando?"), avisos que voce^ possa ter pedido ("Sao
19:30. Va' pra casa!" ou "Voce recebeu uma corresponde^ncia
de..."). Muitos programas KERMIT tentam desabilitar automa
ticamente mensagens intrusas mas nem todos podem garantir
que va~o funcionar quando as coisas va~o mal. Por isso
talvez seja bom se cuidar manualmente para que essas mensa
gens na~o aparec,am. A maioria dos sistemas operacionais dos
hosts aceita comandos que inibem mensagens deles para o
terminal.
.cp3
3.7. Erros no host
Va'rias condic,o~es de erro podem ocorrer no host
e afetar a transmissa~o de um arquivo. Sempre que ocor
rem tais erros, o KERMIT remoto normalmente tenta trans
mitir uma mensagem informativa a respeito ao KERMIT local,
parando a transmissa~o e nos colocando em ni'vel KERMIT de
comando no micro.
.cp3
3.8. O arquivo e' lixo
Existem condic,o~es sob as quais o KERMIT acredita
haver transmitido bem um arquivo quando, na realidade, na~o o
fez. Geralmente e' devido a` tarefa enganosamente simples
de especificar as caracteri'sticas de um arquivo, como
texto versus bina'rio, sete X oito bits, blocado X
desblocado ou varia'vel e por ai' a fora. Cada sistema
tem as suas pro'prias peculiaridades e cada KERMIT tem
comandos especiais que permitem especificar como um arqui
vo deve ser armazenado ou transmitido. Normalmente tais
dificuldades so' aparecem quando da transfere^ncia de ar
quivos bina'rios. Arquivos de texto na~o costumam apresentar
problemas entre dois programas KERMIT quaisquer, mesmo
rodando em ambientes distintos.
.cp3
3.9. Veio lixo depois do fim do arquivo
Quando se transfere arquivos de texto de um micro para
um host, a`s vezes aparecem caracteres estranhos no fim,
depois dele chegar ao sistema alvo.
Isto e' porque muitos micros na~o possuem um modo
consistente de indicar fim de arquivo. O CP/M e' um bom
exemplo. A menor unidade de armazenamento em um disquete
de CP/M e' um "bloco" de 128 bytes. Arquivos bina'rios
sempre consistem em um nu'mero de blocos completos mas
um arquivo de texto pode terminar em qualquer parte de um
bloco. Ja' que o CP/M na~o grava um contador de bytes num
arquivo, usa a convenc,a~o de marcar o seu fim com o caracter
CONTROL-Z.
Se a sua versa~o de KERMIT na~o esta' interessada nesta
convenc,a~o, vai transmitir todo o bloco final, que pode
conter (e provavelmente contera') lixo depois do fim
"real" do arquivo.
Para contornar este inconveniente, a maioria dos
KERMITs para micro tem comandos como SET FILE ASCII ou
SET FILE TEXT para instruir o KERMIT a obedecer a
convenc,a~o do CONTROL-Z. Outros ja' trabalham em modo texto
por default, outros ainda em modo bina'rio ou bloco.
.pa
.he Comandos KERMIT
4. Comandos KERMIT
A descric,a~o feita aqui e' de um programa KERMIT
"ideal", que tem a maioria das facilidades especificadas
no Manual do Protocolo KERMIT. Programa KERMIT algum
tera' todos os comandos aqui descritos nem suportara'
todas estas opc,o~es. A forma exata de alguns comandos podera'
diferir de versa~o para versa~o. Alguns programas KERMIT
podem suportar opc,o~es dependentes de sistema na~o descri
tas aqui. A intenc,a~o desta descric,a~o e' dar uma base na
qual programas KERMIT especi'ficos podera~o ser descritos em
termos de suas pro'prias diferenc,as do "ideal".
.cp3
4.1. Operac,a~o remota e local
Alguns programas KERMIT podem rodar de duas manei
ras: remota e local. Um KERMIT remoto normalmente roda
em um host, ao qual nos ligamos atrave's de um micro.
Quando um KERMIT roda remotamente, toda transfere^ncia
de arquivo e' feita pela linha do terminal de controle de
servic,o (a mesma que voce^ usou para se identificar ao
sistema operacional do host e usar comandos interativos). O
sistema operacional pensa que voce^ tem um terminal comum, ao
inve's de um microcomputador.
Quando o KERMIT esta' operando em modo local, a
transfere^ncia de arquivos e' feita atrave's de um dispositi
vo externo, como a porta de comunicac,a~o serial do micro
ou como uma linha de terminal associada do host.
O KERMIT local e' ligado de alguma forma (um mecanismo
de discagem) a outro computador, rodando sua pro'pria versa~o
do KERMIT. O KERMIT local dete'm o controle da tela; o
remoto na~o tem acesso direto a ela. Os KERMIT de micro
geralmente rodam em modo local, enquanto os de host em modo
remoto, precisando comandos especiais para entrarem em modo
local. Alguns comandos so' fazem sentido para KERMITs remo
tos, outros so' para locais e outros ainda podem ser usados
em ambos. As operac,o~es remota e local sa~o, esquematicamen
te, o seguinte.
.cp20
linha de comunicac,a~o
+-------------/ /------(pacotes)---+ outras
| | linhas
MICRO LOCAL | | | | |
+-----------+-----------+ | | | |
| porta serial | +--+--+-+-+----+
|-----------------------| | | |
| | | | |
| Pacotes: 724 | | sua |
| Retries: 1 | | linha |
| File: PROGRAMA.C | | de |
| | | servic,o |
| (tela) | | de |
+-+---------------------+ | terminal |
|(comandos) | |
| +---------+ +--------------+
+---+ teclado | (Voce^) HOST REMOTO
+---------+
O programa KERMIT no micro e' um KERMIT LOCAL. Pode
controlar a tela, o teclado e a porta separadamente, podendo
assim atualizar a tela com informac,o~es de status, observar
atividade no e transferir pacotes de dados atrave's da porta
serial, ao mesmo tempo.
O programa KERMIT no host e' o KERMIT REMOTO. O
usua'rio se identifica ao host atrave's de uma porta de
terminal. O host na~o sabe se o usua'rio esta' entrando via um
micro. As func,o~es do teclado, da tela e da porta esta~o
todas combinadas na linha para terminal do host onde o
usua'rio se liga. Em vista disto, o KERMIT remoto e' cortado
da sua tela e do seu teclado durante uma transfere^ncia de
arquivo.
Um servidor KERMIT e' sempre remoto e tem que receber
seus comandos de um KERMIT local. As descric,o~es que seguem
indicara~o quando um comando tem que ser remoto ou local.
.cp3
4.2. Interface de comandos
A maioria das implementac,o~es (a versa~o UNIX e' a maior
excec,a~o) tem uma interface de comandos tipo palavras-chave
ativa, cujo modelo foi o DECSYSTEM-20: em resposta ao
prompt "KERMIT-XX>", tecla-se uma palavra chave (como
SEND, RECEIVE ou EXIT), possivelmente seguida por palavras
chave adicionais ou para^metros, cada um deles chamado
"campo". As palavras chave podem ser abreviadas para
qualquer tamanho desde que se mantenha a distinc,a~o entre
aquelas possi'veis para cada campo. Um ponto de interroga
c,a~o, a qualquer momento pode ser usado para se obter
informac,o~es acerca de o que e' esperado ou va'lido naquele
momento. A facilidade ESC-? funciona melhor em siste
mas full-duplex (ate' o presente, todos menos o host
IBM), onde o programa pode "acordar" imediatamente e
executar a func,a~o requerida. Em sistemas orientados para
registros ou half-duplex, a facilidade de ESC na~o esta'
disponi'vel e o "?" requer um RETURN.
Neste exemplo o usua'rio tecla "SET" e um ponto de
interrogac,a~o para descobrir quais sa~o as opc,o~es do SET.
Continua, enta~o, o comando no lugar onde o ponto de
interrogac,a~o estava, adicionando um "D" e outro ponto de
interrogac,a~o para ver quais das opc,o~es comec,am com tal
letra. O usua'rio escolhe duplex: tecla "U" (a u'nica opc,a~o
do SET que comec,a com "DU"), seguido por um ESC (mostrado
aqui por um "$") para completar o campo corrente e emite a
palavra guia "(TO)" para a pro'xima, enta~o outro ponto de
interrogac,a~o para ver as possibilidades e assim por diante.
O comando e' finalmente terminado por um RETURN. Antes de se
teclar RETURN o comando pode ser editado usando RUBOUT ou
outras teclas apropriadas. Finalmente o mesmo comando e'
entrado novamente com um mi'nimo de digitac,a~o, com cada
campo abreviado a seu u'nico comprimento mais curto. Neste
exemplo, as partes tecladas pelo usua'rio estara~o em minu's
culas.
KERMIT-20>set ?
DEBUGGING DELAY DUPLEX ESCAPE
FILE HANDSHAKE IBM LINE
PARITY RECEIVE SEN
KERMIT-20>set d?
DEBUGGING DELAY DUPLEX
KERMIT-20>set du$plex (to) ?
FULL HALF
KERMIT-20>set duplex (to) h$ALF
KERMIT-20>set du h
.cp3
4.3. Notac,a~o
Nas descric,o~es de comando, a seguinte notac,a~o e' usada:
.cp4
qualquer
um para^metro - o si'mbolo em minu'sculas e' trocado
por um argumento do tipo especificado (nu'mero,
nome do arquivo etc.)
.cp3
[qualquer]
um campo opcional; se omitido um valor
default apropriado o substituira'
.cp3
nu'mero
um nu'mero inteiro, entrado segundo notac,a~o pre'via
do sistema
.cp4
caracter
um u'nico caracter, entrado literalmente ou como
um nu'mero (talvez octal ou hexadecimal) represen
tando o valor ASCII do caracter
.cp3
nu'mero de ponto flutuante
um nu'mero "real", contendo possivelmente um
ponto decimal e uma parte fraciona'ria
.cp7
especarq
uma especificac,a~o de um arquivo, isto e': o nome
de um arquivo, possivelmente incluindo uma
rota de busca, nome de dispositivo ou dire
to'rio ou outra informac,a~o de qualificac,a~o,
inclusive caracteres coringa, ou de ma'scara
para definic,a~o de grupos de arquivos
.cp5
^X
um caracter de controle pode ser escrito usando-
se a notac,a~o "seta-para-cima" ou "circunflexo",
ja' que muitos sistemas mostram seus caracteres de
controle desta forma.
Os comandos sera~o mostrados em caixa-alta (maiu'sculas)
mas podem ser entrados em qualquer combinac,a~o de maiu'sculas
e minu'sculas.
.cp3
4.4. Suma'rio dos comandos KERMIT
Esta e' uma lista resumida dos comandos KERMIT da
forma como eles devem ser encontrados na maioria dos progra
mas KERMIT. As pro'ximas sec,o~es descrevera~o tais comandos em
detalhe.
.cp2
Para trocar arquivos:
SEND, RECEIVE, GET
.cp4
Para se conectar a um host remoto:
CONNECT, SET LINE, SET PRIORITY, SET DUPLEX,
SET HANDSHAKE,
SET ESCAPE, SET FLOW-CONTROL
.cp2
Para agir como um servidor:
SERVER
.cp2
Para falar com um servidor:
BYE, FINISH, GET, SEND, REMOTE
.cp8
Preparando transmisso~es e para^metros de arquivos na~o-
standard:
SET BLOCK-CHECK, SET DEBUG, SET DELAY, SET FILE,
SET INCOMPLETE,
SET PARITY, SET RETRY;
SET SEND (ou RECEIVE) END-OF-LINE, START-OF-PACKET,
PACKET-LENGTH,
PAUSE, TIMEOUT, PADDING
.cp2
Para definir "macros" de comandos SET:
DEFINE
.cp2
Para interromper a transmissa~o:
CONTROL-X, CONTROL-Z, CONTROL-C
.cp2
Para conseguir informac,o~es:
HELP, STATISTICS, SHOW
.cp2
Para executar arquivos de comandos:
TAKE
.cp2
Para gravar um arquivo com o histo'rico de uma transmissa~o:
LOG TRANSACTIONS
.cp3
Para captura ou transmissa~o de arquivos sem-protocolo (na~o-
formais):
LOG SECTION, TRANSMIT
.cp2
Para abandonar o programa:
EXIT, QUIT
Se sua versa~o do KERMIT reconhece o comando TAKE e se
voce^ tem um arquivo chamado KERMIT.INI no seu disco
default, o KERMIT executara', automaticamente, um comando
TAKE sobre ele durante sua inicializac,a~o. Este arquivo
pode conter qualquer comando KERMIT (por exemplo, comandos
SET ou DEFINE para chamar macros que configurem o KERMIT
para os va'rios sistemas ou meios de comunicac,a~o).
.cp3
4.5. SEND
Sintaxe: SEND especarq1 [especarq2]
O comando SEND faz com que um arquivo ou um grupo
deles seja enviados para outro sistema. Existem duas for
mas do comando, dependendo do fato de haver ou na~o
caracteres coringa em especarq. O uso de caracteres
coringa e' o me'todo mais comum de se indicar um grupo de
arquivos numa u'nica especificac,a~o de arquivo. Por exemplo,
se FULANO.TXT e' um arquivo de texto, enta~o *.TXT se refere
ao grupo dos arquivos de texto.
Se especarq1 conte'm caracteres coringa, todos os
arquivos que coincidirem sera~o enviados, na ordem do
direto'rio, por nome. Se um arquivo na~o puder ser aberto
para leitura, sera' pulado.
O arquivo inicial para um grupo pode ser indicado em
especarq2. Isto possibilita uma transfere^ncia de um grupo
ser continuada do ponto em que foi abandonada, bem como para
pular alguns arquivos que na~o se interessa transmitir.
Se especarq1 na~o conte'm caracter coringa algum, o
u'nico arquivo especificado sera' transmitido. Opcionalmente
especarq2 podera' ser usado para especificar o nome sob o
qual o arquivo chegara' no sistema alvo. Especarq2 na~o e'
validado; se na~o especificado, o arquivo mantera' seu nome.
Os arquivos sera~o transmitidos com seus nomes e tipos
(por exemplo, ARQ.TXT, sem campos de direto'rio ou disposi
tivo, sem nu'mero de gerac,a~o ou atributos). Ao se usar
paridade na linha de comunicac,a~o (veja SET PARITY), o
KERMIT transmissor exigira' que o outro KERMIT aceite um
tipo especial de notac,a~o de prefixo para arquivos bina'rios.
Isto e' uma facilidade avanc,ada e nem todos os KERMITs a tem;
se o outro KERMIT na~o concordar em usa'-la, arquivos
bina'rios na~o podera~o ser transmitidos corretamente.
Outra coisa que o KERMIT transmissor perguntara' ao
receptor e' se ele e' capaz de manusear uma codificac,a~o
especial de prefixos para caracteres repetidos. Caso receba
uma resposta afirmativa, arquivos com longas cadeias de
caracteres repetidos sera~o transmitidos mais eficiente
mente. Textos com tabelas ou altamente identados e arquivos
bina'rios sa~o os maiores beneficiados com esta te'cnica.
Operac,a~o remota de SEND
Se voce^ esta' rodando o KERMIT remotamente, deve "esca
par" de volta para o seu KERMIT local dentro de um
tempo razoa'vel e dar o comando RECEIVE. Na~o leve mais de 1
ou 2 minutos para completar o chaveamento sena~o o KERMIT
remoto podera' "desistir" por time-out (neste caso voce^ tera'
que se reconectar ao remoto e emitir novamente o comando
SEND).
Operac,a~o local de SEND
Se voce^ esta' operando localmente um KERMIT, ja'
deve ter inicializado um KERMIT remoto e emitido um comando
RECEIVE ou SERVER.
Uma vez dado o comando SEND, o nome de cada arquivo
aparecera' na sua tela conforme comec,ar a transfere^ncia
e informac,o~es sera~o dadas para informar o tra'fego dos
pacotes. Quando a operac,a~o especificada terminar, o
programa fara' soar um BIP e o status da operac,a~o sera'
indicada por uma mensagem como OK, COMPLETE, INTERRUPTED ou
FAILED.
Se voce^ perceber muitas indicac,o~es de retransmisso~es
de pacotes, provavelmente voce^ esta' sofrendo de um mal
chamado "conexa~o ruidosa". Uma forma para se diminuir o
nu'mero de retransmisso~es e' usar o comando SET SEND
PACKET-LENGTH para diminuir o comprimento dos pacotes;
tal medida diminuira' a probabilidade de um dado pacote ser
adulterado por rui'do e reduzira' o tempo gasto com as
retransmisso~es dos pacotes adulterados.
Se voce^ notar que esta' sendo transmitido um ar
quivo que na realidade na~o era para o ser, podera' cance
lar a operac,a~o imediatamente teclando CONTROL-X ou CONTROL-
Z. Se voce^ estiver trabalhando com um grupo de arqui
vos, o CONTROL-X causa o "pulo" do arquivo correntemente
sendo transmitido e o KERMIT procurara' o pro'ximo arquivo;
CONTROL-Z cancelara' a transmissa~o de todo o grupo de arqui
vos e devolvera' voce^ a ni'vel de comando do KERMIT-20.
.cp5
4.6. RECEIVE
Sintaxe: RECEIVE [especarq]
O comando RECEIVE informa ao KERMIT que deve passar a
esperar pela chegada de um arquivo ou por um grupo de arqui
vos enviado por um comando SEND dado ao outro sistema.
Se somente um arquivo estiver sendo recebido, voce^ pode
incluir a especarq opcional para informar o nome a ser
dado para gravar o arquivo que chegar (sena~o o nome
transmitido sera' mantido). Se o nome que vier no header na~o
for um nome va'lido para o sistema local, o KERMIT tentara'
transforma'-lo num nome bom. Se o nome sob o qual o arquivo
sera' gravado ja' existir, o KERMIT tanto tentara' sobrepor o
arquivo existente com o novo quanto tentara' inventar um
novo nome, dependendo da preparac,a~o para manuseio de arqui
vos.
Se voce^ ligou paridade, a prefixac,a~o do oitavo bit sera'
exigida. Se o outro lado na~o puder fazer isto, arquivos
bina'rios na~o podera~o ser corretamente transmitidos. O
KERMIT transmissor podera', tambe'm, pedir autorizac,a~o para
comprimir caracteres repetidos.
Se um arquivo na~o chegar integralmente, sera' descartado
pelo KERMIT e na~o aparecera' no seu direto'rio. Voce^ podera'
mudar este comportamento atrave's do comando SET INCOMPLETE
KEEP.
Operac,a~o remota de RECEIVE
Se voce^ estiver rodando KERMIT remotamente, deve
escapar de volta para o local e emitir o comando SEND. Isto
dentro de 2 minutos no ma'ximo ou o KERMIT remoto desis
tira' por time-out. Se isto acontecer, conecte-se de
volta ao remoto e re-emita o comando RECEIVE.
Operac,a~o local de RECEIVE
Se voce^ esta' rodando o KERMIT localmente, ja' deve ter
emitido o comando SEND no remoto e escapado de volta
para o local. Conforme os arquivos forem chegando, seus
nomes aparecera~o na tela, juntamente com informac,o~es sem
pre atualizadas do tra'fego dos pacotes.
Se comec,ar a chegar um arquivo que voce^ na~o quer,
cancele sua transmissa~o teclando CONTROL-X; isto manda um
pedido de cancelamento para o KERMIT remoto. Se o KERMIT
remoto entender seu pedido (nem todas as implementac,o~es do
KERMIT suportam isto), ele obedecera'; se na~o ele continua
ra' a transmitir. Se um grupo de arquivos estiver
sendo transmitido, voce^ pode cancelar a transmissa~o de todo
o grupo, teclando CONTROL-Z.
.cp5
4.7. GET
Sintaxe: GET especarq-remoto (SOMENTE LOCAL)
O comando GET pede a um servidor KERMIT remoto para
mandar o arquivo ou o grupo de arquivos especificados
pela especarq-remoto. Note a distinc,a~o entre os comandos
RECEIVE e GET: o RECEIVE po~e o KERMIT num estado passivo
de espera, enquanto o GET manda um comando SEND para o
servidor.
O comando GET so' pode ser usado quando o KERMIT e'
local, com um servidor na outra ponta da linha. Isto signi
fica que voce^ ja' tem que ter se conectado a um outro
sistema, se identificado, chamado o KERMIT de la', emitido o
comando SERVER e escapado de volta para o KERMIT local.
A especarq remota e' qualquer conjunto de caracteres
que possa ser vista como uma especificac,a~o va'lida de arqui
vo para o sistema remoto. Na~o e' validada localmente.
Conforme os arquivos chegam, seus nomes va~o sendo mostrados
na tela, junto com conti'nuas indicac,o~es do tra'fego dos
pacotes. Como no comando RECEIVE, voce^ pode teclar ^X para
pedir que o arquivo que estiver chegando seja cancelado,
^Z para pedir que todo o conjunto o seja.
Se o KERMIT remoto na~o for capaz de executar func,o~es
de servidor, voce^ provavelmente recebera' de volta uma men
sagem dele como "ILLEGAL PACKET TYPE" (tipo de pacote
inva'lido). Neste caso voce^ tem que se conectar com o outro
KERMIT, emitir o comando SEND, escapar de volta e dar o
comando RECEIVE.
.cp5
4.8. SERVER
Sintaxe: SERVER (SOMENTE REMOTO)
O comando SERVER faz com que o KERMIT pare de rece
ber comandos do teclado e passe a receber todas as futuras
instruc,o~es sob a forma de pacotes KERMIT de outro siste
ma. Um servidor KERMIT tem que ser remoto. Isto implica em
dizer que voce^ tem que estar dentro de um sistema, por
meio de um outro computador (um micro, por exemplo).
Ale'm disto, seu KERMIT local deve ter comandos para se
comunicar com servidores (isto inclui GET, FINISH e BYE).
Depois de emitir este comando, escape de volta para
o seu sistema local e emita SEND, GET, BYE, FINISH ou outro
comando de servidor. Se o seu KERMIT local na~o tem o
comando BYE, enta~o ele na~o tem completa habilidade para
se comunicar com um servidor e voce^ na~o deve colocar o
KERMIT remoto em modo servidor mas, se tem, use-o para
derrubar o servidor KERMIT e encerrar a sessa~o quando termi
nar o servic,o.
Quaisquer para^metros na~o standard devem ser sele
cionados com o comando SET antes de deixar o KERMIT em
modo servidor, em particular os de BLOCK-CHECK e FILE.
.cp5
4.9. BYE
Sintaxe: BYE (SOMENTE LOCAL)
Quando rodando como KERMIT local falando com um
servidor KERMIT remoto, use o comando BYE para derrubar o
servidor e encerrar a sessa~o. Seu uso tambe'm fechara' qual
quer arquivo log de depurac,a~o e encerrara' o KERMIT local.
.cp5
4.10. FINISH
Sintaxe: FINISH (SOMENTE LOCAL)
Rodando como um KERMIT local falando com um servidor
KERMIT remoto, use o FINISH para encerrar o KERMIT remoto
sem fechar a sessa~o no host, de forma a poder se reco
nectar a ele conforme precisar. Inclui um fechamento de
algum arquivo log local.
.cp5
4.11. REMOTE
Sintaxe: REMOTE comando (SOMENTE LOCAL)
Rodando em modo local, falando com um servidor KERMIT
remoto, manda o comando especificado para o servidor. Se o
servidor na~o entender o comando (todos esses comandos
sa~o facilidades opcionais do protocolo KERMIT), respondera'
com uma mensagem como "UNKNOWN KERMIT SERVER COMMAND".
Se entender, mandara' os resultados de volta e eles sera~o
mostrados na tela. Os comandos remotos sa~o:
.cp7
CWD [direto'rio]
Troca o direto'rio em uso. Se na~o for dado um
nome, o servidor usara' o nome default. De
outra forma voce^ sera' inquirido por um co'digo
de acesso e o servidor tentara' mudar a
especificac,a~o do direto'rio. Se o acesso
lhe for negado, o servidor mandara' uma
mensagem a respeito.
.cp3
DELETE especarq
Apaga o arquivo ou grupo de arquivos especi
ficado. O nome de cada um aparecera' na sua
tela.
.cp5
DIRECTORY [especarq]
Os nomes de arquivo que coincidirem
com a especificac,a~o dada aparecera~o na
tela. Na falta de uma especificac,a~o, to
dos os nomes de arquivo do presente dire
to'rio sera~o listados.
.cp4
DISK [direto'rio]
Prove^ informac,a~o acerca de uso de disco no
presente direto'rio como a quota, o armaze
namento corrente, o total de espac,o livre.
.cp2
HELP
Fornece uma lista das func,o~es disponi'veis.
.cp4
HOST [comando]
Passa o dado comando para o sistema do host
sob o qual o servidor esta' rodando e
manda a tela resultante para a tela do
local.
.cp5
KERMIT [comando]
Passa o comando dado, que e' expresso na sin
taxe de comandos pro'pria do servidor KERMIT,
para o servidor, para execuc,a~o. Isto e' muito
u'til para alterac,a~o de opc,o~es do comando
SET, LOG e outras.
.cp4
RUN nome-do-programa [argumentos]
Faz com que o KERMIT remoto rode o programa
indicado, com os argumentos passados.
Manda o resultado de volta para a sua tela.
.cp5
PROGRAM [comando]
Manda o comando ao programa previamente dis
parado por um comando RUN. Mostra os resulta
dos na sua tela. Se na~o for fornecido um
comando, entrega um caracter de RETURN para o
programa.
.cp3
TYPE especarq
Lista o conteu'do do arquivo especificado na
sua tela.
.cp5
4.12. LOCAL
Sintaxe: LOCAL comando
Executa o comando especificado no sistema local (no
sistema onde o KERMIT que esta' recebendo este comando esti
ver rodando). Tais comandos proveem certa facilidade local
de manuseio de arquivos sem ter que sair do KERMIT, o que e'
particularmente u'til em um microcomputador.
CWD [direto'rio] (muda o direto'rio em uso)
DELETE especarq (apaga o arquivo ou grupo de arquivos
especificado)
DIRECTORY [especarq] (prove^ uma listagem de direto'rio)
Alguns programas KERMIT podem prover comandos para
estas e outras func,o~es na sintaxe de seus pro'prios sis
temas, quando isto na~o causar confuso~es. Por exemplo, o
KERMIT de CP/M pode usar ERA em vez de DELETE, sem ser
precedido pela palavra "LOCAL".
.cp5
4.13. CONNECT
Sintaxe: CONNECT [designac,a~o-de-terminal]
Estabelece uma conexa~o de terminal com o sistema na
outra ponta da linha de comunicac,a~o. Num micro, normalmente
e' uma porta serial. Num computador de grande porte, voce^
tera' que especificar um nu'mero de linha de terminal ou
outro identificador, ou no pro'prio comando CONNECT ou num
comando SET. Volte ao KERMIT local atrave's da seque^ncia de
escape teclando o <ESC> seguido por um comando de carac
ter u'nico. Diversos comandos de caracter u'nico sa~o possi'
veis:
C encerra a conexa~o e volta ao KERMIT local
S mostra o status da conexa~o
B manda um sinal de BREAK
0 (zero) manda um caracter nulo.
P cai no sistema local sem encerrar a conexa~o
Q encerra a transcric,a~o da sessa~o para o log
R reinicia a transcric,a~o da sessa~o para o log
? lista todos os argumentos de caracter u'nico possi'veis
^] (ou qualquer caracter de escape combinado)
Teclar o caracter de escape 2 vezes manda uma co'pia
dele ao host conectado.
Podemos usar o comando SET ESCAPE para definir um
caracter de escape diferente e acertar a paridade, DUPLEX e
HANDSHAKE, para estabelecer ou mudar estes para^metros.
.cp5
4.14. HELP
Sintaxe: HELP
Teclar "HELP" sozinho da' um resumo do KERMIT e
seus comandos e possivelmente instruc,o~es para obter
detalhamento em to'picos particulares. A maioria das imple
mentac,o~es do KERMIT tambe'm permite o uso do "?" dentro de
um comando para produzir uma pequena mensagem de ajuda.
.cp5
4.15. TAKE
Sintaxe: TAKE especarq
Executa comandos KERMIT presentes no arquivo especifi
cado. O arquivo pode conter qualquer comando KERMIT va'lido,
inclusive outros TAKE's.
.cp5
4.16. EXIT, QUIT
EXIT sai do KERMIT
QUIT sino^nimo de EXIT
.cp5
4.17. SET
Sintaxe: SET [opc,a~o] [valor]
Estabelece ou modifica va'rios para^metros para a
transfere^ncia de arquivos ou para uma conexa~o.
Quando uma operac,a~o de transfere^ncia de arquivo
comec,a, os dois KERMITs automaticamente trocam mensagens
especiais de inicializac,a~o, nas quais cada programa prove^
certas informac,o~es sobre si ao outro. Essas informac,o~es
incluem o tamanho ma'ximo de um pacote que ele recebera', o
tempo de timeout que quer que o outro use, o nu'mero e tipo
de caracteres de enchimento que precisa, o caracter de fim
de arquivo que necessita para terminar cada pacote (se
precisar), o tipo de BLOCK-CHECK, os prefixos desejados
para os caracteres de controle, caracteres com o bit de
mais alta ordem ligados e caracteres de repetic,a~o. Cada
programa KERMIT tem seu pro'prio conjunto desses valores
default e normalmente voce^ na~o precisa se importar com
isso. Nada impede que voce^ use o comando SHOW para se
informar acerca desses valores; o comando SET existe
para permitir a voce^ altera'-los de forma a adapta'-los
a condic,o~es incomuns.
Os seguintes para^metros podem ser modificados:
BAUD-RATE prepara a velocidade da porta de comuni
cac,a~o
BLOCK-CHECK me'todo de detec,a~o de erro de transmissa~o
de um pacote
DEBUGGING arquivo de log ou de modo
DELAY quanto esperar antes de iniciar uma
transmissa~o
DUPLEX para conexa~o de terminal, FULL (eco remo
to) ou HALF (eco local)
ESCAPE caracter para conexa~o de terminal
FILE para para^metros de arquivo, como conver
sa~o de nomes e tamanho do byte
FLOW-CONTROL selec,a~o do me'todo de controle de fluxo,
como XON/XOFF
HANDSHAKE para permitir inversa~o de linhas HALF
DUPLEX
IBM prepara o ambiente local para conexa~o com
um host IBM (eco local, paridade marca)
INCOMPLETE o que fazer com um arquivo incompleto
LINE linha de terminal para uso em conexa~o de
terminal ou transfere^ncia de arquivos
PARITY bit de paridade a ser empregado
PORT para chaveamento de portas de comunicac,a~o
RECEIVE va'rios para^metros para uma recepc,a~o de
arquivos
RETRY quantas tentativas de retransmissa~o
de um pacote devera~o ser feitas antes de
desistir
SEND va'rios para^metros para uma transmissa~o de
arquivos
O comando DEFINE pode ser usado para compor "ma
cros" atrave's da combinac,a~o de comandos SET. Passamos a
descrever, em detalhes, o comando SET:
.cp3
SET BAUD-RATE
Prepara ou muda o BAUD-RATE (traduc,a~o aproximada:
velocidade de transmissa~o em bits por segundo) no
dispositivo selecionado de comunicac,a~o. A forma de espe
cificar o baud rate varia de sistema para sistema; na
maioria dos casos o pro'prio nu'mero (1200, 9600) e' digitado.
Os sistemas sem este comando geralmente esperam que a
velocidade da linha ja' esteja preparada, antes do KERMIT
entrar.
.cp3
SET BLOCK-CHECK
O KERMIT normalmente usa um cheque de bloco de
um caracter (CHECKSUM) em cada pacote. O transmissor do
pacote calcula este byte baseado nos outros caracteres
do pacote e o receptor o recalcula da mesma forma. Se
esses valores empatarem, o pacote e' aceito e a trans
missa~o continua; em caso contra'rio, o pacote e' re
jeitado e retransmitido.
O checksum na~o e', no entanto, um me'todo de dete
c,a~o de erros infali'vel. O cheque de bloco de um caracter
do KERMIT e', normalmente, uma quantidade de 6 bits (os 8
bits de mais baixa ordem da soma aritme'tica, dobrados
sobre si pro'prio). Com somente 6 bits de precisa~o, as chan
ces sa~o de uma em cada 2 elevado a` sexta potencia (1/64) de
um erro ocorrer e na~o ser detectado pelo checksum, assu
mindo-se que todos os erros sa~o distribui'dos igualmente.
Podemos diminuir a probabilidade de um erro passar
inco'lume, a custa de uma diminuic,a~o da eficie^ncia da
transmissa~o, usando o comando SET BLOCK-CHECK para sele
cionar me'todos de checagem de blocos mais rigorosos.
Note que todos os tre^s me'todos detetara~o qualquer erro de um
bit ou qualquer erro de um nu'mero impar de bits. As opc,o~es
sa~o:
1-CHARACTER-CHECKSUM Um checksum normal de um caracter de 6
bits
2-CHARACTER-CHECKSUM Um checksum de 2 caracteres, 12
bits. Reduz a probabilidade de um
erro passar para 1/4096 mas aumenta
de um caracter o pacote
3-CHARACTER-CRC Um cheque de redunda^ncia ci'clica de 3
caracteres, 16 bits, formato CCITT.
Ale'm de erros em qualquer nu'mero i'mpar
de bits, este me'todo detecta erros de
bit duplo, todas rajadas de erro com
16 ou menos e mais de 99.99% das raja
das maiores que isso.
Checksums de um u'nico caracter tem provado ser adequa
dos na pra'tica, muito mais efetivos do que possa parecer
numa primeira ana'lise, ja' que a distribuic,a~o de probabili
dade na~o e' a mesma para todos os erros e um checksum simples
serve para pegar os tipos de erros ti'picos em linhas de
telecomunicac,a~o. Outros me'todos so' devem ser exigidos
quando existe muito rui'do na conexa~o.
Observe que os cheques de bloco de 2 e 3 carac
teres na~o esta~o disponi'veis em todas as verso~es de
KERMIT; se o outro KERMIT na~o for capaz de executar os
cheques de bloco de maior precisa~o, a transfere^ncia automa
ticamente usara' o me'todo padra~o de caracter u'nico.
.cp5
SET DEBUG
Sintaxe: SET DEBUG [opc,o~es]
Registra o tra'fego dos pacotes, no seu terminal ou num
arquivo. As opc,o~es sa~o:
.cp2
STATES Mostra as transic,o~es de estado do KERMIT e nu'meros
de pacotes.
.cp2
PACKETS Mostra cada pacote que chega e que sai (comprimen
tos).
.cp4
LOG-FILE Grava no arquivo de log especificado as informac,o~es
selecionadas (estados ou pacotes). Se o arquivo
de log na~o foi especificado, usa o terminal, se
local.
.cp3
OFF Na~o mostra informac,o~es de depurac,a~o (este e' o
default). Se a depurac,a~o estava ativa, encerra-a
e fecha qualquer arquivo de log.
.cp5
SET DELAY
Sintaxe: SET DELAY nu'mero
Especifica quantos segundos deve esperar antes de
transmitir o primeiro pacote depois de um comando SEND.
Use quando remoto e mandando arquivos para seu KERMIT local.
Isto lhe da' tempo para escapar de volta e emitir o comando
RECEIVE. O atraso normal e' de 5 segundos. Em modo local ou
em modo servidor, o KERMIT na~o espera antes de comec,ar a
mandar o primeiro pacote.
.cp5
SET DUPLEX
Sintaxe: SET DUPLEX palavra-chave
Para uso quando conectado a um sistema remoto. As
palavras-chave possi'veis sa~o FULL e HALF. FULL significa
que o sistema remoto ecoa os caracteres que voce^ tecla;
HALF, o local. O default e' FULL e e' usado pela maioria
dos hosts. HALF e' necessa'rio ao se conectar a sistemas
IBM. "Half duplex" tambe'm e' chamado "eco local".
.cp5
SET ESCAPE
Sintaxe: SET ESCAPE caracter
Especifica ou muda o caracter que se quer usar para
"escapar" de uma conexa~o remota de volta para o KERMIT
local. Normalmente e' um caracter que na~o se espera usar no
sistema remoto, talvez um caracter de controle como ^\, ^],
^^ ou ^_. A maioria das verso~es de KERMIT usa uma dessas
como default. Depois que se tecla o caracter de escape,
deve-se teclar um argumento de uma letra, como "C",
para encerrar a conexa~o. Os argumentos sa~o os relacio
nados acima, sob a descric,a~o do comando CONNECT.
.cp5
SET FILE
Sintaxe: SET FILE palavras-chave/para^metros
Estabelece os para^metros relacionados com arquivos.
Dependendo das caracteri'sticas do sistema, pode ser neces
sa'rio dizer ao KERMIT como acessar arquivos do disco ou
como armazenar arquivos que cheguem. Os para^metros que
realmente se especificam atrave's deste comando variara~o de
sistema para sistema e sempre se deve consul
tar a documentac,a~o correspondente ao seu KERMIT em
particular. Alguns exemplos seriam tamanho do byte (ar
quitetura PDP-10), comprimento do registro ou tamanho do
bloco (sistemas orientados para registros), me'todos de
detec,a~o de fim de arquivo (microcomputadores).
Este pode ser um comando importanti'ssimo se voce^
tentar transferir arquivos bina'rios mas e' desnecessa'rio,
normalmente, para arquivos de texto.
.cp5
SET FLOW-CONTROL
Sintaxe: SET FLOW-CONTROL opc,a~o
Para a comunicac,a~o com sistemas Full Duplex. Para
o protocolo KERMIT, na~o e' necessa'rio controle de fluxo a
ni'vel de sistema mas seu uso pode ser de alguma valia se o
mesmo me'todo for disponi'vel nos dois sistemas. O tipo de
controle de fluxo mais comum em sistemas full duplex e' o
XON/XOFF.
.cp5
SET HANDSHAKE
Sintaxe: SET HANDSHAKE opc,a~o
Para comunicac,a~o com sistemas half duplex, deixa que
se especifique o caracter de inversa~o de linha enviado pelo
host em half duplex para indicar que ele terminou de
transmitir e garantir que esta' pronto para receber. Quando o
handshake e' ativado, o KERMIT so' enviara' um pacote quando
o host em half duplex houver mandado o caracter especificado
(ou acontecer um timeout). As opc,o~es sa~o:
NONE Sem handshake;
(desfaz o efeito de qualquer SET precedente)
XOFF CONTROL-S
XON CONTROL-Q
BELL CONTROL-G
CR CONTROL-M (retorno de carro)
LF CONTROL-J (line feed)
ESC CONTROL-[ (escape)
.cp5
SET INCOMPLETE
Sintaxe: SET INCOMPLETE opc,a~o
Especifica o que fazer quando uma transfere^ncia de
arquivo falhar antes de terminar. As opc,o~es sa~o DISCARD
(default) e KEEP. Quando se escolhe KEEP e a trans
fere^ncia na~o se completar, pode-se guardar a parte que se
chegou a receber.
.cp5
SET LINE
Sintaxe: SET LINE [designac,a~o de terminal]
Especifica a linha de terminal a ser usada para
transfere^ncia ou conexa~o. Este comando e' encontrado nos
KERMIT's de sistemas de grande porte, que normalmente
rodam em modo remoto, usando seus pro'prios controladores
de terminal para a transfere^ncia de arquivos. Ao se
especificar uma linha separada coloca-se o programa em
modo local. Se linha alguma for especificada, volta ao
controlador de terminais do sistema (de volta ao modo
remoto).
.cp5
SET PORT
Sintaxe: SET PORT designador-de-terminal
Especifica a porta de comunicac,a~o para transfere^ncia de
arquivos ou conexa~o. Este comando e' encontrado em KERMIT's
de microcomputadores que rodam em modo local. Na~o muda o
status remoto/local mas simplesmente seleciona uma porta
diferente para operac,a~o local.
.cp5
SET PARITY
Sintaxe: SET PARITY palavra-chave
Paridade e' uma te'cnica empregada pelos equipamentos de
comunicac,a~o para detetar erros numa base caracter-por-carac
ter; o oitavo bit de cada caracter age como um cheque para
os outros sete bits. O KERMIT usa cheque de bloco para
detetar erros numa base pacote-por-pacote e na~o usa paridade
para caracteres. Entretanto, em alguns sistemas onde o
KERMIT tambe'm roda ou em equipamentos atrave's dos quais
esses sistemas se comunicam, a paridade de caracter pode ser
usada. Se o KERMIT na~o souber disso, os dados que chegarem
tera~o seus bits modificados e o cheque de bloco parecera'
errado e os pacotes sera~o rejeitados.
Se a paridade estiver sendo utilizada numa linha, ambos
KERMIT's tem que ser informados, de forma que a paridade
desejada seja acrescentada aos caracteres que saiam e reti
radas dos que cheguem. Este comando (SET PARITY) deve ser
usado na comunicac,a~o com hosts que exigem paridade de
caracteres (sistemas IBM sa~o exemplos ti'picos) ou
atrave's de equipamentos ou redes (como a GTE TELENET, a
RCD/TB, ou o CIRANDA~O) que incluem paridade aos carac
teres que passam por eles. A paridade especificada e' usada
tanto para conexa~o de terminal (CONNECT) quanto para trans
fere^ncia de arquivos (SEND, RECEIVE, GET).
As alternativas para a escolha da paridade sa~o:
NONE oito bits de dados, sem paridade (default)
MARK sete bits de dados, com bit de paridade ligado
SPACE sete bits de dados, com bit de paridade desligado
EVEN sete bits de dados, com bit de paridade ligado de
forma a deixar a soma de todos eles um nu'mero par
ODD sete bits de dados, com bit de paridade ligado de
forma a deixar a soma de todos eles um nu'mero i'mpar
NONE significa que nenhum processamento de paridade
sera' feito e o oitavo bit de cada caracter pode ser usado
para dados na transfere^ncia de arquivos bina'rios.
Se informarmos ODD, EVEN, MARK ou SPACE, verso~es avan
c,adas do KERMIT exigira~o que arquivos bina'rios sejam trans
feridos usando prefixac,a~o do oitavo bit. Se o KERMIT do
outro lado sabe como se faz isto (e' uma facilidade opcio
nal do protocolo KERMIT e nem todas as implementac,o~es de
KERMIT a tem), arquivos bina'rios podera~o ser transferidos
com sucesso. Se for especificado NONE, a prefixac,a~o na~o sera'
exigida.
.cp5
SET SEND
Sintaxe: SET SEND para^metro
CARACTER DE FIM DE LINHA
O caracter ASCII a ser usado como terminador de linha
nos pacotes, se algum for exigido, sendo o RETURN o
default. Este comando so' e' necessa'rio para sistemas que
requeiram um terminador de linha diferente do RETURN.
NU'MERO COM O COMPRIMENTO DO PACOTE
Comprimento ma'ximo a ser transmitido; entre 10 e
94 (decimal). Encurtar os pacotes pode facilitar suas passa
gens atrave's de linhas com muito rui'do. Aumenta'-los diminui
o tempo de transmissa~o necessa'rio para uma transmissa~o de
arquivos numa linha limpa.
NU'MERO PARA TIMEOUT
Quantos segundos o KERMIT esperara' por um pacote antes
de tentar de novo.
NU'MERO (DECIMAL FRACIONA'RIO) DE PAUSA
Quantos segundos o KERMIT esperara' antes de enviar
cada pacote. Sendo um valor diferente de zero, alguns
sistemas particularmente lentos tera~o tempo suficiente para
consolidar seus pro'prios pacotes antes que um pro'ximo che
gue. Normalmente na~o existe pausa entre pacotes.
NU'MERO DE PREENCHIMENTO, CARACTER DE PREENCHIMENTO
Quantos caracteres de preenchimento devem ser envia
dos antes de um pacote, se o outro lado necessita disto e
qual caracter usar. O default e' sem preenchimento e 0 (NUL)
como caracter de preenchimento.
CARACTER DE CITAC,A~O
Qual sera' o caracter imprimi'vel a ser usado para
simbolizar caracteres de controle. O default e' "#"
(43). Na~o ha' raza~o para alterar isto.
CARACTER DE INI'CIO DE PACOTE
O caracter de ini'cio de pacote e' o u'nico caracter de
controle usado "nu" pelo protocolo KERMIT. Por default
e' um CONTROL-A. Se o aparecimento de um CONTROL-A nu
causar problemas para o seu hardware ou software em particu
lar, use este comando para selecionar outro caracter para
indicar o ini'cio de um pacote. O comando reci'proco deve
ser dado para o KERMIT na outra ponta (SET RECEIVE inicio-
de-pacote), desde que ele tenha tal comando.
.cp5
SET RECEIVE
Sintaxe: SET RECEIVE para^metro
Para^metros para requisitar ou esperar por pacotes que
chegam:
CARACTER DE FIM DE LINHA
Retorno-de-carro (13) e' o default.
NU'MERO COM O COMPRIMENTO DO PACOTE
Comprimento ma'ximo do pacote que o outro lado
transmitira', em nu'mero decimal inteiro, entre 10 e 94.
NU'MERO PARA TIMEOUT
Quantos segundos o outro KERMIT deve esperar por um
pacote.
NU'MERO (DECIMAL FRACIONA'RIO) DE PAUSA
Quantos segundos a esperar antes de reconhecer o
recebimento do pacote. Um valor diferente de zero diminui
ra' a taxa em que os pacotes chegam, o que pode ser neces
sa'rio para sistemas "sensi'veis" que na~o conseguem aceitar
entrada a altas taxas.
NU'MERO DE PREENCHIMENTO, CARACTER DE PREENCHIMENTO
Quantos caracteres de preenchimento exigir antes de
receber cada pacote, e qual caracter e'. Na~o se sabe de algum
KERMIT que necessite o preenchimento e se algum assim e',
pedira' isto no caso de voce^ na~o o fizer. Este comando so'
seria necessa'rio sob condic,o~es muito incomuns.
CARACTER DE CITAC,A~O
Qual sera' o caracter imprimi'vel a ser usado para
simbolizar caracteres de controle. O default e' "#"
(43). Na~o ha' raza~o para alterar isto.
CARACTER DE INI'CIO DE PACOTE
O caracter de controle para marcar o ini'cio dos pacotes
que chegam. Normalmente SOH (CONTROL-A, ASCII 1). Veja
SET SEND START-OF-PACKET, acima.
.cp5
SET RETRY
Sintaxe: SET RETRY opc,a~o nu'mero
Informa o nu'mero ma'ximo de tentativas permitido para:
INITIAL-CONNECTION
Quantas vezes tentar a conexa~o antes de desistir,
normalmente algo em torno de 15.
PACKETS
Quantas vezes tentar transmitir um pacote em particular
antes de desistir. Se uma linha contiver muito rui'do,
podemos aumentar este nu'mero.
.cp5
4.18. DEFINE
Sintaxe: DEFINE nome-da-macro [para^metros]
Define um "macro-SET" para permitir uma associac,a~o
conveniente de um ou mais para^metros do SET com uma
palavra chave mnemo^nica de sua escolha. Os para^metros do
SET sa~o uma lista contendo uma ou mais das opc,o~es do
comando SET, separadas por vi'rgulas. Se voce^ usa o KERMIT
para se comunicar com diferentes tipos de sistema, pode
preparar uma macro para cada um, por exemplo:
DEFINE IBM PARITY MARK, DUPLEX HALF, HANDSHAKE XON,
SEND PACKET LENGTH 80
DEFINE UNIX PARITY NONE, DUPLEX FULL, HANDSHAKE NONE
DEFINE TELENET PARITY MARK, RECEIVE TIMEOUT 20
Voce^ pode, enta~o, teclar "SET IBM", "SET UNIT" ou "SET
TELENET" para preparar todos os para^metros com um u'nico
comando. E' conveniente incluir estas definic,o~es no seu
arquivo KERMIT.INI.
Outro emprego u'til desta facilidade e' no sentido de
se preparar adaptac,o~es ra'pidas a diferentes condic,o~es de
rui'do de linha:
DEFINE LIMPA BLOCK-CHECK 1, SEND PACKET-LENGTH 94
DEFINE SUJA BLOCK-CHECK 2, SEND PACKET-LENGTH 60,
RETRY PACKET 10
DEFINE SUJONA BLOCK 3, SEND PACKET 40, RETRY PACKET 20
Voce^ pode redefinir uma macro existente da mesma
forma que a definiu. Pode, tambe'm, "des-definir" uma
macro teclando um comando DEFINE vazio para ela, por
exemplo:
DEFINE IBM
Voce^ tambe'm pode listar todas suas macros e suas
definic,o~es com o comando SHOW MACROS.
.cp5
4.19. SHOW
Sintaxe: SHOW [opc,a~o]
O comando SHOW mostra os valores dos para^metros
aciona'veis pelo comando SET. Se uma opc,a~o em particular
na~o for pedida, uma relac,a~o completa sera' dada.
.cp3
4.20. STATISTICS
Da' estati'sticas acerca da mais recente transfere^ncia,
como o total de caracteres transmitidos, o baud rate efeti
vo etc.
.cp5
4.21. LOG
Sintaxe: LOG [opc,a~o] [especarq]
Grava a entidade escolhida (opc,a~o) ao arquivo de log
especificado.
.cp6
TRANSACTIONS Direciona o KERMIT no sentido de gravar
transac,o~es, como arquivos bem transmi
tidos ou recebidos ou aqueles que na~o
foram ou chegaram bem. Muito u'til em
transac,o~es longas, com transfere^ncias de
mu'ltiplos arquivos
SESSION Cria uma transcric,a~o de uma sessa~o de
conexa~o, quando rodando um KERMIT local
conectado a um sistema remoto num arquivo
especificado, que sera' automaticamente
fechado se a conexa~o for encerrada.
Em algumas implementac,o~es este servic,o
pode ser desativado ou ativado teclando o
caracter de escape seguido por "Q" (QUIT
LOGGING) ou "R" (RESUME LOGGING) ou
comandos similares de um u'nico carac
ter. E' muito u'til para registrar o dia'
logo com um sistema interativo e para
"capturar" arquivos de sistemas que na~o
tem KERMIT. Na~o se pode garantir que
arquivos capturados chegara~o completos
ou certos, uma vez que na~o e' feita
qualquer checagem de erros.
.cp5
4.22. TRANSMIT
Sintaxe: TRANSMIT [especarq]
Manda o conteu'do do arquivo especificado para o outro
sistema, sem protocolo, pacote, checksum nem retransmis
so~es. Este comando e' u'til para mandar seque^ncia de
conexa~o e/ou identificac,a~o padro~es e para transmitir
arquivos para sistemas que na~o tem KERMIT, como se estive's
semos teclando, na hora, tais textos.
.pa
.he Implementac,o~es do KERMIT
5. Implementac,o~es do KERMIT
O KERMIT tem sido escrito para uma grande variedade
de sistemas, independentemente de seu porte. Na~o foi escrito
numa linguagem porta'vel: cada implementac,a~o foi desenvolvida
na linguagem que mais conviesse para cada ma'quina em parti
cular. A especificac,a~o, dada no Manual do Protocolo KERMIT,
e' bem geral e permite implementac,a~o em qualquer ma'quina.
A seguir temos uma pequena tabela, resumindo as
implementac,o~es de KERMIT conhecidas, no momento desta edi
c,a~o. Esta lista cresce sempre e podera' estar completamente
desatualizada no momento em que voce^ a ler.
MA'QUINA SIST.OPERACIONAL LINGUAGEM
DECSYSTEM-10 TOPS-10 MACRO-10
DECSYSTEM-20 TOPS-10 MACRO-20
Se'rie IBM/370 VM/CMS, MTS ASSEMBLER/370, Pascal
CDC CYBER 170 NOS FORTRAN-77
UNIVAC-1100 EXEC EXEC ASSEMBLER
HONEYWELL MULTICS PL/I
PRIME PRIMOS PL/I
VAX-11 VMS BLISS-32, MACRO-32
PDP-11 RT-11 OMSI Pascal
PDP-11 RSX-11, RSTS/E MACRO-11
VAX, PDP-11, SUN etc. UNIX C
DATA GENERAL AOS RATFOR
HP3000, UNIVAC etc. SOFTWARE TOOLS RATFOR
TERAK, HP-98XX UCSD P-SYSTEM UCSD Pascal, MACRO-11
8080, 8085 ou Z80 CP/M-80 DR ASM
8086, 8088 PC DOS, MS DOS MS MASM-86
8086, 8088 CP/M-86 CR ASM86
Apple II 6502 Apple DOS DEC-10/20 Cross
Atari Home Computer DOS ACTION!
Mesmo esta e' uma lista parcial. Alguns sistemas
maiores (como o VAX/VMS) tem mu'ltiplas implementac,o~es; ou
tros, menores, foram omitidos.
A versa~o 8080 roda no DEC VT180, no DECMATE II
(CP/M), no HEATH/ZENITH-89 & 100, no SUPERBRAIN da
INTERTEC, no Apple II com carta~o de Z80 (SOFTCARD), no
TRS-80 II (CP/M), no Osborne, no KAYPRO, no VETOR
GRAPHICS, no ZORBA da TELCON e outros. A versa~o 8086 MS
DOS roda no IBM-PC e assemelhados (como o porta'til da
COMPAC), no HEATH/ZENITH-100, no HP-150, no TANDY 2000, no
Chameleon da SEEQUA e no Victor-9000. A versa~o 8086 CP/M-
86 roda no Rainbow-100 da DEC e no APC da NEC.
O resto deste Manual e' voltado a descric,o~es de
implementac,o~es selecionadas de KERMIT. Se a descric,a~o da
sua versa~o de KERMIT na~o aparece, procure ver se em
algum C.P.D. ao qual voce^ tenha acesso e tenha o KERMIT
implementado, existe alguma documentac,a~o disponi'vel. Mesmo
que sua versa~o esteja descrita aqui, informe-se acerca de
verso~es mais recentes (do programa e da documentac,a~o).
.pa
.he KERMIT para IBM VM/CMS
6. KERMIT para IBM VM/CMS
Autor: Daphne Tzoar, Columbia University
Versa~o: (na~o numerada)
Data: fevereiro de 1983
Escrito em linguagem ASSEMBLY/370 para rodar sob
VM/CMS em sistemas IBM, se'ries /370 (SYSTEM/370, 303X, 43XX,
308X,...). Estes sa~o sistemas half duplex: a linha de
comunicac,a~o tem que "virar" antes que qualquer dado possa
ser transmitido para ela. O fato de um pacote ter sido
recebido de um sistema IBM na~o e' garantia que ele esta'
pronto para uma resposta. Assim qualquer KERMIT falando
com tais sistemas tem que esperar pelo caracter de
virada de linha (XON) antes de transmitir o pro'ximo carac
ter.
Os sistemas IBM falam com seus terminais atrave's de
um front-end (IBM 3704/5, 3725, COMTEN 3670 etc.).
Estes front-end geralmente insistem em usar o oitavo bit
de cada caracter para paridade. Isto significa que ar
quivos bina'rios (arquivos que conte'm mais que somente
letras, di'gitos, pontuac,a~o e controles de impressora) na~o
podem ser transmitidos ou recebidos corretamente por es
ses sistemas com o KERMIT (versa~o 1 do protocolo).
O sistema IBM sob VM/CMS e' inapto a interromper uma
leitura de seu console. Isto significa que a versa~o IBM
do KERMIT na~o pode sair por tempo (timeout). A u'nica forma
de "timeout" no KERMIT-CMS e' do outro lado: teclando-se
return para o micro faz-se com que ele retransmita seu
u'ltimo pacote ou usando-se o KERMIT-20, no DEC-20, que prove
um timeout automa'tico. Porisso o KERMIT-CMS espera 30
segundos antes de mandar seu primeiro pacote, ao transmitir
arquivos do VM/CMS. Isto da' ao usua'rio tempo suficiente
para voltar ao KERMIT local e emitir o comando RECEIVE. De
outra maneira um deadlock de protocolo aparecera',
exigindo intervenc,a~o manual do usua'rio.
Mas na~o e' so': o VM/CMS armazena arquivos como regis
tros, ao inve's de uma cadeia de bytes. O KERMIT-CMS tem que
se preocupar em montar as linhas que chegam em registros,
tirando os returns e os line-feeds e, para transmitir
cada registro, tem que tirar os caracteres de pre
enchimento e inserir os returns e line-feeds, formando li
nhas.
A especificac,a~o de arquivos no VM/CMS e' na forma
FILENAME FILETYPE FILEMODE (abreviadamente FN FT FM)
FM e' equivalente a` especificac,a~o de dispositivo num
DEC ou num micro (FN FT FM seria FM:FN.FT na sintaxe CP/M,
por exemplo). FILENAME e FILEMODE podem ter, cada um, no
ma'ximo, 8 caracteres e FILEMODE 2. Quando FM e' omitido de
uma especificac,a~o de arquivo, e' assumido o disco do pro'
prio usua'rio. O KERMIT-CMS transmite somente FILENAME e
FILETYPE, convertendo o espac,o entre eles em um ponto, para
compatibilidade com a maioria dos outros sistemas opera
cionais. A seguir, os comandos do KERMIT-CMS.
.cp3
6.1. SEND FN FT [FM]
Transmite o(s) arquivo(s) especificado(s), usando "*"
ou "%" como caracteres coringa ("*" vale qualquer nu'mero de
caracteres e "%" somente um). O KERMIT-CMS assume que o
arquivo esta' no disco "A" e prepara o FILEMODE como "A1".
Se, todavia, o arquivo estiver em outro disco, o FM tem
que ser explicitado. Repare que se voce^ usar "*" para o
FILEMODE, o KERMIT-CMS transmitira' somente o primeiro arqui
vo que servir. Exemplos: o comando SEND CEN SPSS transmi
tira' CEN SPSS A1; para transmitir um arquivo com este
mesmo nome que esteja no disco "B", voce^ tem que mandar SEND
CEN SPSS B; SEND * FORTRAN mandara' todos os arquivos
FORTRAN de seu disco "A"; SEND ABC% EXEC enviara' todos os
arquivos EXEC de seu disco "A" cujos FILENAME's tenham 4
caracteres e que comecem com "ABC"; se voce^ tem o arquivo
PLOT SAS no disco "A" e no disco "B", o comando SEND PLOT
SAS * transmitira' SEND PLOT SAS A1.
.cp3
6.2. RECEIVE [FN FT [FM]]
Recebe o(s) arquivo(s) transmitido(s) pelo outro
KERMIT. Se na~o for inclui'da uma especificac,a~o de arquivo,
o KERMIT-CMS usara' o(s) nome(s) fornecido(s) pelo outro
KERMIT. Use a especificac,a~o de arquivo para indicar um
FILENAME diferente ou um disco que na~o o "A" (neste caso,
FILENAME e FILETYPE tem que ser informados, mesmo que da
forma = = FM). Exemplos: para receber arquivos aprovei
tando os nomes informados pelo KERMIT do outro lado, use
RECEIVE; para salvar um arquivo sob um nome diferente,
especifique RECEIVE ABC FORTRAN; para salvar o arquivo com o
mesmo nome mas em outro disco, entre RECEIVE ABC FORTRAN B
ou RECEIVE = = B.
.cp3
6.3. SET para^metro valor
Arma o para^metro no valor especificado. Os comandos SET
va'lidos sa~o:
RECFM opc,a~o
Denota o formato de registro a ser usado ao criar
um arquivo. So' sa~o permitidos registros Fixos e
Varia'veis (default). Basta a inicial de cada um.
LRECL nu'mero-decimal
Indica o tamanho lo'gico do registro. O default e' 80
e o ma'ximo permitido e' 256.
QUOTE nu'mero-decimal
E' o valor ASCII do caracter de prefixo de con
trole que voce^ quer usar no lugar do default "#".
Deve ser um u'nico caracter, imprimi'vel, cujo valor
decimal esteja compreendido no seguinte: 32-62, 96
ou 123-126.
END nu'mero-decimal
Diz o valor ASCII do caracter de fim de linha que
voce^ escolheu para transmitir. O default e' CR (13)
mas pode ser de 00 a 31.
PAC nu'mero-decimal
Permite ao usua'rio especificar o tamanho do pacote
que o micro deve usar para transmissa~o para o
KERMIT-CMS. A faixa e' 26-94, onde 94 e' o default.
.cp3
6.4. SHOW [para^metro]
Mostra o valor corrente de qualquer varia'vel que
possa ser alterada atrave's de um comando SET.
.cp3
6.5. STATUS
Devolve o status do u'ltimo comando do KERMIT-CMS.
Aparecera' "KERMIT COMPLETED SUCCESSFULLY" ou o
u'ltimo erro encontrado.
.cp3
6.6. CMS
Emite um comando CMS de dentro do KERMIT-CMS.
.cp3
6.7. CP
Emite um comando CP de dentro do KERMIT-CMS.
.cp3
6.8. HELP ou ?
Lista todos os comandos legais para o KERMIT-CMS.
.cp3
6.9. Fatos Relevantes
Esta e' uma lista de outros fatos relevantes acerca do
KERMIT-CMS:
1. Os comandos sa~o fornecidos com uma opc,a~o de au
xi'lio ou seja: um ponto de interrogac,a~o pode ser
teclado para se conseguir o formato apropriado
ou uma lista de opc,o~es. O ponto de interrogac,a~o
deve ser seguido de um return. O KERMIT-CMS
respondera' e recolocara' o prompt.
2. Ao receber um arquivo, se o formato do re
gistro for fixo, qualquer registro maior que o
LRECL sera' truncado. Se o formato do registro
for varia'vel, cada um podera' ter ate' 256
bytes. Para transmitir arquivos, o tamanho ma'ximo
de cada registro e' 256.
3. Antes de se conectar ao IBM de outros sistemas
(como os va'rios micros, DEC-20 etc.), voce^
deve SET IBM ON de forma a ativar os para^metros
"paridade", "eco" e "handshake" da forma que o IBM
gosta.
4. Note que "(" e ")" agem como separadores de pala
vras na linha de entrada. Assim, se voce^ tentar
armar o caracter de aspas para "(*" ou "*(",
somente o primeiro caracter sera' usado.
5. Uma vez que alguns KERMIT's na~o mandam um pacote
de erro quando abortam, nem sempre o KERMIT-
CMS pode saber que o micro parou de mandar suas
informac,o~es. Assim, quando voce^ se reconectar ao
IBM, o KERMIT-CMS podera', ainda, estar mandando
pacotes (eles aparecera~o na tela). O usua'rio
devera' teclar return ate' que o KERMIT-CMS tenha
mandado o nu'mero ma'ximo permitido de pacotes e
aborte. A mensagem de erro, no entanto, na~o indi
cara' que a comunicac,a~o parou porque o micro
abortou mas por na~o ter encontrado um caracter
de ini'cio de header.
6. O menor tamanho de pacote de transmissa~o que o
KERMIT-CMS permite e' de 26 bytes. Isto e' necessa'
rio para evitar um erro ao transmitir o nome do
arquivo ou um pacote de erro. Se o micro tenta
armar tal valor para menos de 26, o KERMIT-CMS se
auto-abortara' imediatamente com um erro de "BAD
SEND-PACKET SIZE".
7. Enquanto o front-end de comunicac,a~o do IBM
traduz todos os caracteres que chegam de termi
nais ASCII para EBCDIC, o KERMIT-CMS traduz os
dados que ele le^ de volta para ASCII (carac
teres na~o representa'veis em ASCII sa~o trocados
por um nulo). Na~o so' porque e' mais fa'cil trabalhar
com caracteres ASCII, como porque mante'm a
consiste^ncia com as diversas verso~es de KERMIT.
Quando os pacotes sa~o transmitidos para o micro, O
KERMIT-CMS converte todos os dados de volta para
EBCDIC. A tabela de conversa~o ASCII/EBCDIC pode
ser encontrada no Ape^ndice A.
8. Se uma comunicac,a~o fica maluca, voce^ pode se co
nectar de volta com o sistema CMS e teclar
return va'rias vezes (cada um obrigara' ao KERMIT-
CMS a retransmitir o pacote corrente, ate' estou
rar o limite de retransmisso~es) e voltar ao ni'vel
de comando "KERMIT-CMS".
.cp3
6.10. Mensagens do Sistema
O KERMIT-CMS da', tanto ao usua'rio quanto ao micro,
diversas mensagens de erro. Se a execuc,a~o precisar ser
terminada anormalmente transmite um pacote de erro para o
micro antes de terminar. Tal mensagem pode ser recupera
da atrave's do comando STATUS quando o KERMIT-CMS retorna
e da' seu prompt. Se o KERMIT-CMS se abortou por haver
excedido o nu'mero ma'ximo de tentativas (20 para pacotes
de inicializac,a~o e 5 para os outros), a mensagem de erro
mostrara' o erro mais recente (isto e': o u'ltimo NAK que o
KERMIT-CMS recebeu). Se a execuc,a~o parou porque o micro
desistiu, a mensagem de erro informara' isto ao usua'rio
mas sera' responsabilidade do micro apontar o problema.
As mensagens de erro do KERMIT-CMS sa~o as seguintes:
"BAD SEND-PACKET SIZE"
Mandada quando o micro tenta estabelecer que
seu buffer de recepc,a~o tem um comprimento
menor que 26 ou maior que 94. Tambe'm aparece
quando o KERMIT-CMS tenta mandar um pacote
maior que o ma'ximo especificado.
"BAD MESSAGE NUMBER" (nu'mero de mensagem inva'lido)
Esta e as mensagens a seguir mostram incon
siste^ncias num pacote KERMIT:
"ILLEGAL PACKET TYPE" (tipo inva'lido de pacote)
pode ser causada por comandos de servidor.
"UNRECOGNIZED STATE" (estado desconhecido)
"NO SOH ENCOUNTERED" (na~o veio SOH)
"BAD CHECKSUM" (caracter de paridade horizontal
na~o bate)
"BAD CHARACTER COUNT" (contador de caracteres
errado)
"MICRO SENT A NACK" (o micro transmitiu um NACK)
"LOST A PACKET" (perdi um pacote)
"MICRO ABORTED" (o micro saiu do ar) - quando o
micro pa'ra no meio de uma transfere^ncia.
"ILLEGAL FILE NAME" (nome inva'lido para arquivo) -
ao receber um nome de arquivo do micro, o
KERMIT-CMS espera que seja no formato "FN.FT".
Se FN, "." ou FT faltarem, o KERMIT-CMS
rejeitara' (NAK) o pacote. Se FN ou FT tive
rem mais de 8 caracteres cada, sera~o trunca
dos.
"INVALID LRECL"
O KERMIT-CMS abortara' se aparecer qualquer
erro ao tentar ler um arquivo a ser envia
do. Ele so' pode transmitir arquivos com
formatos de registros fixos ou varia'veis;
porisso os arquivos compactados ou do WILBUR
EDIT causam erros.
"PERMANENT I/O ERROR"
Esta mensagem indica que houve um erro perma
nente de I/O ao tentar ler um arquivo
existente. A execuc,a~o imediatamente e' abor
tada.
"DISK IS READ-ONLY"
Tentativa de gravac,a~o em um disco onde isto e'
proibido.
"RECFM CONFLICT"
Se surge um conflito de FN, o KERMIT-CMS
adicionara' o arquivo recebido ao existente,
desde que seus formatos sejam iguais; caso
contra'rio este erro implicara' numa parada.
"DISK IS FULL"
Refere-se a qualquer erro relativo a`s
limitac,o~es de espac,o de armazenamento no
disco do usua'rio. Normalmente quer dizer que o
disco esta' cheio mas o erro tambe'm pode sig
nificar que o nu'mero ma'ximo permitido de
arquivos foi alcanc,ado ou que a memo'ria vir
tual foi excedida.
"ERR ALLOCATING SPACE"
O KERMIT-CMS mante'm uma tabela de todos os
arquivos que foram transmitidos para o micro,
alocando espac,o extra se mais de 10 arquivos
sa~o mandados de uma vez. Se houver um erro ao
tentar alocar esse espac,o, o KERMIT-CMS se
abortara' com esta mensagem.
O trabalho no KERMIT para VM/CMS continua. As melhorias
preveem o seguinte:
1) Transpare^ncia de 8 bits para permitir que arquivos
bina'rios passem atrave's de front-ends que insistem em
usar o oitavo bit para paridade.
2) Capacidade de atuar como um servidor.
3) Capacidade de preparar outra linha e, com isto, ser
usado em modo local, conectado a outro host, remoto.
.pa
.he KERMIT para CP/M-80
7. KERMIT para CP/M-80
Autor: Bill Catchings, Columbia University, com
contribuic,o~es de Eiben (DEC), Nick Bush
(Stevens), John Bray (University of
Tennessee), Bruce Tanner (Cerritos College),
Greg Small (University of California at
Berkeley), Kimmo Laaksonen (Helskini
University of Technology) e muitos outros.
Linguagem: 8080 ASseMbler ou MAC80
Versa~o: 3.8
Data: fevereiro de 1984
Documentac,a~o: Frank da Cruz, Columbia University
7.1. Suma'rio do CP/M
O CP/M-80 (versa~o 2.2) tem somente 5 comandos embu
tidos e todos com arquivos; as outras func,o~es sa~o leva
das a cabo atrave's de chamados para rodar sob o CP/M.
As especificac,o~es de arquivo no CP/M sa~o da forma
D:NNN.TTT, onde
D: e' o dispositivo, normalmente disquetes (A:, B:,...).
Se omitido, o default e' o disquete conectado;
NNN e' o nome do arquivo, com, no ma'ximo, 8 caracteres;
.TTT e' o tipo de arquivo, com, no ma'ximo, 3 caracteres.
Nomes e tipos de arquivos podem conter letras, di'
gitos e alguns especiais, incluindo hi'fen, cifra~o e
sublinhado, na~o sendo o uso de espac,os.
O uso de caracteres coringa nas especificac,o~es de
nome e tipo de arquivo e' permitido (na~o em nome de
dispositivos), dentro de uma especificac,a~o de arquivo, um
"*" substitui todo um campo, um "?" substitui um caracter.
Exemplos disso podem ser:
"*.F??" especifica todos os arquivos cujos tipos
comecem com "F" e tenham 1, 2 ou 3 carac
teres;
"F?.*" especifica os arquivos cujos nomes comecem
com "F" e na~o tenham mais de 2 caracteres
mas qualquer tipo serve.
Os cinco comandos CP/M sa~o:
DIR [especificac,a~o]
Lista os nomes dos arquivos especificados. O
default e' "*.*".
Exemplo: "DIR B:*.FOR".
ERA especificac,a~o
Apaga os arquivos especificados.
REN novo=velho
Troca o nome de um arquivo de "velho" para
"novo".
SAVE nu'mero nome
Salva o nu'mero de blocos de memo'ria pedido
num arquivo especificado.
TYPE arquivo
Lista o arquivo especificado.
Os programas mais importantes sa~o:
STAT
Da' estati'sticas sobre uso de disco.
PIP
Programa de Interca^mbio entre Perife'ricos.
Copia arquivos.
Para maiores informac,o~es a respeito do CP/M e de seus
utilita'rios, consulte os manuais de seu micro ou um Manual
de CP/M.
.cp3
7.2. Descric,a~o do KERMIT-80
Existem atualmente implementac,o~es do KERMIT-80 para
o DEC VT180 DECMATE II, SUPERBRAIN (da INTERTEC),
HEATH/ZENITH 89 e Z100, Apple II com o carta~o de Z80,
Osborne, TRS-80 II com CP/M, Zorba (TELCOM), KAYPRO,
VECTOR GRAPHICS CP/M SYSTEM e outros. Existe tambe'm uma
versa~o "gene'rica" que deve rodar na maioria dos sistemas
compati'veis com o CP/M mas que tem menor performance.
Uma vez que o KERMIT-80 roda sozinho num micro,
tem sempre o controle da tela - e' sempre local. Assim,
sempre mante'm a tela atualizada com o nome do arquivo e
o nu'mero do pacote, transmitindo ou recebendo. O KERMIT-80
e' capaz de trabalhar com time-out sobre um pedido de
entrada (apesar de um pouco imprecisamente) e de "que
brar" deadlocks automaticamente. Na maioria dos casos isto
na~o e' importante, porque o KERMIT do outro lado provavel
mente sera' melhor do que ele em tratar time-outs. O trata
mento de time-out feito pelo KERMIT-80 e' um pouco "nebu
loso" porque depende da velocidade do processador Z80 e de
outros fatores que podem variar de um sistema para outro.
Apesar da capacidade de time-out, se uma transmissa~o
se prender (pode-se notar o fato quando se percebe que,
de repente, a atualizac,a~o das informac,o~es na tela deixaram
de ser feitas), pode-se teclar RETURN para forc,ar o micro
a fazer o que ele faria numa condic,a~o de time-out (trans
mitir um NAK do pacote esperado, causando uma retransmis
sa~o por parte do host na outra ponta da linha (ou, se o
micro estiver mandando, retransmitir o u'ltimo pacote).
Transfere^ncias micro-a-micro ou micro-a-IBM podem exigir
este tipo de intervenc,a~o manual.
Transfere^ncias de arquivos podem ser interrompidas de
va'rias formas:
CONTROL-C Devolvera' voce^ de volta para o ni'vel de
comando do KERMIT-80 imediatamente;
CONTROL-X Se enviando, encerra a transmissa~o e avisa ao
outro KERMIT para desprezar o que estava
recebendo; se houverem mais arquivos a serem
enviados, reinicia no pro'ximo. Se rece
bendo, pede ao outro KERMIT para parar de
transmitir este arquivo; se o outro entender
este pedido (nem todas as implementac,o~es de
KERMIT sa~o capazes disto), ele obedecera',
caso contra'rio o arquivo continuara' chegando;
de qualquer maneira o KERMIT remoto transmiti
ra' o pro'ximo arquivo, se houver.
CONTROL-Z Como o anterior, com a diferenc,a de abortar
completamente a transfere^ncia, mesmo de um
grupo.
RETURN's Se voce^ teclar RETURN repetidamente, o
KERMIT-80 tentara' retransmitir o pacote cor
rente ate' atingir seu nu'mero limite (algo
em torno de 16) e, enta~o, se nenhuma resposta
valida aparecer, entrar em ni'vel de comando.
.cp4
7.3. Comandos do KERMIT-80
O KERMIT-80 usa uma linguagem de comandos no estilo do
DECSYSTEM-20. palavra chave pode ser abreviada a seu mi'
nimo u'nico. Um "?" pode ser teclado para pedir um menu das
opc,o~es disponi'veis a qualquer ponto um comando. Um ESC pode
ser teclado a qualquer ponto num comando para a palavra
chave corrente ou o nome de um arquivo. Se ainda na~o tecla
dos caracteres suficientes para identificar o campo cor
rente forma u'nica, o KERMIT-80 fara' soar um BIP e
permitira' que se continue daquele ponto.
CONNECT
Estabelece uma conexa~o de "terminal virtual" a
qualquer host que possa ser conectado a sua porta
serial, isto e': passar o que for teclado para a
porta serial e mostrar na tela tudo o que vier
atrave's dela. Emula, tambe'm, um VT52 da DEC em termos
de controle de cursor, apagamento de tela etc.,
se "VT52-EMULATION" estiver acionada (ver abaixo), em
cujo caso tambe'm se deve avisar a seu host remoto que
se e' um VT52 (outras verso~es simulam outros terminais).
O caracter de escape difere de micro para micro;
quando se emite o comando CONNECT, o micro dara' uma
mensagem informando como voltar. Geralmente a seque^ncia
de escape e' um caracter dificilmente usado, como, por
exemplo, CONTROL-\, ou CONTROL-], seguido por um
"comando" de uma u'nica letra:
C encerra (close) a conexa~o, voltando a ni'vel de
comando;
S mostra o status da conexa~o, mantendo-a;
? mostra esta lista;
0 (zero) envia um NUL pela linha;
B manda um sinal de break; poucos sistemas tem esta
func,a~o;
^] (ou o que for) manda o pro'prio escape para o host.
SEND especarq
Transmite o(s) arquivo(s) especificado(s) para o
KERMIT remoto. A especarq pode conter caracteres
coringa.
RECEIVE
Recebe arquivo(s) do KERMIT remoto. Armazena-os
com os nomes fornecidos nos headers mandados pelo
KERMIT remoto. Se os nomes na~o sa~o legais, usa tantos
caracteres do nome fornecido quanto possi'vel (ver
abaixo descric,a~o de "SET FILE-WARNING"). Se houver
conflito e o FILE-WARNING estiver armado, avisa o
usua'rio e tenta criar um nome u'nico para o arquivo.
GET especarq
Quando o KERMIT-80 esta' falando com um servidor
KERMIT, podemos incluir uma especificac,a~o de arquivo
para pedir ao servidor para mandar arquivos, por exem
plo, "GET HLP:K*.HLP".
LOG especarq
Quando conectado a um host remoto, simulando um termi
nal dele, grava a sessa~o de terminal no arquivo
de disquete especificado. A funcionalidade disto
depende de algumas extenso~es na capacidade do host
remoto em controlar seu fluxo com XON/XOFF e na~o
garante uma transcric,a~o completa. Este arquivo e'
fechado quando a conexa~o e' desfeita ao se teclar a
seque^ncia de escape seguida pelo comando de caracter
u'nico "C".
TRANSMIT especarq
Transmite o arquivo especificado para o sistema do
outro lado da conexa~o como se estivesse sendo tecla
do no terminal, uma linha de cada vez. O protocolo
KERMIT na~o e' envolvido nisto. E' necessa'ria a confirma
c,a~o manual de cada linha. Isto e' muito u'til para
mandar arquivos para sistemas que na~o tem KERMIT
instalado. Durante a transmissa~o e' permitido que se
tecle o caracter de escape, seguido de um dos comandos
de um u'nico caracter descritos abaixo.
C cessa a transmissa~o.
R retransmite a linha anterior.
BYE
Quando se esta' falando com um servidor KERMIT remoto,
este comando derruba o servidor, emite um log-out
para o host, volta para o KERMIT-80 e sai dele,
deixando-nos em ni'vel de comando CP/M.
LOGOUT
Similar ao comando BYE mas nos deixa a ni'vel de comando
KERMIT-80.
FINISH
Como o comando LOGOUT mas na~o emite um log-out para o
host, deixando-nos, no entanto, a ni'vel de comando do
KERMIT-80. Comandos subsequentes de CONNECT nos coloca
ra~o de volta ao host, a ni'vel de comando do sistema.
SET para^metro [valor]
Arma o para^metro especificado com o valor dado.
Os para^metros possi'veis sa~o:
WARNING ON/OFF
descobrir um conflito entre o nome de um arquivo
que chega e um que ja' exista no disquete.
VT52-EMULATION ON/OFF
Quando ligado a um host remoto, controla se o
micro deve simular um VT52 ou rodar em modo
"nativo". Isto porque algumas implementac,o~es tem a
possibilidade de simular um outro terminal (VT-
100, VT180 ou ADM3A etc.)
LOCAL ECHO ON/OFF
Se o host remoto e' half-duplex, mude este para^me
tro para ON, de forma a ter ecoados, em sua tela,
os caracteres que voce^ digitar.
ESCAPE
Muda o caracter que sera' reconhecido, durante uma
conexa~o como terminal virtual. O KERMIT-80 pe
dira', enta~o, o novo caracter, que devera' ser
teclado literalmente.
BAUD
Muda o baud-rate da porta de comunicac,a~o. Este
comando so' funciona em certos sistemas e sua
operac,a~o real pode variar de um para outro. Tecle
"SET BAUD ?" e obedec,a.
PARITY
Arma a paridade dos caracteres saintes para NONE,
SPACE, MARK, EVEN ou ODD. Para caracteres
chegantes, se a paridade for NONE, o oitavo bit
e' mantido (como dado); caso contra'rio e' igno
rado e retirado. A paridade especificada vale
tanto para comunicac,a~o como terminal quanto
para transfere^ncia de arquivos.
IBM ON/OFF
Permite a transfere^ncia de arquivos DE e PARA
sistemas IBM. Faz com que o KERMIT-80 espere
pelo caracter de "virada" (turnaround) da linha,
XON, ignore a paridade de entrada, inclua a
paridade de sai'da apropriada e use eco local
durante a conexa~o.
BLOCK-CHECK-TYPE
As opc,o~es sa~o:
1-CHARACTER-CHECKSUM
Normal, default, checksum de 6 bits.
2-CHARACTER-CHECKSUM
Checksum de 16 bits.
3-CHARACTER-CHECKSUM
Cheque de redunda'ncia ci'clica no for
mato de 16 bits do CCITT, codificado
como tre^s caracteres.
As opc,o~es 2 e 3 somente devem ser usadas sob
extremas condic,o~es de rui'do na linha. Muitas
implementac,o~es de KERMIT nem as suportam.
FILE-MODE
Diz ao KERMIT o tipo de arquivo que esta'
sendo transmitido, de forma que ele pos
sa determinar corretamente o fim de arquivo.
"SET FILE BINARY" significa transmitir todo o
u'ltimo bloco; "SET FILE ASCII" e' usado para arqui
vos de texto (a transmissa~o termina quando for
encontrado o primeiro CONTROL-Z). Se um arquivo
de texto for transferido como bina'rio, alguns
caracteres estranhos (ate' 127 deles) podem apa
recer depois do fim de arquivo no sistema alvo.
DEFAULT-DISK
Permite que se mude o disco default como fonte ou
destino para transfere^ncias de arquivos. Emitir
este comando nos da' a chance de trocar o disco
especificado e torna'-lo disponi'vel para gravac,a~o.
O disco selecionado aparece no prompt do KERMIT-
80, por exemplo: "KERMIT-80 A:>".
PORT
Permite a troca entre diversas portas de comunica
c,a~o. Este comando na~o esta' em todos os sistemas.
PRINTER ON/OFF
Liga ou desliga a impressora como copiadora da
sessa~o. Na~o bufferiza nem cuida de prova'veis ca
racteres de controle.
DIR [especarq]
Prove^ a listagem do direto'rio dos arquivos especifica
dos. Se nenhum arquivo for especificado, todas as
entradas de direto'rio do disco default sera~o lista
das. Os tamanhos dos arquivos, em K's, sa~o in
clui'dos. Como o comando DIR do CP/M, permite que se
interrompa a listagem a qualquer momento, teclando
qualquer coisa. A listagem, mesmo se interrompida,
termina com uma informac,a~o do total de espac,o ainda
disponi'vel no disco.
ERA [especarq]
Funciona exatamente como o comando homo^nimo do CP/M.
7.4. O KERMIT-80 gene'rico
O "KERMIT-80 gene'rico" e' uma implementac,a~o do
KERMIT que, teoricamente, deve rodar em qualquer sistema
compati'vel com o CP/M-80 sem modificac,o~es ou, no ma'ximo,
pequenas modificac,o~es. Diferentemente de outras implementa
c,o~es de KERMIT, na~o tem manipulac,o~es de porta ou tela
dependente de sistema. Todo I/O e' feito com chamadas padra~o
do BIOS e redirecionamento de I/O usando o IOBYTE que, de
acordo com o "CP/M SYSTEM MANUAL" da Digital Research, e'
facilidade opcional de qualquer implementac,a~o de CP/M em
particular. Se o seu sistema na~o trabalha com IOBYTE, o
KERMIT gene'rico na~o vai funcionar; alia's, nem os sistemas
que usam o IOBYTE, o fazem de forma padronizada.
A raza~o pela qual nem todas as implementac,o~es do
KERMIT-80 serem gene'ricas e' que boa parte da velocidade e'
sacrificada ao fazer tudo atrave's do sistema operacional.
Enquanto uma implementac,a~o especi'fica do KERMIT-80 pode ser
capaz de operar a 300, 120, 2400, 4800, 9600 ou mesmo
19200 baud, o KERMIT gene'rico na~o conseguira' trabalhar, em
certos sistemas, em taxas que excedam 1200 baud.
O KERMIT gene'rico tambe'm difere das outras implementa
c,o~es de KERMIT na medida em que na~o consegue fazer um con
trole bonito da tela durante uma transfere^ncia de arquivos.
Simplesmente vai dando os nomes de arquivos, nu'meros de
pacotes e mensagens tela abaixo. Na~o faz emulac,a~o de
terminal age como um terminal "burro", dependendo das fun
c,o~es embutidas para fazer controle de cursor, independente
mente do programa KERMIT.
Note que os KERMIT para VT180 e DECMATE-II sa~o simples
adaptac,o~es do KERMIT gene'rico que fazem controle de tela
do tipo do VT100 (ANSI) durante uma transfere^ncia de
arquivo.
.cp3
7.5. Instalac,a~o
O KERMIT-80 foi originalmente escrito para o SUPERBRAIN
da INTERTEC, em assembly standard (ASM), sem macros ou
instruc,o~es avanc,adas, de modo a poder ser montado em
qualquer sistema CP/M. Foi, desde enta~o, modificado para
rodar em outros sistemas. O KERMIT-80 deve ser capaz de
rodar em qualquer micro baseado nos 8080, 8085 ou Z80, sob
CP/M, com um mi'nimo de alterac,o~es (ver abaixo).
Todas as verso~es do KERMIT-80 sa~o montadas a partir do
mesmo fonte, com as depende^ncias de sistema tratadas por
condicionais em tempo de montagem. As depende^ncias mais
importantes sa~o a emulac,a~o de terminal (quando conectado a
um host remoto) e o manuseio da tela, facilmente para
outros sistemas por estarem em tabelas. As rotinas de porta
sa~o melhor feitas, somente com chamadas ao BDOS mas alguns
sistemas na~o permitem isto, principalmente porque as rotinas
do BDOS tiram o bit de paridade durante o I/O na porta
(ele e' usado como dados ao se transferir arquivos bina'
rios). Ale'm disso, usando chamadas ao BDOS, na~o ha' jeito de
se fazer poll na porta serial: fica-se preso ate' que chegue
algum caracter.
As rotinas de I/O do KERMIT-80 devem checar o status
da porta e ir fazer outra coisa se na~o for necessario um
manuseio imediato da porta. Isto permite conexa~o de termi
nal virtual, interrupc,a~o pelo teclado das transmisso~es
trancadas etc. Em sistemas onde existe total implementac,a~o
de redirecionamento de I/O atrave's do IOBYTE, isto pode
ser feito ligando a definic,a~o do IOBYTE. Em outros,
no entanto, instruc,o~es de IN e OUT referenciando os regis
tradores da porta devem ser usados.
O KERMIT-80, versa~o 3.8 e superiores, incluem um
"relo'gio nebuloso" que torna disponi'vel um time-out a cada
intervalo entre 5 e 20 segundos (dependendo da velocidade
do processador e das rotinas do sistema operacional)
durante a espera das entradas esperadas que na~o aparecem na
porta. Neste caso, automaticamente, ocorre uma retrans
missa~o. De qualquer modo pode-se teclar RETURN durante
uma transmissa~o para simular um time-out, quando a trans
fere^ncia parecer parada.
.cp3
7.5.1. Baixando o KERMIT-80
Se voce^ ja' tem uma versa~o do KERMIT no seu micro e
quer instalar uma nova, use a velha para conseguir a nova.
Se for um arquivo do tipo .COM, pode usa'-lo; se for do tipo
.HEX, use o comando LOAD para produzir um arquivo .COM.
Se voce^ ainda na~o tem uma co'pia do KERMIT no seu micro
nem consegue uma emprestada e sua u'nica maneira de
conseguir uma e' se conectando ao host de um C.P.D. que
distribua o KERMIT, deve ler esta sec,a~o.
Existem va'rias formas de se pegar uma co'pia do
KERMIT de um host o seu micro. A mais fa'cil e' "baixar" o
arquivo .HEX pre'-compilado para a memo'ria de seu micro para,
depois, salva'-lo em disco. O procedimento a seguir, embora
longe de ser a` prova de erro humano, deve permitir a voce^
conseguir uma co'pia do KERMIT para o seu micro. Depende do
prompt seu host ou, pelo menos, do primeiro caracter do
prompt dele, sendo caracter que na~o aparec,a num arquivo
.HEX (os caracteres va'lidos em um arquivo .HEX sa~o os
di'gitos de 0 a 9, as letras maiu'sculas de A Z, ":", RETURN
e line-feed's). Assim que qualquer outro caracter apare
cer, a transfere^ncia termina. Se o seu host na~o manda um
prompt que se enquadre neste esquema, voce^ pode conseguir o
mesmo efeito incluindo "@" depois do fim do seu arquivo no
host, antes de transmiti'-lo. O programa abaixo procura por
um "@" (o prompt normal do DEC-20, hex 40). O DEC-10 usa
um ".", hex 2E.
Procure o arquivo .HEX apropriado na a'rea onde, no
host que voce^ tem acesso, eata~o os mo'dulos do KERMIT. O que
voce^ procura sera' algo do tipo CPMROBIN.HEX, CPMHEATH.HEX,
CPMOSBOR.HEX etc. Se na~o encontra'-lo, procure um do tipo
.ASM ou .M80 e construa um .HEX usando um cross-assembler
(abaixo uma explicac,a~o de como fazer isto num IBM ou DEC-20)
ou enta~o traga o pro'prio fonte para o seu micro e trabalhe
nele.
Conecte-se ao seu host usando um terminal ou uma
facilidade de emulac,a~o de terminal. Assegure-se que seu
host na~o tem seu terminal em "page mode". Por exemplo: no
DEC-20, de^ o comando
EXEC TERMINAL NO PAUSE END-OF-PAGE
Diga ao host para mostrar o arquivo em hexadecimal no
seu terminal. Por exemplo, no DEC, de^ o comando
TYPE KERMIT.HEX (sem um RETURN final)
Volte ao seu micro. Conecte-se a um disquete com
muito espac,o. Assegure-se que seu IOBYTE esta' com RDR: e
PUN: correspondendo a porta de I/O conectada ao DEC-20
(normalmente este sera' o caso). Rode o DDT e entre o
seguinte (os comenta'rios na~o devem ser teclados; esta~o
aqui somente para explicar a voce^ o que esta' acontecendo):
-IKERMIT.HEX ;arma o FCB para o arquivo KERMIT.HEX.
-A100 ;comec,a a entrar Assembly a partir de 100.
0100 LXI H,FFE ;onde colocar o arquivo hexa.
0103 SHLD 300 ;salva o enderec,o.
0106 MVI E,D ;pega um RETURN.
0108 MVI C,4 ;func,a~o de sai'da.
010A CALL 5
010D MVI C,3 ;func,a~o de entrada.
010F CALL 5
0112 ANI 7F ;desliga a paridade.
0114 CPI 40 ;e' o prompt do DEC-20?
0116 JZ 124 ;sim: temos todo o arquivo.
0119 LHLD 300 ;pega o pointer.
011C MOV M,A ;na~o: guarda o caracter.
011D INX H ;incrementa o pointer.
011E SHLD 300 ;salva o pointer.
0121 JMP 10D ;volta.
0124 MVI A,1A ;pega um CONTROL-Z.
0126 LHLD 300 ;pega o pointer.
0129 MOV M,A ;guarda o caracter.
012A SHLD 300 ;salva o pointer.
012D LXI H,1000;pointer no arquivo.
0130 SHLD 310 ;salva o pointer.
0133 MVI C,16 ;max file.
0135 LXI D,5C
0138 CALL 5
013B LHLD 310 ;pega o pointer do arquivo.
013E XCHG ;poe em DE.
013F MVI C,1A ;arma DMA.
0141 CALL 5
0144 MVI C,15 ;grava DMA no arquivo.
0146 LXI D,5C
0149 CALL 5
014C LHLD 310 ;pega pointer do arquivo.
014F LXI D,80 ;tamanho do DMA.
0152 DAD D ;ajusta o pointer do arquivo.
0153 SHLD 310 ;salva-o.
0156 LDA 301 ;pega o byte de mais alta ordem.
0159 CMP H ;passamos do fim?
015A JM 170 ;sim.
015D JZ 163 ;talvez...
0160 JMP 13B ;na~o.
0163 LDA 300 ;pega o byte de mais baixa ordem.
0166 CMP L ;passamos do fim??
0167 JM 170 ;sim!
016A JZ 170 ;sim!
016D JMP 13B ;ainda na~o.
0170 MVI C,10 ;close.
0172 LXI D,5C
0175 CALL 5
0178 RET
0179
-G100,179 ;executando o programa...
- ; ... re-boot.
Agora deve haver um arquivo KERMIT.HEX no seu dis
quete. Carregue-o usando o comando LOAD para produzir o
arquivo KERMIT.COM, que deve ser uma versa~o executa'vel do
KERMIT. Observe que os arquivos .HEX do CP/M tem
checksums em cada linha. Se houve qualquer erro de
transmissa~o durante o processo de baixa'-lo, o loader do
CP/M notara' um checksum inva'lido e dara' uma mensagem
tipo "ILLEGAL FORMAT". Se for este o seu caso, repita o
processo ou ajeite as coisas localmente.
VOCE^ DEVE TER, AGORA, UMA VERSA~O FUNCIONANDO DO KERMIT.
PARABE'NS!
---------
.cp3
7.5.2. Construindo um KERMIT
O fonte para o KERMIT-80 deve estar disponi'vel no
seu host. Foi escrito usando-se mneumo^nicos de Assembler
8080, porisso podera' ser montado na maioria dos 8080's e
Z80's usando-se o montador fornecido com o sistema opera
cional, armando as chaves de montagem desejadas como
explicado abaixo. Se voce^ na~o o tem, tente pega'-lo de seu
host atrave's do procedimento explicado acima.
Um cross-assembler fornecido roda no DEC-10 e DEC-20,
chamado MAC80, de Bruce Tanner (Cerritos College) e pode
ser usado para montar o KERMIT-80 como mostrado neste
exemplo (para TOPS-10):
Copie o fonte do KERMIT para o seu direto'rio como
KERMIT.M80. As regras para atribuic,a~o de nomes do TOPS-
10 tem que ser obedecidas. O fonte tem um nome do tipo
CPMK38.M80 (KERMIT para CP/M, versa~o 3.8).
Edite o KERMIT.M80 para armar a chave de montagem
condicional para a sua ma'quina. Elas esta~o bem no princi'pio
do arquivo. A que se refere a sua ma'quina deve ser armada
para TRUE e todas as outras para FALSE. As chaves atualmente
disponi'veis sa~o:
BRAIN SUPERBRAIN (INTERTEC)
HEATH H89 (HEATH/ZENITH)
Z100 Z100 (ZENITH), rodando sob CP/M
OSI OHIO SCIENTIFIC
ROBIN "ROBIN" (VT18X, da DEC)
DMII DECMATE II WORD PROCESSOR, sob CP/M
VECTOR VECTOR GRAPHICS
GENER qualquer sistema CP/M que implemente o IOBYTE
APPLE Apple II, com Z80-SOFTCARD e MICROMODEM II, da HAYES
TRS80 TRS-80 II, sob o CP/M 2.25 da LIFEBOAT
OSBRN1 OSBORNE-1
TELCON ZORBA (TELCON)
KPII KAYPRO-II
CPM3 CP/M Plus (3.0)
Leia o fonte. Podem haver novas chaves, inclui'das
depois que este manual ficou pronto.
A armac,a~o do "IBM-FLAG" depende da instalac,a~o. Na ver
sa~o distribui'da pela CUCCA, arma "half duplex", "line
handshaking" (usando CONTROL-Q como caracter de virada da
linha) liga o eco local e a paridade em MARK. Fac,a as alte
rac,o~es adequadas para o seu uso.
O default para os arquivos e' ASCII. Isto significa
que quando arquivos de texto sa~o transmitidos de
sistemas CP/M, na~o sera~o transmitidos caracteres extras
depois da marca de fim de arquivo mas os arquivos bina'rios
podem ser truncados erroneamente se o usua'rio na~o se lem
brar de armar (com o comando SET FILE) para bina'rio, de
modo a na~o perder dados ao transmitir este tipo de arqui
vo (mas arquivos de texto normalmente tera~o lixo depois do
fim, ainda no u'ltimo bloco).
Rode o MAC80:
@MAC80
*KERMIT,=KERMIT
*^Z
Como resultado, voce^ tera' KERMIT.HEX no seu direto'rio.
Use o KERMIT para transferir KERMIT.HEX para o
seu micro (ou baixe-o, usando o programa listado acima.
No micro, de^ o comando CP/M: "A>LOAD KERMIT" e tera',
pronto para ser executado, o KERMIT.COM.
.cp3
7.5.3 O KERMIT-80 gene'rico
Se o seu sistema CP/M implementa redirecionamento de
I/O atrave's do mecanismo (opcional) de IOBYTE, provavel
mente voce^ podera' rodar o KERMIT gene'rico nele, com
poucas ou nenhuma alterac,a~o. O IOBYTE standard do CP/M e'
armado como descrito abaixo.
.cp9
Associac,o~es feitas atrave's do I/O Byte
(4 campos de 2 bits, enderec,o 3)
bits 6 e 7 (LIST)
----------
0 TTY:
1 CRT:
2 LPT:
3 UL1:
.cp6
bits 4 e 5 (PUNCH)
----------
0 TTY:
1 PUN:
2 UP1:
3 UP2:
.cp6
bits 2 e 3 (READER)
----------
0 TTY:
1 RDR:
2 UR1:
3 UR2:
.cp6
bits 0 e 1 (CONSOLE)
----------
0 TTY:
1 CRT:
2 BAT: (use reader=input, list=output)
3 UC1:
(Aqui, o bit 0 e' o menos significativo, "direita".)
O redirecionamento de I/O e' conseguido trocando o
IOBYTE entre dois valores: "BATCH I/O" e "NORMAL I/O". No
modo "normal", o teclado e' definido como sendo o console;
no modo "batch", o console sera' a porta serial. Este
chaveamento e' necessa'rio porque o console e' o u'nico
dispositivo que pode ser testado para se saber se algum
input esta' disponi'vel mas o KERMIT deve mudar de um para
outro (teclado e porta serial) para procurar inputs. Aqui
esta~o as definic,o~es de modo de I/O default e batch usadas
no KERMIT-80 gene'rico "padra~o":
DEFIO EQU 095H ;I/O BYTE CON=CRT, LIST=LPT, READER=RDR
BATIO EQU 056 ;I/O BYTE CON=BAT, LIST=CRT, READER=RDR
Outros sistemas podem ter outros dispositivos lo'gicos
que apontem para a porta serial. Em tais casos voce^
precisara' redefinir tais si'mbolos para que apontem para
os dispositivos certos e re-montar o programa (com a
chave de montagem GENER armada em TRUE, todas as outras em
FALSE).
.pa
.he O conjunto de caracteres ASCII
Ape^ndice A: O conjunto de caracteres ASCII (ANSI X3.4-1968)
Existem 128 caracteres no ASCII (American national
Standard Code for Information Interchange). Os caracteres
esta~o listados em ordem dos valores ASCII; as colunas
aparecem indicando:
ASCII (DEC/OCT/HEX) com as representac,o~es decimal, octal
e hexadecimal;
EBCDIC HEX equivalente EBCDIC para a conversa~o do KERMIT
CHAR nome ou representac,a~o gra'fica do caracter
OBS. descric,a~o do caracter
O primeiro grupo consiste de caracteres de
controle, na~o imprimi'veis:
.....ASCII..... EBCDIC
DEC OCT HEX HEX CHAR OBS.
000 000 00 00 NUL ^@, NULL, IDLE
001 001 01 01 SOH ^A, START OF HEADING
002 002 02 02 STX ^B, START OF TEXT
003 003 03 03 ETX ^C, END OF TEXT
004 004 04 37 EDT ^D, END OF TRANSM.
005 005 05 2D ENQ ^E, ENQUIRY
006 006 06 2E ACK ^F, ACKNOWLEDGE
007 007 07 2F BEL ^G, BELL
008 010 08 16 BS ^H, BACK-SPACE
009 011 09 05 HT ^I, HORIZONTAL TAB
010 012 0A 25 LF ^J, LINE-FEED
011 013 0B 0B VT ^K, VERTICAL TAB
012 014 0C 0C FF ^L, FORM-FEED
013 015 0D 0D CR ^M, CARRIAGE RETURN
014 016 0E 0E SO ^N, SHIFT-OUT
015 017 0F 0F SI ^O, SHIFT-IN
016 020 10 10 DLE ^P, DATA LINK ESCAPE
017 021 11 11 DC1 ^Q, DEV. CNTRL 1,XON
018 022 12 12 DC2 ^R, DEV. CNTRL 2
019 023 13 13 DC3 ^S, DEV. CNTRL 3,XOF
020 024 14 3C DC4 ^T, DEV. CNTRL 4
021 025 15 3D NAK ^U, NEGATIVE ACK.
022 026 16 32 SYN ^V, SYNCHRONOUS IDLE
023 027 17 26 ETB ^W, END OF TX BLOCK
024 030 18 18 CAN ^X, CANCEL
025 031 19 19 EM ^Y, END OF MEDIUM
026 032 1A 3F SUB ^Z, SUBSTITUTE
027 033 1B 27 ESC ^[, ESCAPE, PREFIX
028 034 1C 1C FS ^\, FILE SEPARATOR
029 035 1D 1D GS ^], GROUP SEPARATOR
030 036 1E 1E RS ^^, RECORD SEPARATOR
031 037 1F 1F US ^_, UNIT SEPARATOR
Os quatro u'ltimos sa~o normalmente associados com as
verso~es de controle de barra-inversa, fecha-colchete,
circunflexo e sublinhado, respectivamente mas alguns termi
nais na~o transmitem tais caracteres de controle.
Os caracteres a seguir sa~o imprimi'veis:
em primeiro lugar, alguns caracteres de pontuac,a~o:
.....ASCII..... EBCDIC
DEC OCT HEX HEX CHAR OBS.
032 040 20 40 SP espac,o
033 041 21 5A !
034 042 22 7F "
035 043 23 7B #
036 044 24 5B $
037 045 25 6C %
038 046 26 50 &
039 047 27 7D '
040 050 28 4D (
041 051 29 5D )
042 052 2A 5C *
043 053 2B 4E +
044 054 2C 6B ,
045 055 2D 60 -
046 056 2E 4B .
047 057 2F 61 /
e, agora, os caracteres nume'ricos:
.....ASCII..... EBCDIC
DEC OCT HEX HEX CHAR OBS.
048 060 30 F0 0
049 061 31 F1 1
050 062 32 F2 2
051 063 33 F3 3
052 064 34 F4 4
053 065 35 F5 5
054 066 36 F6 6
055 067 37 F7 7
056 070 38 F8 8
057 071 39 F9 9
mais caracteres de pontuac,a~o:
.....ASCII..... EBCDIC
DEC OCT HEX HEX CHAR OBS.
058 072 3A 7A :
059 073 3B 5E ;
060 074 3C 4C <
061 075 3D 7E =
062 076 3E 6E >
063 077 3F 6F ?
064 100 40 7C @
caracteres alfabe'ticos maiu'sculos:
.....ASCII..... EBCDIC
DEC OCT HEX HEX CHAR OBS.
065 101 41 C1 A
066 102 42 C2 B
067 103 43 C3 C
068 104 44 C4 D
069 105 45 C5 E
070 106 46 C6 F
071 107 47 C7 G
072 110 48 C8 H
073 111 49 C9 I
074 112 4A D1 J
075 113 4B D2 K
076 114 4C D3 L
077 115 4D D4 M
078 116 4E D5 N
079 117 4F D6 O
080 120 50 D7 P
081 121 51 D8 Q
082 122 52 D9 R
083 123 53 E2 S
084 124 54 E3 Q
085 125 55 E4 U
086 126 56 E5 V
087 127 57 E6 W
088 130 58 E7 X
089 131 59 E8 Y
090 132 5A E9 Z
mais caracteres de pontuac,a~o:
.....ASCII..... EBCDIC
DEC OCT HEX HEX CHAR OBS.
091 133 5B AD [ abre-colchete
092 134 5C E0 \ barra-invertida
093 135 5D BD ] fecha-colchete
094 136 5E 5F ^ circunflexo
095 137 5F 6D _ sublinhado
096 140 60 79 ` acento grave
.pa
caracteres alfabe'ticos minu'sculos:
.....ASCII..... EBCDIC
DEC OCT HEX HEX CHAR OBS.
097 141 61 81 a
098 142 62 82 b
099 143 63 83 c
100 144 64 84 d
101 145 65 85 e
102 146 66 86 f
103 147 67 87 g
104 150 68 88 h
105 151 69 89 i
106 152 6A 91 j
107 153 6B 92 k
108 154 6C 93 l
109 155 6D 94 m
110 156 6E 95 n
111 157 6F 96 o
112 160 70 97 p
113 161 71 98 q
114 162 72 99 r
115 163 73 A2 s
116 164 74 A3 t
117 165 75 A4 u
118 166 76 A5 v
119 167 77 A6 w
120 170 78 A7 x
121 171 79 A8 y
122 172 7A A9 z
mais pontuac,a~o:
.....ASCII..... EBCDIC
DEC OCT HEX HEX CHAR OBS.
123 173 7B C0 { abre-chave
124 174 7C 4F | barra vertical
125 175 7D D0 } fecha-chave
126 176 7E 7E ~ til
e, finalmente, mais um caracter na~o imprimi'vel
.....ASCII..... EBCDIC
DEC OCT HEX HEX CHAR OBS.
127 177 7F 07 DEL delete, rubout