IBM 1130
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.
Índice
1 Descrição
1.1 Processador e memória
1.2 Software
1.3 Periféricos
2 Modelos do IBM 1130
3 Cronologia
4 Influência do 1130
5 Rarezas do software
6 Descrição geral do conjunto de instruções
7 Exemplos de Programas
7.1 Exemplo de programa em Montador
7.2 Exemplo de programa em Fortran IV
7.3 Exemplo de sessão em APL 1130
8 Referências
Descrição |
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 |
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 |
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 |
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 |
IBM implementou cinco modelos da Unidade Central de Processo 1131, que era o principal componente de processamento do Sistema de Computação IBM 1130.
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 |
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 |
- 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 |
- 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 |
Exemplos de Programas |
Os exemplos podem executar-se num emulador de IBM 1130 disponível em IBM 1130.org (em inglês).
Exemplo de programa em Montador |
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 |
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 |
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
↑ "IBM INTRODUCES POWERFUL SMALL COMPUTER", IBM, C. G. Francis, Director of Information, Data Processing Division, White Plains, New York, February 11, 1965
↑ Larry Breed. «vector.org». ISSN 0955-1433
↑ IBM Corporation (ed.). IBM 1130 Custom Feature Description - Attachment Channel RPQ Number 831552, Form A26-1579-0 (PDF). [S.l.: s.n.]
↑ «Origin of the IBM 1130 Name»
↑ «Grady Booch polishes his crystal ball». Quote from interview. IBM. Consultado em 16 de janeiro de 2007
↑ Dr. Dobb's Journal (ed.). «Thoughts on Language Design -- New challenges require new solutions»
↑ «Confessions of a Happy Hacker»
↑ «The Evolution of Forth»
↑ «Memories while visiting the Bay Area and the Computer History Museum»
↑ The Big Ear (ed.). «SETI in the 1970s»
↑ «The Roots of SGML -- A Personal Recollection»