⚡ Quando Portugal Ficou Ligado

Crónica Histórica — A Rede que Venceu a Entropia
Em 1980, com computadores ICL 1500, modems e código em assembler, nasceu uma rede que ligou muitos bancos com as suas agências bancárias e sistemas centrais, a Força Aérea Portuguesa, e algumas outras organizações — fiável, resiliente e feita contra as limitações das linhas analógicas da época.
ICL 1500 (1980): A Rede Portuguesa "à Prova de Bala"
Por Francisco Gonçalves — Fragmentos do Caos
Plataforma: ICL 1500 (terminais/sistemas com cassete e versões com disco no centro)
Ano: 1980
Ligações: Modems analógicos (tipicamente 300–1200-2400 bps), com fall back, sobre linhas com ruído e quedas frequentes
Protocolo: Assembler e protocolos IBM e ICL adaptados para o efeito (framing, CRC, ARQ, janelas deslizantes, timeouts, reenvios)
Âmbito: Bancos (agências pelo pais e sede), Força Aérea Portuguesa, e Bases pelo país e outros clientes nacionais
Distintivo: Fiabilidade extrema em infra-estrutura rudimentar — software "à prova de bala"
A realidade das linhas: ruído, ecos, quedas
Os computadores centrais tinham hosts pouco dotados para comunicações. As linhas eram analógicas, com atenuação, ecos e picos de ruído. O que falhava no cobre foi compensado em engenharia de protocolo: o stack que escrevi, tornou o ICL 1500 num guardião paciente — "escutava cada banda e insistia em vencer a entropia".
O coração do protocolo (feito à unha)
- Framing robusto — cabeçalho com STX, tamanho, sequência; rodapé com ETX e CRC-16/BCC.
- Blocos compactos — tipicamente 128–256 bytes por quadro, equilibrando latência/erro.
- ARQ com janelas deslizantes — ACK/NAK e retransmissão seletiva em caso de erro.
- Controlo de fluxo — XON/XOFF e RTS/CTS conforme o canal/porta.
- Timeouts adaptativos & backoff — reenvio exponencial e line probing após queda.
- Persistência transacional — journaling local, confirmações fim-a-fim, idempotência.
- Auto-recuperação — reconexão, re-negociação de velocidade, re-sincronização de sequência.
Como fluía a mensagem (alto nível)
enquanto houver_mensagens:
bloco = ler_buffer()
quadro = STX | LEN | SEQ | bloco | CRC | ETX
enviar(quadro)
aguardar(ACK, NAK, TIMEOUT)
se ACK: gravar_confirmação_e_avançar()
se NAK ou CRC_invalido: reenviar(SEQ)
se TIMEOUT: backoff(); tentar_reconectar_se_preciso()
ao_final: enviar_FRAME_FIM(); fechar_sessão_com_log_integridade()
Do país inteiro ao sistema central
Nas agências bancárias, os ICL 1500 recolhiam dados de operações; na sede, um ICL 1500 com disco actuava como nó central/host. O software fazia store-and-forward, verificava integridade, eliminava duplicados e alimentava o mainframe. Na Força Aérea e noutros clientes, o mesmo rigor: tráfego vital a passar em segurança por linhas imperfeitas.
Métrica e confiança
Cada sessão gerava logs precisos: perdas, retransmissões, tempo por bloco, disponibilidade do circuito. Essa telemetria permitia diagnosticar rotas, escolher horários menos ruidosos e provar o SLA de uma era sem SLAs.
Legado
Antes de X.25 massificar, antes de TCP/IP chegar às empresas, já tinha construído uma rede fiável sobre o caos. A lição permanece: quando a infra falha, o protocolo certo — pensado com elegância e disciplina — transforma ruído em informação confiável.
"A entropia não desiste — mas a teimosia da boa engenharia também não."
— F. Gonçalves