# IBM 1620 Modelo I

O IBM 1620 Modelo I foi a primeira implementação do computador para uso científico IBM 1620, introduzido em 1959.
Esta unidade (geralmente chamada só "1620" até a introdução do Modelo II) foi produzida tão económica como a IBM a pôde fabricar para manter um preço de venda baixo. Uma revista industrial (Datamation) mencionou que o 1620 era o primeiro computador de IBM cujo sistema básico poderia ser arrendado por um custo mensal que era numericamente mais pequeno que seu número de modelo.

## Características gerais

As primeiras 20.000 posições decimais da memória de núcleo Magnético eram internas à CPU (o que reduziu o espaço necessário para o sistema básico). A expansão a 40.000 ou a 60.000 posições decimais requeriam a adição de uma unidade de memória IBM 1623. O tempo do ciclo de memória era de 20μs (ou o que é o mesmo, a velocidade da memória era de 50kHz = 1/20 de um Mhz). Uma operação de Armazenamento em Memória do Registro de Direção (Memory Address Register Storage ou MARS) na memória de Núcleos para ler, apagar ou escrever tomava 2 μs, como a leitura era destrutiva, a cada operação relacionada de escritura se fazia automaticamente (mas não necessariamente de forma imediata) precedida pela cada operação de leitura ou deletado do mesmo "registo(s)" durante o ciclo de memória de 20 μs.
A velocidade de relógio do processador central era de 1 MHz, que estava dividido por 20 por um contador em anel de 10 posições para proporcionar o sistema que sinais de tempos e de controle.
As instruções tomavam 8 ciclos de memória (160 μs) para sua recuperação e um número variável de ciclos de memória para sua execução. O Direcionamento Indireto acrescentava 4 ciclos de memória (80 μs) para a cada nível de indireção.
A máquina de escrever eléctrica que fazia de impressora de consola era uma IBM Modelo B1 modificada, que podia escrever a tão só 10 caracteres por segundo. (Esta máquina de escrever tinha o 'hábito' de romper o martelo "0" e lançar pela sala a metade de um despejo de memória longo).

## Aritmética decimal e não decimal

O computador era decimal, não dispunha de uma ALU convencional por hardware, pelo que toda a aritmética se executava com tabelas de busca na memória de núcleos magnéticos. A adição e a subtração utilizavam uma tabela de 100 posições (em direcção 00300..00399). A multiplicação utilizava uma tabela de 200 posições (em direcção 00100..00299). Na divisão básica da máquina usavam-se subrutinas por software, mas poderia instalasse um hardware opcional de divisão, utilizando um algoritmo de subtrações repetidas. Adicionalmente instruções de aritmética em ponto flutuantes eram outra opção disponível quando se instalava o módulo de dividisão.
Em geral pensava-se que a partir deste modelo se utilizavam as tabelas de busca em memória, e que singelamente mudando os conteúdos destas tabelas permitiam ao programador usar aritmética em qualquer base de 2 a 10. Isto é só parcialmente verdadeiro quando o hardware incluia subtração em complemento a dez (e para a adição com números de signo oposto). Por tanto, unicamente a adição de números sem signo poderiam ser corretamente executados em bases 5 a 9. Para a soma sem signo completa e a subtração em bases 2 a 4 requeria um detalhado conhecimento do hardware para criar uma "tabela" de soma dobrada que falsificaria o uso do complemento e o levava à lógica. Também a tabela de somas teria que ser recarregada para a operação em base 10 normal a cada vez que os cálculos de direções fossem requeridos pelo programa, e depois voltar a carregar a tabela outra vez para alternar a base. Isto fez o "truque" um pouco menos útil para qualquer aplicativo prático.

## Procedimentos operativos
### Consola superior

* Instrução e Ciclo de execução - 60 luzes
* Controle de Portas – 35 luzes
* Entrada-Saída - 15 luzes
* Registo de operação – 25 Luzes
* Buffer de cor de Registo – 30 luzes
* Registo de direção de memória – 25 luzes
* Selector de Exibição do Registo de direcção de memória – interruptor Rotativo, 12 posições

### Consola baixa

* Parada de Emergência – Interruptor de parada
* Luzes de estado de Condição/interruptores – 15 Luzes e 5 interruptores
* Interruptores de programa (sense switches) – 4 interruptores.
* Luzes de operador de consola-a/interruptores – 13 luzes, 1 interruptor de energia e 12 botões

### Máquina de escrever

A máquina de escrever era uma de escritório regular eléctrica de IBM, com um interface constituído por um conjunto de relés. Podia escrever 10 caracteres por segundo, e tinha um conjunto de instruções que se escreviam na máquina ou se liam desde ela. As instruções gerais RN (ler numérico) e WN (escrever numérico) eram instruções em linguagem montador que forneciam o código de "dispositivo" do segundo campo de direção, e o código de controle do dígito de ordem baixa do segundo campo de direção.
* WNTY: Write Numeric TYpewriter (Escreve Numérico MaquinaEscrever): a cada localização de cor continha um carácter de 6 bits na faixa de 000000 a 001001; com esta instrução, a cada localização de cor era apresentada como um dos caracteres "0" a "9".
* WATY: Write Alphanumeric TYpewriter (Escreve Alfanumérico MaquinaEscrever): a cada par de localizações de cor continha dois dígitos de 6 bits que apareciam na máquina de escrever como um dos 64 caracteres que poderia escrever.
* RNTY: Read Numeric TYpewriter (Ler Numérico MaquinaEscrever): ler um valor numérico do teclado.
* RATY: Read Alphanumeric TYpewriter (Ler Alfanumérico MaquinaEscrever): ler um carácter do teclado e guarda-o como um caracter alfanumérico de 2 dígitos.
* TBTY: TaB TYpewriter (TaBular MaquinaEscrever): As paradas de tabulação deviam ser estabelecidas manualmente, de modo que esta instrução era raramente utilizada.
* RCTY: Return Carriage TYpewriter (Volta de Carro MaquinaEscrever): Causava que a máquina de escrever fizesse o que agora denominamos uma sequência CR/LF.
Para simplificar a entrada e saída tinha duas instruções:
* TNS: Transmit Numeric Strip (Transmite Fita Numérica): Converte uma representação alfanumércia de "0" a "9" de dois dígitos a uma representação numérica de um sozinho dígito.
* TNF: Transmit Numeric Fill (Transmite Numérico Recheado): Converte uma representação de um dígito a uma sequência alfanumércia de dois dígitos que representava de "0" a "9"
A máquina de escrever eléctrica IBM Modelo B1 de 10 cps foi substituída em modelos mais tardios por uma IBM Selectric de bola, que podia escrever a quase 15 caracteres por segundo.

## Unidades de Saída Adicionais

A unidade de "saída" regular para um programa era uma perforadora de cartões, que era mais rápida que a máquina de escrever. Quando para os cartões se usava a unidade calculadora mecânica IBM 407, esta podia ser programado para plotar dois cartões, sendo capaz de utilizar as colunas de impressão adicionais disponíveis na 407. Toda a saída era síncrona, e o processador estava parado enquanto o dispositivo de E/S produzia sua saída, de modo que a máquina de escrever podia consumir bem mais tempo que o próprio programa durante o tempo de execução.
Em modelos mais tardios, uma impressora de linha IBM 1443 poderia ser acrescentada, a que poderia plotar mais rápido do que o dado poderia ser perfurado nos cartões. A impressora de linha poderia plotar 120 ou 144 colunas. O largo de carácter era fixo, de modo que mudou-se a medida do papel; a impressora plotava a 10 caracteres por polegada (10 cpi), de modo que uma impressora poderia plotar um máximo de 12 polegadas ou 14.4 polegadas de texto. Ademais, a impressora dispunha de um buffer pelo que o atraso do processo pela E/S se reduziu. Ainda assim, a instrução de impressão bloqueava o processo até que a linha não era completada.