.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:. .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 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 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 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 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