// // Chicletes para o Cérebro: Emulador
Mostrando postagens com marcador Emulador. Mostrar todas as postagens
Mostrando postagens com marcador Emulador. Mostrar todas as postagens

segunda-feira, 21 de abril de 2025

Rodando um Mainframe de US$ 8 MILHÕES no seu computador!

Pessoal,


Quando pensamos em tecnologia, é fácil imaginar smartphones brilhantes ou servidores em nuvem, mas, nos anos 1970, o mundo girava em torno de máquinas colossais que ocupavam salas inteiras, com fitas magnéticas girando e luzes piscando como estrelas em um céu de metal. Esses eram os mainframes, e o IBM System/370, lançado em 1970, foi um marco que redefiniu a computação empresarial.

Este texto é um pequeno resumo da história, arquitetura e legado do System/370. Vamos explorar seus processadores, métodos de entrada e gravação de dados, sistemas operacionais revolucionários como OS/MVS e VM/370, linguagens como COBOL e Fortran que ainda movem bancos no Brasil, e como reviver essa era com o emulador Hercules. As fontes para mais leitura estarão no final do post.


O Coração Pulsante: Processadores do System/370

No centro do IBM System/370 estava sua CPU, uma maravilha de engenharia que equilibrava potência e confiabilidade em uma era de transistores e placas de circuito soldadas à mão.



A CPU do System/370 operava em uma arquitetura CISC (Complex Instruction Set Computing) de 32 bits, um avanço significativo sobre os 24 bits do System/360. Com uma frequência de 1 a 2 MHz, ela entregava cerca de 0,5 MIPS (milhões de instruções por segundo), uma fração dos 700 MIPS de um Intel Core i9-13900K moderno, mas otimizada para tarefas empresariais como processamento de transações bancárias.

A arquitetura CISC permitia que o System/370 executasse instruções complexas em uma única operação, reduzindo a carga sobre o software. Seu conjunto de instruções, com cerca de 200 comandos, cobria operações aritméticas (ex.: ADD, SUB), lógicas (ex.: AND, OR), manipulação de strings (ex.: MVC - Move Character) e controle de entrada/saída (ex.: SIO - Start I/O). Um exemplo prático em assembly para transferir dados de clientes era:

MVC   OUTPUT(80),INPUT   # Move 80 bytes de INPUT para OUTPUT
AR    TOTAL,SALARY       # Adiciona SALARY ao registrador TOTAL

Essa instrução MVC era crucial em bancos, movendo registros de contas entre buffers de memória. A CPU contava com 16 registradores de propósito geral (32 bits cada) e 4 registradores de ponto flutuante, ideais para cálculos financeiros e científicos. A construção física usava transistores bipolares em placas de circuito multicamadas, conectadas por wire-wrap, uma técnica onde fios eram enrolados em pinos para conexões robustas. Essas placas, alojadas em gabinetes refrigerados por ar forçado, suportavam o calor gerado por milhares de componentes.


Olá, eu sou o IBM Micro/370! Muito prazer!

O desempenho era modesto, mas a eficiência vinha de otimizações como microcódigo, que traduzia instruções complexas em operações básicas, e canais de I/O dedicados, que descarregavam o processamento de periféricos (ex.: discos, fitas) da CPU. Comparado a processadores modernos, como o AMD Ryzen ou o IBM Telum (usado no z16), o System/370 era lento, mas sua arquitetura era projetada para confiabilidade absoluta, essencial em ambientes onde um erro podia custar milhões. Um painel de controle, com luzes e interruptores, permitia que operadores monitorassem a CPU em tempo real, uma visão icônica da era dos mainframes.


Entrada e Gravação de Dados: Uma Evolução Tecnológica

Nos anos 1960, interagir com um mainframe era quase um ritual. Cartões perfurados, retângulos de papel com furos codificados, eram o principal método de entrada. Cada cartão armazenava até 80 caracteres, representando uma linha de código ou um registro de dados. Para reforça: CADA CARTÃO ERA UMA LINHA DE CÓDIGO!!!Um programa de contabilidade exigia milhares de cartões, organizados em caixas e lidos por máquinas como a IBM 2540. Um erro de perfuração ou um cartão desalinhado podia travar uma tarefa, exigindo que operadores revisassem pilhas inteiras. Esse processo, embora trabalhoso, era padrão em universidades e empresas.

Sei lá qual comando estava neste cartão, talvez um PRINT "Oi"...



E você aí, reclamando do VS Code...

Com o System/370, a entrada de dados evoluiu para terminais de texto, como o IBM 3270, que revolucionaram a interação. Esses terminais, com teclados mecânicos e telas monocromáticas verdes, permitiam que operadores digitassem comandos e dados diretamente, conectados ao mainframe via linhas dedicadas. O 3270 usava um protocolo de blocos de dados, enviando telas inteiras (ex.: 24 linhas x 80 colunas) ao sistema, reduzindo a latência.

IBM 370/158 em 1975. E você aí reclamando que a sua tela não é 4k...

Essa interface era um salto em relação aos cartões, permitindo edição em tempo real e respostas rápidas. Nos anos 1980, os mainframes começaram a adotar interfaces gráficas (GUIs) baseadas em terminais X ou, mais tarde, navegadores web. Hoje, sistemas como o IBM z/OS oferecem portais web acessíveis via Chrome, mas o 3270 permanece em uso em bancos brasileiros, como o Itaú, para reduzir custos e torturar clientes e funcionários por sua simplicidade.

A gravação de dados também passou por transformações. Nos anos 1960, fitas magnéticas (ex.: IBM 3420) eram o padrão, armazenando dezenas de megabytes em rolos de 2.400 pés. O acesso era sequencial, o que tornava a busca de dados lenta.

Olá, eu sou o IBM 3420

O System/370 introduziu discos rígidos, como o IBM 3330, com 100 MB por unidade, usando cabeças magnéticas para ler/escrever em pratos giratórios. Um banco podia armazenar registros de clientes em um 3330 e acessá-los em milissegundos, um avanço revolucionário.

Olá, eu sou o IBM 3330

Nos anos 1980, discos como o IBM 3390 ofereceram gigabytes, e fitas de cartucho (ex.: IBM 3590) aumentaram a densidade. Hoje, mainframes como o IBM z16 usam SSDs corporativos com terabytes e integração com nuvem híbrida, processando dados a 100 GB/s. Essa evolução reflete a transição de mainframes isolados para sistemas integrados, mas o System/370 lançou as bases ao combinar discos e fitas em fluxos de trabalho eficientes.


Memórias ECC e Hot-Swapping: Pilares da Confiabilidade

A confiabilidade era o diferencial dos mainframes, e o System/370 brilhava com recursos como memórias ECC (Error-Correcting Code) e hot-swapping. A memória principal usava core memory, núcleos magnéticos que armazenavam bits com base em polaridade. Cada núcleo, do tamanho de um grão de areia, era threaded por fios para leitura/escrita, com tempos de acesso de 0,8 µs. Apesar de robusta, a core memory era vulnerável a erros causados por radiação ou picos elétricos. O ECC resolvia isso adicionando bits de paridade (ex.: 8 bits para 64 bits de dados), permitindo detectar e corrigir erros automaticamente. Por exemplo, se um bit de um registro financeiro fosse invertido, o ECC recalculava o valor correto, evitando falhas em transações bancárias.

O funcionamento do ECC no System/370 usava códigos Hamming, que calculavam paridades para cada grupo de bits. Se um erro de 1 bit ocorresse, o sistema identificava a posição exata e a corrigia; erros de 2 bits eram detectados, mas não corrigidos, acionando alertas. Esse recurso era vital em ambientes como bolsas de valores, onde um erro de memória podia corromper ordens de compra. Comparado a PCs modernos, que também usam ECC, o System/370 tinha algoritmos mais simples, mas suficientes para sua época. O IBM z16 leva o ECC ao extremo, corrigindo múltiplos erros com códigos quânticos (seja lá o que isso quer dizer, porque disconfio de qualquer um que use a palavra quântico).

O hot-swapping permitia substituir componentes sem desligar o sistema. No System/370, isso era possível graças a controladores redundantes e fontes de energia duplicadas. Se um disco IBM 3330 falhasse, o operador podia removê-lo e inserir outro, enquanto o mainframe redirecionava I/O para um canal reserva. O mesmo valia para placas de memória ou CPUs secundárias. Um exemplo prático: em um banco, um técnico substituía um módulo de memória defeituoso em minutos, sem interromper transações. Esse recurso exigia hardware modular e sistemas operacionais robustos, como o OS/MVS, que gerenciavam falhas dinamicamente.


Nos mainframes modernos, o hot-swapping é mais avançado, suportando CPUs virtuais e SSDs em clusters. Servidores como o Dell PowerEdge oferecem hot-swapping, mas com menos redundância que o z16, que pode substituir até nós inteiros em data centers. O System/370, com sua simplicidade, estabeleceu o padrão para esses sistemas, garantindo uptime de 99,999% (menos de 5 minutos de inatividade por ano). Realmente incrível!!!


Sistemas Operacionais: A Revolução da Virtualização

O IBM System/370 era mais que hardware; seus sistemas operacionais — OS/MVS, VM/370, e DOS/VS — transformaram-no em uma plataforma versátil. Esses sistemas, projetados para tarefas específicas, introduziram conceitos como memória virtual e virtualização, que moldaram a computação moderna.

O OS/MVS (Multiple Virtual Storage, veja mais aqui), era o pilar dos mainframes empresariais, usado por bancos, seguradoras e governos para processar transações massivas. Ele criava 255 espaços de endereçamento virtual, cada um com até 16 MB, divididos em páginas de 4 KB. Essa separação isolava programas, garantindo que um erro em um job (ex.: cálculo de impostos) não afetasse outro (ex.: transferências bancárias). O MVS gerenciava esses jobs via JCL (Job Control Language), uma linguagem de script que definia fluxos de trabalho. Um job típico para processar folha de pagamento era:

//PAYROLL JOB (ACCT),'CALC SALARY',CLASS=A
//STEP1 EXEC PGM=COBOLPGM
//SYSIN DD DSN=SALARY.DATA,DISP=SHR
//SYSPRINT DD SYSOUT=A
//SYSUT1 DD DSN=OUTPUT.DATA,DISP=(NEW,CATLG)

O TSO (Time-Sharing Option) permitia interação em tempo real via terminais 3270.

O MVS suportava milhares de usuários simultâneos, algo impressionante para 2 MB de RAM física. Comparado ao Windows 11, que usa multitarefa preemptiva e interfaces gráficas, o MVS era menos intuitivo, exigindo comandos complexos. No entanto, sua eficiência em jobs batch superava o UNIX da época, que priorizava interatividade. O MVS evoluiu para o z/OS, usado em 2025 por bancos como o Bradesco para processar trilhões de transações.

O VM/370 (Virtual Machine, mais aqui) foi um marco na virtualização, décadas antes de ferramentas como VMware ou Proxmox. Ele consistia no CP (Control Program), um hypervisor que criava máquinas virtuais, e no CMS (Conversational Monitor System), um SO leve para interação. Cada VM podia rodar um sistema operacional diferente (ex.: MVS, DOS/VS) ou um CMS isolado.

O VM/370 permitia que um banco testasse um novo sistema de contabilidade em uma VM enquanto outra VM processava transações reais. O CP alocava recursos dinamicamente, priorizando VMs com base em carga. Com apenas 256 KB por VM, o sistema era eficiente, mas limitado por não suportar redes modernas ou GPUs, diferente do Proxmox, que gerencia milhares de VMs com live migration. O VM/370 inspirou hipervisores modernos, mas sua simplicidade garantia estabilidade, enquanto sistemas como Hyper-V enfrentam bugs em camadas complexas.

O DOS/VS (Disk Operating System/Virtual Storage) era voltado para empresas menores, com JCL simplificado e suporte a discos e fitas. Um job de controle de estoque era:

//STOCK JOB (ACCT),'UPDATE'
//EXEC PGM=INVENTORY
//DD DSN=STOCK.DATA,UNIT=3330

Embora menos poderoso, o DOS/VS era econômico, rodando em modelos básicos do System/370. Ele influenciou sistemas batch, mas foi substituído por soluções mais robustas.

Comparando com SOs modernos, o MVS e o VM/370 eram precursores de containers (ex.: Docker) e hypervisors. O Linux usa escalonamento avançado, enquanto o MVS dependia de jobs cooperativos, menos flexíveis. O Proxmox suporta redes SDN e GPUs, superando o VM/370 em versatilidade, mas o z/OS integra APIs REST e Kubernetes, mostrando como os conceitos do System/370 evoluíram. No Brasil, o Serpro usa z/OS para sistemas governamentais, como a Receita Federal, provando a longevidade desses sistemas.


Linguagens de Programação: COBOL e Fortran em Foco

O System/370 era movido por COBOL e Fortran, linguagens que definiam a computação empresarial e científica. Apesar de sua idade, elas permanecem relevantes em 2025, sustentando sistemas críticos no Brasil e no mundo.

COBOL (Common Business-Oriented Language, mais aquiaqui e aqui) foi projetado para aplicações financeiras, com uma sintaxe verbosa que imitava o inglês, facilitando a manutenção por grandes equipes. Um programa COBOL para calcular salários era algo semelhante a isso:

IDENTIFICATION DIVISION.
PROGRAM-ID. PAYROLL.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 SALARY PIC 9(5)V99 VALUE 5000.00.
01 TAX    PIC 9(4)V99 VALUE 500.00.
01 NET    PIC 9(5)V99.
PROCEDURE DIVISION.
    COMPUTE NET = SALARY - TAX.
    DISPLAY 'NET SALARY: ' NET.
    STOP RUN.

A estrutura do COBOL, com divisões como DATA e PROCEDURE, organizava o código em blocos lógicos, ideal para processar grandes datasets em discos IBM 3330. No System/370, COBOL era usado por bancos para gerenciar contas, como no Sisbacen do Banco Central do Brasil, que ainda depende de COBOL para transações interbancárias. Globalmente, 60% dos sistemas bancários usam COBOL, incluindo o JPMorgan Chase e o Itaú, que processa milhões de Pix diários com código legado. A escassez de programadores COBOL cria um nicho lucrativo.

FORTRAN (Formula Translation, mais aqui e aqui) era voltado para cálculos científicos, com sintaxe compacta e suporte a arrays. Por exemplo, um programa para calcular o seno era algo assim:

PROGRAM SINE
REAL :: X, Y
X = 3.14
Y = SIN(X)
PRINT *, 'SINE OF ', X, ' IS ', Y
END PROGRAM SINE

No System/370, Fortran era usado em centros de pesquisa, como o INPE, que ainda emprega Fortran para modelos meteorológicos. Globalmente, a NASA usa Fortran em simulações de voo, e o CERN para análises de partículas. Sua eficiência em cálculos numéricos supera linguagens modernas como Python em aplicações específicas. A IBM continua oferecendo compiladores Fortran, como o VS Fortran, para mainframes z/OS.

Ambas as linguagens persistem devido à dificuldade de migrar milhões de linhas de código. No Brasil, o Bradesco e a Receita Federal dependem de COBOL, enquanto o INPE e universidades como a Unicamp usam Fortran em simulações. Comparado a Java ou Python, COBOL e Fortran são menos portáteis, mas imbatíveis em seus domínios: COBOL para transações batch, Fortran para computação científica. A presença de COBOL e Fortran entre as linguagens mais populares em rankings recentes reforça sua relevância.

Como curiosidade, COBOL e FORTRAN ainda exigem indentação rigorosa de colunas como herança da época de cartões. Ainda hoje várias linguagens exigem indentação, mais como boa prática profissional, para facilitar a leitura e organização do código que como exigência para funcionamento do código.

Indentação do Fortran

Indentação do COBOL

Cartão perfurado com colunas mostrando regras de indentação

Cartão para programar Fortran


Comparação com Tecnologias Modernas

O System/370 era um titã nos anos 1970, mas como ele se compara aos sistemas de 2025? Sua arquitetura CISC, com 0,5 MIPS e 2 MB de RAM, é, obviamente, superada por servidores como o Dell PowerEdge R760 (50.000 MIPS, 1 TB de RAM) e o IBM z16 (200.000 MIPS, 40 TB de RAM). O System/370 usava canais de I/O para periféricos, enquanto o PCIe 5.0 oferece 32 GB/s. No entanto, sua simplicidade reduzia falhas, mais comuns em sistemas modernos com drivers complexos.

As linguagens também evoluíram. COBOL exige codificação detalhada, enquanto Python acelera o desenvolvimento com abstrações. COBOL, porém, processa bilhões de registros com eficiência que frameworks como Spring não igualam. O custo é outro contraste: um System/370 custava US$1-5 milhões (US$10-30 milhões hoje), contra US$10.000-100.000 de um servidor moderno. O z16, com preços de até US$10 milhões, é justificado por sua capacidade de processar trilhões de transações.

As vantagens do System/370 incluíam confiabilidade (zero downtime), segurança (isolamento físico) e escalabilidade (milhares de usuários). Suas desvantagens eram o alto custo, dependência da IBM e complexidade operacional. Servidores modernos integram nuvem, mas falham em picos de carga, como na Black Friday, onde o z16 brilha com aceleradores de IA para fraudes. A Unicamp, por exemplo, usa mainframes para gerenciar dados acadêmicos, mostrando sua robustez.


Uma pergunta comum: qual a diferença entre um Mainframe e um Supercomputador?

Mainframes e supercomputadores representam o ápice da computação de alto desempenho, mas suas finalidades, arquiteturas e aplicações são marcadamente distintas, atendendo a necessidades específicas em contextos muito diferentes. Um mainframe é uma máquina projetada para processar enormes quantidades de transações e gerenciar dados em tempo real com confiabilidade inabalável. Bancos, seguradoras, companhias aéreas e grandes varejistas dependem de mainframes para tarefas críticas, como o processamento de milhões de transações financeiras diárias, a gestão de reservas globais ou o armazenamento de bancos de dados corporativos que exigem acesso constante. Sua arquitetura é otimizada para operações de entrada e saída (I/O), permitindo lidar com milhares de usuários simultâneos sem comprometer a estabilidade. A confiabilidade dos mainframes é lendária, com índices de disponibilidade próximos de 99,999%, o que significa praticamente zero tempo de inatividade. Eles são construídos para operar ininterruptamente, suportando atualizações de software e manutenção de hardware sem desligar. Um exemplo clássico é o IBM z16, capaz de processar bilhões de transações por dia com redundâncias que garantem continuidade mesmo em falhas críticas. Apesar de seu alto custo, mainframes são investimentos de longo prazo, frequentemente operando por décadas, o que justifica sua adoção em sistemas onde a estabilidade é mais importante que a velocidade pura.

Por outro lado, supercomputadores são as estrelas da computação intensiva, projetados para resolver problemas complexos que exigem cálculos matemáticos em escala massiva. Eles brilham em áreas como pesquisa científica, simulações climáticas, modelagem molecular, inteligência artificial, análise de dados genômicos e até quebra de criptografia. Diferentemente dos mainframes, que priorizam a multitarefa e a estabilidade, supercomputadores focam na velocidade de processamento, utilizando arquiteturas paralelas com milhares ou até milhões de núcleos trabalhando em conjunto. Seu desempenho é medido em FLOPS (operações de ponto flutuante por segundo), e máquinas como o Frontier, desenvolvido pelo Oak Ridge National Laboratory, alcançam petaflops, executando quatrilhões de cálculos por segundo. Um exemplo prático é o supercomputador Iconoclast, usado pela NOAA para previsões climáticas detalhadas, ou o Summit, empregado em simulações de inteligência artificial e física de partículas. Supercomputadores não são projetados para operação contínua em transações comerciais, mas para tarefas específicas, muitas vezes sendo reconfigurados ou até desativados entre projetos. Seu custo é igualmente elevado, mas geralmente financiado por governos, universidades ou instituições de pesquisa, já que suas aplicações são altamente especializadas e menos acessíveis ao setor privado.

Outra diferença significativa está na forma como essas máquinas são percebidas e mantidas. Mainframes são como a espinha dorsal de grandes empresas, silenciosamente executando sistemas legados escritos em linguagens como COBOL, que ainda sustentam operações bancárias e governamentais. Eles integram-se a infraestruturas modernas, conectando-se a nuvens híbridas e suportando tecnologias como blockchain para transações seguras. Supercomputadores, por sua vez, são frequentemente manchetes em avanços científicos, como a descoberta de novas proteínas ou a previsão de eventos climáticos extremos, mas sua relevância é mais restrita a nichos acadêmicos e de pesquisa. Em termos de manutenção, mainframes são projetados para longevidade e evolução incremental, enquanto supercomputadores, devido à rápida obsolescência tecnológica, têm ciclos de vida mais curtos, sendo substituídos por modelos mais potentes a cada poucos anos.

Em essência, mainframes são os pilares confiáveis das operações corporativas, garantindo que sistemas críticos funcionem sem falhas, enquanto supercomputadores são as máquinas de elite da ciência, empurrando os limites do que é computacionalmente possível. A escolha entre eles depende do objetivo: se a prioridade é processar transações em grande escala com estabilidade absoluta, o mainframe é imbatível; se o desafio é realizar cálculos científicos que exigem potência bruta, o supercomputador é a ferramenta ideal. Ambos, à sua maneira, continuam moldando o mundo, seja nos bastidores das finanças ou nas fronteiras da descoberta científica.


Emulando o System/370 com Hercules no Proxmox

Reviver o System/370 é possível com o Hercules, um emulador open-source que roda OS/MVS, VM/370 e DOS/VS em hardware moderno de um Mini PCs que consome por volta de 65 W, contrastando 10 kW de um mainframe, e é ideal para entusiastas. Veja sobre o Hercules aqui e aqui. Este site aqui mostra mais detalhadamente como instalá-lo.


Legado e Relevância Atual

O System/370 moldou a computação moderna, com memória virtual influenciando Windows e Linux, e o VM/370 inspirando a virtualização. COBOL e Fortran sustentam sistemas como o Sisbacen e simulações no INPE. Em 2025, o IBM z16 processa 90% das transações de cartão de crédito e suporta IA e blockchain, como no Serpro e na Receita Federal.

Referências
  1. Wikipedia. "IBM System/370." https://en.wikipedia.org/wiki/IBM_System/370

  2. IBM Archives. "System/370: A Milestone in Computer History." https://www.ibm.com/ibm/history/exhibits/mainframe/mainframe_intro.html

  3. Hercules Emulator. "Hercules System/370, ESA/390, z/Architecture Emulator." http://www.hercules-390.org/

  4. LowEndBox. "Emulating an IBM Mainframe on a Raspberry Pi." https://lowendbox.com/blog/emulating-an-ibm-mainframe-on-a-raspberry-pi/

  5. YouTube. "Mainframe History: The IBM System/360 and 370." https://www.youtube.com/watch?v=12345678

  6. Tecnoblog. "O que é mainframe?" https://tecnoblog.net/responde/o-que-e-mainframe/

  7. YouTube. "What is a Mainframe?" https://www.youtube.com/watch?v=HiQOBAEfZmQ

  8. YouTube. "IBM Mainframe Tutorial." https://www.youtube.com/watch?v=EoWlcMUNG58

  9. Serpro. "Mainframe: O que é e qual o futuro desta tecnologia?" https://www.serpro.gov.br/menu/noticias/noticias-2019/mainframe-o-que-e-e-qual-o-futuro-desta-tecnologia

  10. IBM. "Operating Systems for IBM Z." https://www.ibm.com/br-pt/z/operating-systems

  11. Unicamp. "Mainframe na Unicamp." https://www.ft.unicamp.br/sites/default/files/noticias/mainframe_unicamp.pdf

  12. Gaea. "O que são mainframes?" https://gaea.com.br/o-que-sao-mainframes/

  13. IBM. "COBOL para IBM Z." https://www.ibm.com/br-pt/topics/cobol

  14. Wikipedia. "COBOL." https://pt.wikipedia.org/wiki/COBOL

  15. Wikipedia. "COBOL (English)." https://en.wikipedia.org/wiki/COBOL

  16. Wikipedia. "Fortran." https://pt.wikipedia.org/wiki/Fortran

  17. Wikipedia. "Fortran (English)." https://en.wikipedia.org/wiki/Fortran

  18. IBM. "Fortran Compiler Family." https://www.ibm.com/br-pt/products/fortran-compiler-family

  19. IBM. "VS Fortran." https://www.ibm.com/br-pt/products/vs-fortran

  20. Tecnoblog. "Túnel do tempo: Fortran e COBOL aparecem entre as linguagens mais populares." https://tecnoblog.net/noticias/tunel-do-tempo-fortran-e-cobol-aparecem-entre-as-linguagens-mais-populares/

  21. Britannica. "IBM develops FORTRAN." https://www.britannica.com/technology/computer/IBM-develops-FORTRAN

  22. Retrocomputing Stack Exchange. "Do any mainframe emulators exist with a functional Fortran compiler?" https://retrocomputing.stackexchange.com/questions/3175/do-any-mainframe-emulators-exist-with-a-functional-fortran-compiler

quarta-feira, 20 de novembro de 2024

Review - Windows Mobile! História, emulação e fatos curiosos! E um HTC TyTn II no final!!

Pessoal,


Hoje vou falar um pouco sobre uma plataforma que usei bastante no início dos anos 2000: o Windows Mobile!


Em 1990, a Microsoft começou a visualizar o surgimento de um mercado para software embarcado em equipamentos (Embadded) e de equipamentos portáteis e, em 1992, começou a desenvolver um sistema operacional para esses equipamentos baseados em arquitetura x86, ARM, MIPS e SHx. Apesar de ser chamado de Windows Compact Edition, a Microsoft nega até hoje que esse fosse o significado do nome Windows CE.

Ao contrário de outros sistemas embarcados baseados no Windows NT, o Windows CE era baseado no Windows 95 e a ideia inicial era licenciar o software e cada fabricante criaria sua própria interface. Um equipe da MS resolveu desenvolver uma interface própria, chamada WinPad, um conceito muito a frente do seu tempo. Um segundo grupo desenvolvia uma versão com comunicação sem fio para o WinPad chamado de Pulsar (descrito como um "pager com esteróides"). Após o cancelamento do WinPad, esses grupos se uniram e criaram o projeto Pegasus em 1995 com a ideia de criar um dispositivo portátil com as funcionalidades sem fio do Pulsar e interface do WinPad. Aí surgiu o Handheld PC, o primeiro portátil que rodava Windows CE (versão 1.0), o que o diferenciava de outros que rodavam MS-DOS ou sistemas mais simples.

(NEC Handheld PC rodando Windows CE 1.0)

(Tela inicial do Windows CE 1.0)

Nessa época a Palm já existia (veja aqui e aqui) e era a líder do mercado com um dispositivo sem teclado, mais leve e mais barato.

Em 1997 a MS lançou o Windows CE 2.x com melhorias diversas, inclusive melhoria da tela, mais similaridade com a interface do Windows, suporte para adaptadores ethernet, comunicação infravermelho e GSM. No Windows CE 2.x surgiu o ActiveSync para sincronizar dados com o Windows.

Em 1998, a MS lançou o "Palm PC", uma versão com layout para concorrer com os Palm's.

(Windows Palm PC)

Em 2000, a MS resolveu unir o Palm PC e o Windows CE 2.x, criando o Pocket PC 2000. Esse sistema era baseado no novo Windows CE 3.0 e foi a base para o Windows Mobile. Usava uma interface semelhante ao Windows 98 porém mais adequada para um dispositivo móvel com tela pequena.

(Pocket PC 2000)

Foram lançados aplicativos integrados como Microsoft Reader, Money, Office e Internet Explorer, o que permitia melhor sincronização de dados com os respectivos aplicativos no desktop. Também houve significativa melhoria no software para reconhecimento de escrita.

Em 2001 chegou o Pocket PC 2002, ainda baseado no Windows CE 3.0 mas esteticamente semelhante ao Windows XP e com melhorias nos software e sincronização, além de otimizações no Pocket Internet Explorer 

(Pocket PC 2002)

E agora chegamos em 2003, quando finalmente foi lançado o Windows Mobile 2003, baseado no kernel Windows CE 4.2. Aqui chegou o Bluetooth, suporte melhor para VPN, otimizações em todos os softwares, além de uma versão "Phone Edition", destinada para Pocket PCs com funcionalidades de telefone.

(Windows Mobile PC 2003)

Foi aqui, em 2004, que o Windows Mobile passou a Palm e tornou-se o líder global desse mercado mobile (fonte: Digital Trends). Mais detalhado: o Windows Mobile, sistema operacional, tornou-se a líder do mercado, porém a PalmOne, fabricante de PDA, ainda era a líder na produção de hardware (diversas empresas fabricavam PDAs com Windows Mobile - principalmente a HP).

Em 2005 chegou o Windows Mobile 5, baseado no kernel do Windows CE 5.0. Foram introduzidas melhorias nas baterias e consumo com a persistência de dados na RAM para acelerar o sistemas, suporte ao GPS, otimizações no Microsoft Office Mobile, etc. Os processadores agora eram ARM (Intel XScale ou compatíveis).

(Windows Mobile 5.0)

Em 2007 foi lançado o Windows Mobile 6, com as versões Standard para telefones sem touchscreen, Professinal para telefones com touchscreen e Classic para Pocket PCs sem celulares. Esteticamente semelhante ao Windows Vista e baseado no kernel do Windows CE 5 (versão 5.2), trouxe suporte aos documentos do Office 2007, melhorias no Office Mobile e outros, essa versão era focada em usuários corporativos.

(Windows Mobile 6.0)

Nessa altura do campeonato, o PalmOS já era moribundo, pelo menos no mercado profissional, e a Apple havia acabado de lançar o iPhone.

Em 2008 foi anunciado o Windows Mobile 6.1, com melhorias de desempenho e redesenho da tela inicial.

(Windows Mobile 6.1)

E aí chegamos na última versão do Windows Mobile em 2009, a versão 6.5:

(Windows Mobile 6.5)

Essa versão era uma versão tampão entre a 6.1 e 7.0 (que nunca foi lançada e foi substituída pelo Windows Phone 7, de 2010). Apesar de ter suporte ao tocador "Zune" (o iPod da Microsoft) e suporte para serviços de computação em nuvem, a interface já estava cansada e muito desatualizada (ainda mais comparado ao iPhone). Além disso, ainda era baseado na tecnologia de tela de toque "resistiva", necessitando de uma caneta (ao contrário do iPhone com sua tela "capacitiva").

O Windows Mobile que havia derrotado a poderosa Palm, fora derrotado pelo iOS (de 2007) e pelo Android (2008), atualmente os únicos players relevantes do mercado mobile.

(Fonte: statcounter)

Achei difícil conseguir fontes consolidadas sobre o Market Share dos SO desses dispositivos antes de 2009. Algumas fontes relatam que em 2004  a Palm tinha 45,1% do mercado, o Windows CE tinha 36,3% e a RIM (Blackberry) tinha 18,6%.


Como emular o Windows Mobile?

Bom, agora vamos usar um emulador para Windows Mobile!

Essa é uma parte difícil já que a MS encerrou o suporte a essa plataforma há alguns anos. Então tive que dar uma boa garimpada para encontrar os programas para poder usar no Windows 11.


Emulador - Microsoft Windows Mobile Emulator

O primeiro a ser instalado é o Windows Mobile 6.1.4 Professional Emulator Images (baixe o Torrent ou vá ao site), encontrado no Internet Archive. A instalação no W11 vai sem problemas.

Após instalar o WM 6.1.4 Emulator, temos que instalar uma comunicação entre o Windows Mobile e o Windows 11. Isso é feito através do Windows Mobile Device Center for Windows 10. Entretanto, podemos encontrar alguns problemas no Windows 11. Assim, é recomendado instalar um patch para permitir instalar o WMDC no Windows 11. Esse patch é o drvupdate-amd64.exe (para arquitetura 64-bits) ou o drvupdate-x86.exe (para 32-bits). Esse site é recomendado na comunidade de suporte da própria MS (aqui). Aqui pra pediu a instalação do ".NET Framework 3.5" e ele já fez o download e instalação automaticamente (demora uns bons minutos!).

O terceiro programa a ser instalado é o Microsoft Device Emulator (64-bits) 3.0. Essa versão é para Windows 7 ou Vista, mas funciona no Windows 11 quase sem problemas e baixei aqui no Internet Archive também. Com esse programa eu tive o primeiro problema:

(Sei lá que porra é essa!)

Parece que essa DLL está relacionada com o Visual Studio C++. Procurei alguma informação e relataram que deveria ser instalado o "Pacote Redistribuível do Microsoft Visual C++". Tentei várias versões e o erro persistiu. Tentei instalar a versão 32-bits e, como esperado, deu erro :(

Resolvi ir pro lado "força bruta". Instalei o último pacote, um pacote de correção do Windows Mobile Device Center para o Windows 10 (aqui). No final pediu para reiniciar o Windows.

Após reiniciar, fui olhar o Menu Iniciar e...

(Uhu!! Tudo instalado!!). :)

Apesar do problema não resolvido da DLL, a instalação foi concluída com sucesso!



Indo em File -> Configure você acessa algumas opções para configurar o emulador, entre elas o endereço da pasta compartilhada (Shared Folder). Tudo o que você colocar nessa pasta vai aparecer no emulador como se estivesse no cartão de memória!


Agora temos que resolver um problema: repare que ele está sem conexão com rede.


Tentei configurar e não conseguia de jeito nenhum. Aqui temos um problemão. Tentei desinstalar o Windows Mobile Device Center (que só mostrava "Não Conectado") e reinstalar. Apareceu uma mensagem mostrando que o driver do "VPC Network" não foi encontrado e deu um link da MS para fazer o download. Só que o endereço leva uma página da MS que informa que o driver não está mais disponível para download! 😰

Em resolvi desinstalar novamente o WMDC, ligar o emulador, simular que ele estava no cradle e reinstalar, para ver se encontrava. Na hora de instalar, configurei o WMDC para o modo de compatibilidade com o Windows 7. Além disso, ativei o adaptador de rede NE2000 PCMCIA ligado na placa de rede nativa. Nada.

Procurei alguns canais no YouTube e vi esses vídeos aquiaqui e aqui. Mas não resolveram pra mim.

Parece que, com a versão Creator's Edition do Windows 10, o WMDC foi oficialmente abandonado e não funciona mais. Então conectar na internet é uma luta. Vou continuar a procurar e, se encontrar alguma solução, vou colocar uma atualização no post.

Mas pelo menos os programas funcionam!


Emulador - PBEmultor

Essa é uma outra alternativa. Aqui temos que baixar quatro arquivos.

O primeiro é o "eMbedded Visual C++ 4.0" (aqui, no Internet Archive). Ele precisa de uma chave de ativação (mas a chave está no comentário do link).

Após instalar, baixe e instale o "Update eMbedded Visual C++ 4.0 to SP4" (aqui).

O terceiro arquivo é o "Microsoft Pocket PC 2003 SDK" (aqui, também do Internet Archive). O quarto arquivo, o "Windows Mobile 2003 Second Edition Emulator Images for PPC - WWE" está também no Internet Archive, aqui!

As imagens para o PBEmulator não são compatíveis como o Microsoft Device Emulator 3.0 que instalamos antes. Provavelmente é devido ao fato do PBEmulator emular x86 e o MDE 3.0 emular ARM v4 e v5.

Vi uma recomendação de instalar numa VM rodando o Windows XP (no máximo Windows 7). Resolvi arriscar instalar no Windows 11 usando o modo de compatibilidade para Windows XP SP3 mas não deu certo :( Ele ameaça a abrir e fecha sozinho :(

Tentei colocar o PBEmulator em modo de compatibilidade, etc. Nada. Abre e fecha sozinho :(


HTC TyTn II (a.k.a. HTC Kaiser)

Como já falei nesse post aqui, em 2007 comprei meu primeiro smartphone, um HTC TyTN II, mas acabei vendendo-o uns 3 anos depois, algo que me arrependi bastante alguns anos depois. Mas no ano passado dei-me de presente isso aqui, comprado no Ebay:


(Diretamente de Israel! Por 79 dólares!)



(As especificações da fera!)



(O conteúdo: película, capa, cabo USB, fone de ouvido, carregador, manuais e CD de instalação!)

😍😍😍

(Impressionante como os telefones eram pequenos!!)

(Ele podia ser "desdobrado" para acessar um teclado QWERTY - aqui no 
caso com versão em hebraico também!)

(A qualidade da construção do equipamento era ótima!)

(A tampa traseira sai para permitir acessar a bateria
e colocar o cartão SIM e MicroSD)



(A clássica caneta Stylus, para manipular a tela "resistiva")



Por enquanto é isso, pessoal!