IBM 1130

Origem: Wikipédia, a enciclopédia livre.
Consola IBM 1130, em processo de restauração

O Sistema de Computação IBM 1130 foi introduzido em 1965.[1] Era a equipa menos cara de IBM, e apontava ao mercado de baixo custo de computação técnica intensiva, como a engenharia e a educação. O IBM 1800 foi uma variante de controle de processo do 1130 com duas instruções agregadas (CMP e DCM) e capacidades primeiramente/saída extra.

Descrição[editar | editar código-fonte]

O 1130 voltou-se muito popular, e junto com clones não-IBM foram o primeiro contacto com a "computação pessoal" para muitas pessoas. Sua relação preço/prestações foi boa e, notavelmente, incluía um dispositivo de armazenamento em disco removível, o qual não era caro, junto a um sistema operativo em disco singelo e confiável, que suportava várias linguagens de alto nível. O baixo preço e umas prestações bem balançadas fizeram que se transforme numa "oficina aberta" para o desenvolvimento de programas, disponível para um grande número de utentes pela primeira vez.

Processador e memória[editar | editar código-fonte]

O IBM 1130 usava módulos electrónicos do System/360 chamados Tecnologia de Estado Sólido (SLT, por suas siglas em inglês) e tinham uma arquitetura binária de 16 bits, não muito diferente aos minicomputadores posteriores, como a PDP-11 ou a Data General Nova. O espaço de direcionamento era de 15 bits, limitando a memória do 1130 a 32K palavras de 16 bit (64 Kbytes). Tinha capacidade de direcionamento direto e indireto.

Software[editar | editar código-fonte]

Muitos programas foram feitos em Fortran. O compilador Fortran do 1130 podia correr numa máquina com só 4.096 palavras de memória principal. Isto é 8 kilobytes, menos que o espaço mínimo de direcionamento de ficheiros do sistema de ficheiros de alguns PC. Para maximizar a velocidade e conservar espaço, o sistema operativo e os compiladores estavam escritos inteiramente em linguagem montador, e as técnicas empregadas são pouco vistas hoje em dia, incluindo a estreita integração de códigos e dados e o código auto-modificável. Para permitir o uso de programas que eram muito grandes para caber na memória principal, a implementação da linguagem Fortran permitia que qualquer subrotina seja designada como "LOCAL", isto é, era carregada à memória ao ser chamada. O uso de código residente em disco requeria que o código executável, por exemplo uma subrotina, seja "carregado" (lido) do disco à memória (se não estava já presente à memória) quando a subrotina era "chamada" (invocada). O compilador estava disponível numa versão residente em disco, bem como também numa fita perfurada de 8 canais ou em cartão perfurado[1]

Outras linguagens de programação estavam disponíveis no 1130, incluindo: APL, BASIC, COBOL, FORTH, PL/I e RPG.[2] A Eastern Michigan University desenvolveu um compilador Fortran IV para o 1130, conhecido como Fortran-EMU, que corrigia um detalhe do compilador de IBM: a falta de um tipo de dados LÓGICO.

Periféricos[editar | editar código-fonte]

O sistema 1130 básico incorporava uma unidade de disco IBM 2310. Esta lia os cartuchos 2315 (do tamanho de uma caixa de pizza) de um sozinho plato que alojavam 512 K palavras ou 1 Mb (menos que um diskette de 3,5" HD). Os discos usavam-se para alojar o sistema operativo, o código objeto e os dados, mas não o código fonte. Este último mantinha-se em cartões perfurados. O sistema operativo em disco era chamado DMS ou DM2 (por Disk Monitor System, Release 2).

Outros periféricos disponíveis incluíam as impressoras de linhas IBM 1132 e IBM 1403, a leitora/perforadora de cartões IBM 1442, a unidade de disco IBM 2311, o monitor de gráficos IBM 2250 e a plotadora gráfica (plóter) de tambor IBM 1627. O plóter era muito usado em trabalhos de engenharia. Consola-a usava um mecanismo IBM Selectric, o qual significava que podia se mudar o tipo de letra substituindo o elemento impresor, o que consistia numa bola oca do tamanho de uma pelota de golfe. Tinha um tipo especial disponível para o APL, uma poderosa linguagem de programação orientado ao cálculo de matrizes que usava uma anotação simbólica especial.

O IBM 1130 MTCA, por Multiple Terminal Controle Adapter (Adaptador de Terminal de Controle Múltiplo), foi anunciado ao final da vida dos produto 1130; permitia ligar até 2.741 terminais a um IBM 1130, para usar com APL.

A partir de 1968, a unidade de fita magnética IBM 2415 estava disponível como RPQ (a preço especial).[3]

Um 1130 regular tinha um ciclo de memória de 3,6 microsegundos, e um modelo mais caro estava equipado com uma memória com um ciclo de 2,2 µs (podia-se usar este último com uma impressora 1403 ligada através de um multiplexor 1133). Para aproveitar melhor a faixa baixa do mercado, IBM introduziu o 1130 Modelo 4, com um ciclo de 5,6 µs, a preço mais baixo, por suposto. A impressora 1132 do Modelo 4 reduziu-se também, mas a CPU mais lenta não podia seguir seu ritmo (A 1132 usava a CPU para determinar que roda de impressão devia se disparar enquanto girava, uma função que consumia muita capacidade de cálculo). Uma leitura cuidadosa do manual do hardware do 1130 descobria que quando o nível (1) de interrupção da impressora ou a interrupção (0) da coluna da 1442 estavam activados, o 1130 Modelo 4 funcionava à velocidade mais rápida de 3,6 microsegundos por ciclo. Alguns utentes do Modelo 4 escreviam um falso controlador de impressora que activava o nível de interrupção 1 e o deixava assim enquanto durava a parte de cálculos intensivos de seu aplicativo. Não podia ter operações primeiramente/saída enquanto isto sucedia como o 1442 usava o nível de interrupção 4 para marcar o fim do cartão. O nível 0 era o nível de interrupção mais alto, e o nível 5 era o mais baixo.

Modelos do IBM 1130[editar | editar código-fonte]

IBM implementou cinco modelos da Unidade Central de Processo 1131, que era o principal componente de processamento do Sistema de Computação IBM 1130.

Velocidade de armazenamento
Tamanho de armazenamento ciclo de 3,6 microseg.

sem disco interno

ciclo de 3,6 microseg.

mais discos

ciclo de 3,6 microseg.

(70% do rendimento) um disco

ciclo de 2,2 microseg.
mais discos
ciclo de 2,2 microseg.

(sem disco interno)

4.096 palavras Modelo 1A Modelo 2A Modelo 4A --- ---
8.192 palavras Modelo 1B Modelo 2B Modelo 4B Modelo 3B Modelo 5B
16.384 palavras Modelo 1C Modelo 2C --- Modelo 3C Modelo 5C
32.768 palavras Modelo 1D Modelo 2D --- Modelo 3D Modelo 5D

O IBM 1800 foi uma variante do IBM 1130 com características adicionais para o controle do processo dos aplicativos. Bem como o IBM 1130 foi um sucessor da IBM 1620, o IBM 1800, foi um sucessor da IBM 1710.

Cronologia[editar | editar código-fonte]

  • 11 de fevereiro de 1965 - IBM introduz o 1130 (Modelos A1, A2, B1 e B2). Também anuncia a impressora IBM 1132, a impressora em linha a mais baixo preço oferecida por IBM até esse momento.
  • Quarto trimestre de 1965 - Primeira entrega a um cliente desde a planta de San José.
  • 9 de agosto de 1966 - IBM despliega o adaptador de comunicações assíncronas 1130, o qual permite ao pequeno sistema 1130 se ligar por médio de uma linha telefónica comum a um IBM System/360, e funcionar como terminal de comunicações.
  • 17 de abril de 1967 - Anuncia-se uma expansão de quatro vias para o 1130 (Modelos B3, C2, C3, D2 e D3), abarcando:
    • amplia cinco vezes o armazenamento em disco e quatro vezes a memória principal de núclos magnéticos;
    • uma velocidade de processamento ao redor de mais 40% rápida que a disponível anteriormente;
    • Mais e mais rápidos periféricos, incluindo um leitor de marcas óptico;
    • um pacote de programação melhorado.
  • janeiro de 1968 - Primeiras entregas dos 1130 Modelos B3, C2, C3, D2 e D3.
  • julho de 1968 - A fábrica de Boca Raton começa a entregar o 1130.
  • 22 de julho de 1971 - Os 1130 Modelos 4A e 4B são introduzidos a novos níveis de economia.
  • setembro de 1971 - Entregam-se os primeiros 1130 Modelo 4.
  • 31 de maio de 1972 - São anunciados os Modelos 1C, 1D, 5B, 5C e 5D.

Influência do 1130[editar | editar código-fonte]

Cartão perfurado que contém o programa de auto-carrega de 1130 que copiava os cartões colocados após esta na tolva primeiramente
  • Brian Utley foi o Director de Projecto do 1130 durante seu desenvolvimento e introdução. Brian disse que a terceira parte do 11/30, antes que o departamento de comercialização de IBM o chamasse 1130, era conhecido como o Small Engineering Computer System ou SECS (Sistema de Computação de Engenharia Pequeno). A arquitetura inicial era de 18 bits mas foi trocada para 16 bits devido à influência do desenvolvimento do System/360. O discurso completo de sua apresentação do 2005 está disponível em Ibm1130.org (em inglês).[4]
  • O notável desenhador de software Grady Booch teve seu primeiro contacto com a programação num IBM 1130:[5]

(...) Golpeei as portas do escritório local de vendas de IBM até que um vendedor se compadeció de mim. Depois de charlar por um momento, pôs em minhas mãos um manual de Fortran. Estou seguro que mo deu pensando "Nunca saberei nada deste rapaz outra vez". Voltei na semana seguinte, dizendo: "Isto é realmente genial. Tenho lido todo o assunto e tenho escrito um pequeno programa. Onde posso encontrar um computador?". O homem, para meu deleite, encontrou-me tempo para programar num IBM 1130 nos fins de semana e em horas da tarde. Essa foi minha primeira experiência em programação, e devo agradecer ao vendedor de IBM anónimo pelo lançamento de minha carreira. Obrigado, IBM.

  • O gurú do LISP Guy Steele escreveu um intérprete de LISP para o IBM 1130 quando ia à escola secundária (Boston Latin School, onde tinha um IBM 1130 para uso dos estudantes). Seu código e a documentação do LISP 1.6, junto a um resumo do trabalho necessário para que se execute baixo simulação, está disponível em Ibm1130.org (em inglês).[6][7]
  • Chuck Moore procurava chamar a sua nova linguagem "Fourth", mas o sistema operativo do IBM 1130 tinha limitado os nomes a cinco caracteres, pelo que terminou o chamando FORTH.[8]
  • Dão Bricklin, criador do programa VisiCalc, iniciou-se na programação quando descobriu e usou o IBM 1130 da Fundação Nacional de Ciência Informática/Projecto Matemáticas de Verão para estudantes de secundária, dada à Universidade de Pennsylvania em 1966.[9]
  • Um IBM 1130 com 8 quilo palavras de memória principal foi usado pela primeira vez a tempo completo para a Busca de Inteligência Extraterreste, no rádio observatório da Universidade Estatal de Ohio.[10]
  • Charles Goldfarb, o pai de SGML, descreve um trabalho de instalação de um sistema de composição baseado num IBM 1130 que "finalmente mudou minha carreira", levando à linguagem de marcação genérico:[11]

O sistema estava num computador IBM 1130, uma máquina com o tamanho de um escritório com 8KB (sic!) de cor, uma unidade de disco de 512KB, em leitor de fita de papel Teletype CX, uma perfuradora de fita BRPE, e um tipógrafo fotomecânico Photon 713. A atribuição foi minha primeira experiência com a gestão de um banco de dados de documentos de leitura mecânica:

Aprendi a enrolar as fitas de papel perfurado para que possam ser alojadas em forma ordenada em cestos de papéis cilíndricos.

Enquanto, ainda que eu não o sabia, as raízes da linguagem de marcas se estavam a iniciar. Historicamente, os manuscritos electrónicos continham códigos de controle ou macros que causavam que o documento se formata-se numa forma particular ("codificação específica"). Em contraste, a codificação genérica, que começou na década de 1960, utiliza etiquetas descritivas (por exemplo, "encabeçado", em lugar de "formato-17").

Rarezas do software[editar | editar código-fonte]

  • Numa primeiro versão do sistema operativo, as cabeceiras dos arquivos escritos em FORTRAN e nos primeiros compiladores de RPG não eram compatíveis. Antes de usar outra linguagem, o ficheiro tinha que ser copiado.
  • Os índices de registros encontravam-se efectivamente na memória de núcleos nas posições 1, 2 e 3.
  • O compilador Fortran construía as matrizes para atrás na memória.
  • Um sector de disco tinha 640 bytes.
  • Teve uma lenda urbana no momento de introduzir o modelo que, já que era uma máquina científica pequena, o número de modelo da IBM 1130 foi obtido de multiplicar o número de modelo da IBM 360 por π.

Descrição geral do conjunto de instruções[editar | editar código-fonte]

Exemplos de Programas[editar | editar código-fonte]

Os exemplos podem executar-se num emulador de IBM 1130 disponível em IBM 1130.org (em inglês).

Exemplo de programa em Montador[editar | editar código-fonte]

A seguinte listagem mostra o conteúdo de um conjunto de cartões perfurados que compilam e executam um programa em montador que lê os cartões perfurados e as plota na impressora em linha.

O código seguinte Copyright (c) 2006 Kym Farnik. Código publicado baixo a licença MIT. Ver: http://www.opensource.org/licenses/mit-license.php

 // JOB
 // ASM
 *LIST
                     * LCARD.ASM - LIST A DECK OF CARDS TO LINE PRINTER
                     *
                     * COPYRIGHT (C) 2006 KYM FARNIK.
                     * CODE PUBLISHED UNDER MIT LICENSE.
                     *
                     * PROGRAM
* NEW PAGE ON PRINTER
                     * A  READ A CARD
* CONVERT FORMAT
* PRINT A LINE ON PRINTER
* GOTO A
                     *
                     START LIBF    PRNT1    GOTO NEW PAGE ON 1132
                           DC      /3100    PRINTER CHANNEL 1-NEW PAGE
                     *
                     NEXTC LIBF    CARD0    READ FROM 1442 CARD READER
                           DC      /1000    CONTROL TO READ
                           DC      CBUFF    STORE 80 COLUMNS
                     CINP  LIBF    CARD0
                           DC      0
                           B       CINP     LOOP UNTIL CARD IS READ
                     *
                           LIBF    ZIPCO    CONVERT CARD TO PRINTER
                           DC      /1100    UNPACKED IN, PACKED OUT
                           DC      CBUFF+1  INPUT BUFFER
                           DC      PBUFF+1  OUTPUT BUFFER
                           DC      80       CHARACTER COUNT
                           CALL    HLEBC    HOLLERITH TO EBCDIC
                     *
                           LIBF    PRNT1    PRINT 80 CHARACTERS
                           DC      /2000    CONTROL CODE TO PRINT
                           DC      PBUFF    PRINT BUFFER
                           DC      PERR     PRINT ERROR
                     POUT  LIBF    PRNT1    CHECK FOR PRINT COMPLETE
                           DC      0
                           B       POUT     LOOP UNTIL COMPLETE
                     *
                           B       NEXTC    READ NEXT CARD
                     *
                     * DATA
                     *
                     CBUFF DC      80       80 COLUMNS PER CARD
                           BSS     80
                     *
                     PBUFF DC      40       40 WORDS 80 CHARACTERS
                           BSS     40
                     *
                     PERR  DC      0
                           B    I  PERR     THIS RETURNS TO THE
* PRINTER ERROR HANDLER
* WHICH WILL TERMINATE THE PROGRAM
                     *
                           END     START    PROGRAM ENTRY POINT
 // XEQ
 TEST DATA 1
 HELLO WORLD
 TEST DATA 2

Exemplo de programa em Fortran IV[editar | editar código-fonte]

A seguinte listagem mostra o conteúdo de um conjunto de cartões perfurados que compilam e executam um programa em Fortran e uma subrotina em Fortran para o IBM 1130 correndo o DM2.

O código seguinte Copyright (c) 2006 Kym Farnik. Código publicado baixo a licença MIT. Ver: http://www.opensource.org/licenses/mit-license.php

 // JOB
 // FOR
 *LIST SOURCE PROGRAM
 *ONE WORD INTEGERS
 C-------------------------------------------------------
 C COMPUTE THE CRITICAL VALUES FOR A QUADRATIC EQN
 C 0=A*X**2+B*X+C
 C RETURNS DISCRIMINANT, ROOTS, VERTEX, FOCAL LENGTH, FOCAL POINT
 C X1 AND X2 ARE THE ROOTS
 C-------------------------------------------------------
       SUBROUTINE QUADR(A,B,C,DISCR,X1,X2,VX,VY,FL,FPY)
       REAL A,B,C,DISCR,X1,X2,VX,VY,FL,FPY

 C DISCRIMINANT, VERTEX, FOCAL LENGTH, FOCAL POINT Y
       DISCR = B**2.0 - 4.0*A*C
       VX = -B / (2.0*A)
       VY = A*VX**2.0 + B*VX + C
       FL = 1.0 / (A * 4.0)
       FPY = VY + FL
       FL = ABS(FL)

 C COMPUTE THE ROOTS BASED ON THE DISCRIMINANT
       IF(DISCR) 110,120,130

 C -VE DISCRIMINANT, TWO COMPLEX ROOTS, REAL=X1, IMG=+/-X2
 110   X1 = -B / (2.0*A)
       X2 = SQRT(-DISCR) / (2.0*A)
       RETURN

 C ZERO DISCRIMINANT, ONE REAL ROOT
 120   X1 = -B / (2.0*A)
       X2 = X1
       RETURN

 C +VE DISCRIMINANT, TWO REAL ROOTS
 130   X1 = (-B + SQRT(DISCR)) / (2.0*A)
       X2 = (-B - SQRT(DISCR)) / (2.0*A)
       RETURN
 C
 C NEXT STORE SUBROUTINE ON DISK USING DUP
       END
 // DUP
 *DELETE             QUADR
 *STORE      WS  UA  QUADR
 // JOB
 // FOR
 *LIST SOURCE PROGRAM
 *IOCS(CARD,1132 PRINTER)
 *ONE WORD INTEGERS
 C-------------------------------------------------------
 C PROCESS DATA CARDS WITH A,B,C
 C UNTIL A=0
 C-------------------------------------------------------

       DATA ICARD,IPRT /2,3/
       REAL A,B,C
       REAL DISCR,XR1,XR2,VX,VY,FL,FPY

       WRITE(IPRT,901)
 901   FORMAT(' ------------------------------------------------------')

 C READ A B C, IF A=0 THEN EXIT
 100   READ(ICARD,801)A,B,C
 801   FORMAT(3F8.3)

 C     EXIT WHEN A IS ZERO
       IF (A) 110,9000,110

 C PRINT A B C
 110   WRITE(IPRT,902)A,B,C
 902   FORMAT(' QUADRATIC A=',F8.3,' B=',F8.3,' C=',F8.3)

 C COMPUTE AND PRINT THE CRITICAL VALUES
       CALL QUADR(A,B,C,DISCR,XR1,XR2,VX,VY,FL,FPY)
       WRITE(IPRT,903) DISCR
 903   FORMAT(' DISCRIMINANT=',F9.4)
       WRITE(IPRT,904) VX,VY
 904   FORMAT(' VERTEX X=',F9.4,'  Y=',F9.4)
       WRITE(IPRT,905) FL
 905   FORMAT(' FOCAL LENGTH=',F9.4)
       WRITE(IPRT,906) VX,FPY
 906   FORMAT(' FOCAL POINT X=',F9.4,'  Y='F9.4)

       IF (DISCR) 120,130,140

 C -VE DISCRIMINANT, TWO COMPLEX ROOTS
 120   WRITE(IPRT,913) XR1, XR2
 913   FORMAT(' COMPLEX ROOTS =(',F9.4,'  +/-',F9.4,'I)')
       GO TO 200

 C ZERO DISCRIMINANT, ONE REAL ROOT
 130   WRITE(IPRT,912) XR1
 912   FORMAT(' ROOT  X =',F9.4)
       GO TO 200

 C +VE DISCRIMINANT, TWO REAL ROOTS
 140   WRITE(IPRT,911) XR1, XR2
 911   FORMAT(' ROOTS X1=',F9.4,'   X2=',F9.4)
 C --- GO TO 200

 C END OF QUAD
 200   WRITE(IPRT,901)
       GO TO 100

 C END OF PROGRAM
 C DATA FOLLOWS XEQ CARD
 9000  CALL EXIT
       END
 // XEQ
 +001.000+000.000+000.000
 +001.000+002.000+003.000
 +002.000+002.000+000.000
 +002.000+000.000-004.000
 +000.500+000.000-004.000
 +000.250+002.000-002.000
 -004.000+000.000-004.000
 +002.730-007.200-003.750
 +000.000+000.000+000.000

Exemplo de sessão em APL \ 1130[editar | editar código-fonte]

A seguinte imagem mostra uma sessão APL \ 1130 singela. Esta sessão foi realizada via o simulador 1130 disponível de IBM 1130.org

Esta imagem mostra o rendimento à sessão, a adição de inteiros do 1 ao 100, a geração de uma tabala de adições para os entereos 1..5 e a saída da sessão.

Referências