Música arriscada em uma antiga impressora de linha de mainframe IBM

Recentemente, em nosso Museu de História da Computação, adquirimos um conjunto de cartões perfurados para um programa de música de computador com 50 anos de idade. A maioria dos computadores não tinha placas de som na época, mas programadores criativos encontraram maneiras de fornecer música usando impressoras lineares. Estávamos um pouco preocupados com o fato de esse programa danificar a impressora, mas ainda assim arriscávamos executá-lo no antigo mainframe IBM 1401. Como seria de esperar, a música tocada pela impressora linear soa horrível - mas você pode perceber a melodia e a impressora não está machucada.


O computador comercial IBM 1401 foi lançado em 1959 e se tornou o computador mais vendido em meados da década de 1960 - mais de 10.000 desses sistemas foram entregues. A principal vantagem competitiva da IBM 1401 era a impressora de linha de alta velocidade IBM 1403. A cadeia de caracteres de rotação rápida permitiu que a impressora imprimisse 10 linhas por segundo com excelente qualidade - era considerada a melhor qualidade antes das impressoras a laser aparecerem na década de 1970.


O circuito impresso da impressora é 1401. Possui 48 caracteres diferentes, que são repetidos 5 vezes.

As impressoras de linha eram muito barulhentas, mas os programadores logo descobriram que, ao imprimir certas linhas de caracteres a partir do ruído, determinadas frequências podiam ser extraídas. Foi possível tocar uma nota imprimindo as linhas necessárias. Na região de 1970, o especialista em ciência da computação Ron Mack codificou várias músicas em cartões perfurados usando o programa de música existente. Recentemente, ele se deparou com seus programas antigos e nos deu a oportunidade de testá-los.

Como uma impressora linear funciona


Para imprimir caracteres, a impressora usa uma cadeia de links com caracteres que giram em alta velocidade oposta ao papel e há uma fita de tinta entre o papel e a corrente. A impressora produz linhas de 132 colunas - ou seja, cada coluna possui seu próprio martelo e eletroímã. No momento certo, quando o símbolo desejado passa do martelo, o eletroímã pressiona o martelo contra o papel, e o papel junto com a fita atinge o link, imprimindo o símbolo.


Mecanismo de impressão de impressora linear IBM 1401 (das instruções)

Para que esse processo funcione, a impressora precisa calcular cuidadosamente o tempo de operações. A corrente gira a uma velocidade de 2,3 m / s, e a cada 11,1 μs o próximo elo fica em frente ao martelo. O circuito de controle mal tem tempo suficiente para ler a localização desse símbolo na memória principal, compará-lo com o símbolo localizado sob o martelo e bater no martelo em caso de coincidência. Por 132 intervalos de tempo, cada martelo tem a capacidade de imprimir um caractere; isso é chamado de "varredura". Como existem 48 caracteres no conjunto (sem letras maiúsculas), para imprimir todos os caracteres em qualquer coluna, é necessário repetir esse processo 48 vezes. Para cada varredura, a cadeia é deslocada apenas por uma largura de caractere.


O conjunto de martelos da impressora IBM 1403. Abaixo estão os pontos de impacto de 132 martelos (um por coluna). No topo estão as bobinas e os fios de 33 dos 132 martelos.

Na parte inferior da foto, um martelo é mostrado. Acima, à esquerda, há uma bobina eletromagnética e fios. Tivemos que substituir este martelo depois que a bobina foi superaquecida e defumada - a foto mostra sua área enegrecida (isso aconteceu há muito tempo e não está relacionado à música).



Geração de música


Tendo entendido como a impressora funciona, cujo martelo tem a capacidade de operar a cada 11,1 μs, será mais fácil entender a estratégia de obtenção de música. Imprimindo texto cuidadosamente selecionado, você pode controlar o tempo de resposta dos martelos. Se os martelos forem acionados em determinados intervalos, será possível criar as frequências necessárias. Por exemplo, uma nota la (440 Hz) pode ser obtida imprimindo uma linha de texto para que os tacos funcionem a cada 1/440 de segundo. Isso pode ser alcançado digitando 1 na 1ª coluna (primeiro martelo), depois # na 14ª coluna na próxima varredura, uma vírgula na 30ª coluna e assim por diante. A seguir, é apresentada a linha inteira que você precisa imprimir para criar uma anotação. Você pode se surpreender ao constatar que, com apenas 48 posições, o conjunto de caracteres inclui ocorrências estranhas como ⌑ e ‡.

1 ⌑YC# 0 Q 3, ‡FRT 4 - , IU $7 MV . * 9N ⌑ ZE @ P3 

O diagrama abaixo mostra a distribuição temporal dos martelos, uma frequência uniforme de 440 Hz, dada pela linha de caracteres especificada. O eixo x representa o tempo; cada caractere impresso é marcado com barras vermelhas. As faixas vermelhas são distribuídas uniformemente, a uma distância de 1/440 segundo, o que dá uma nota a 440 Hz. Cada barra é marcada com um símbolo associado e uma coluna na página. Observe que os caracteres não são impressos na ordem em que aparecem na linha. Não existe uma relação simples entre a organização dos caracteres em uma sequência e a sequência de tempo. Algumas linhas cinza são mostradas onde o martelo deveria ter funcionado, mas o símbolo está ausente. Neste ponto, a rede está sincronizando, portanto, não pode imprimir.


Diagrama de distribuição de tempo para a nota la.

Digitando outra linha, você pode gerar outra nota. Abaixo está uma nota de si, 987 Hz (mais de uma oitava acima). Como esperado, mais notas requerem mais caracteres:

 1 @EQ4S J 8. ND ‡ SH 7 AM Y#2 G- KV . 0 DQSJ 7& ND ‡/4 H AMX0 2 QGJ W. 0 DP‡ S 7&AM ‡/4G * MX0 D 3 


Diagrama de distribuição de tempo para as notas s.

A seguir, uma linha para uma nota nítida (138 Hz). No começo, não estava claro para mim por que essa nota exige a impressão de uma sequência em que todos os caracteres são reunidos em uma pilha e não dispersos, como outras notas. Acontece que 138 Hz coincidem com os martelos seguidos. E embora os personagens estejam próximos um do outro, eles são distribuídos igualmente ao longo do tempo.

 16#UZKP*E&38 


Diagrama de distribuição temporal para uma nota nítida.

Qual é o risco da música em cadeia


Estávamos preocupados que este programa de música pudesse danificar nossa impressora. Há muitas histórias sobre como as pessoas quebraram as impressoras imprimindo uma linha que faz todos os martelos funcionarem ao mesmo tempo. Penso que estas são principalmente lendas urbanas (1403 marretas disparam por sua vez). No entanto, estávamos preocupados que a música em cadeia pudesse sobrecarregar a cadeia da impressora e que ela quebrasse. A foto abaixo mostra uma corrente quebrada durante o uso normal; fios rasgados e links individuais são visíveis.



Uma corrente para a impressora foi feita trançando um fio fino em uma fita e prendendo blocos com letras. Até recentemente, essas cadeias eram raras e não podiam ser substituídas; se o fio estivesse rasgado, era impossível consertá-lo. No entanto, o Museu Techworks! de Binghamton recentemente criaram uma maneira de restaurar circuitos impressos. Portanto, nosso rei na IBM 1401, Frank King, aprovou com relutância o uso da cadeia restaurada para tocar música. Felizmente, a cadeia sobreviveu perfeitamente à geração musical. Depois de estudar o programa de música, cheguei à conclusão de que ele sobrecarrega o circuito muito menos que a impressão comum, a menos que, é claro, uma ressonância particularmente infeliz surja nele.


Circuito impresso (de cabeça para baixo) a curta distância

O programa




O código fonte do programa caiu no esquecimento por muito tempo, então desmontei os códigos de máquina dos cartões para entender como ele funciona ( listo a lista separadamente). Primeiro, ele lê os "cartões de frequência" que determinam qual linha imprimir para qual nota. Ele cria na memória uma matriz de linhas para impressão, juntamente com uma tabela com os nomes das notas e os endereços das linhas para impressão. Em seguida, o programa lê as notas das músicas, uma nota por cartão (a foto mostra que, para algumas músicas, você precisa usar muitos cartões). Para cada nota, o programa procura a linha correspondente para imprimir na tabela. Imprime uma linha quantas vezes for necessário, dependendo do tamanho da nota. Cumpre ainda um ciclo de silêncio, de 200 a 2000 vezes.


Cartões perfurados com o código de máquina do programa de música. Por alguma razão, o conteúdo de cada cartão é impresso duas vezes.

O código da máquina 1401 é muito diferente dos computadores modernos. Uma das diferenças é que o código anteriormente modificado anteriormente era usado com freqüência, mas hoje essas práticas são condenadas. Por exemplo, uma tabela de linhas para impressão é criada alterando as instruções de carregamento, onde o campo de endereço é alterado. Mesmo retornos de rotinas usam código auto-modificável, colocando o endereço de retorno na instrução jmp no final da rotina. Para processar uma anotação, o programa em tempo real gera uma sequência de três instruções para carregar uma linha, acessar o código de impressão e retornar ao loop principal. O código de modificação automática dificultou a compreensão do programa, pois o código desmontado não corresponde ao que realmente foi executado.

Atrás dos cartões com o programa há cartões de frequência que definem as linhas de cada nota. O código suporta até 20 notas diferentes; portanto, os cartões de frequência foram selecionados para cada música separadamente. Cada linha de 132 caracteres é dividida em dois cartões, o primeiro dos quais determina o lado direito da linha. O nome da nota e a frequência são impressos em cada cartão no canto direito.


Cartões de frequência

O conjunto final de cartas cria uma melodia e cada nota (ou lacuna) tem seu próprio cartão. Cada cartão tem uma nota e duração impressas. Uma melodia longa pode envolver centenas de cartões. É fácil salvar uma nova melodia nos cartões - você só precisa fazer anotações nos cartões. As notas são indicadas no sistema de notação americano , onde o nome da nota é seguido por um número de oitava. Por exemplo, C4 é a média de. Como apenas alguns circuitos impressos têm o símbolo #, os objectos cortantes são indicados pela letra S, ou seja, CS em vez de C #.


Foto de um cartão com o close-up da melodia "Silver Bells".

Conclusão


Tocamos música com êxito em uma impressora IBM 1403 executando programas que ninguém executava há quase 50 anos. Embora a qualidade da música não tenha sido particularmente alta, ficamos felizes por a impressora não se autodestruir. A última vez que Ron Mack lançou esses programas em 1970; pelo link você encontrará algumas músicas. O vídeo abaixo mostra um trecho da Marselhesa; Neste vídeo, você pode assistir a impressão de cada linha.


O Museu de História da Computação de Mountain View exibe a IBM 1401 às quartas e sábados ; portanto, se você estiver por perto, recomendo que você visite nossa exposição.

Source: https://habr.com/ru/post/pt468647/


All Articles