Vous êtes sur la page 1sur 10

[tutorial] um pouco sobre o antigo pc altair 8800

autor: kodo no kami ( fb/hacker.fts315 )


pagina: https://www.facebook.com/forumeof
fórum: http://eofclub.in/forum
discord: https://discord.gg/cmzeMPv (kodo#0010)
data: 16/12/2017

e ae galera blz? nesse tutorial vamos programar para um computador antigo da


decada 70, sendo essa maquina um altair 8800 da mits. Nesse tutorial vamos esta
usando um simulador ja que é uma maquina extramente antiga e rara entre
colecionadores (nunca tive oportunidade de mexer com um de verdade, queria uma
replica de natal para brincar kkk =/ ), no caso para esse tutorial vamos usar o "altair
8800 emulator" embora exista outros emuladores para ele inclusive alguns onlines

site oficial (altair32)

bom galera antes de começar a brincar com o emulador temos que entender algumas
coisas, a primeira delas que programar esse tipo de maquina não é tão simples como
as atuais onde a gente cria o codigo em C, Pascal ou qualquer outra linguagem
usando uma IDE bonitinha e depois joga no disco para dar boot. As maquinas mais
antigas as vezes nem tinha o teclado ou monitor, apenas leds para sinalizar o bit
daquele barramento, chaves ou botões para mudar os estados deles (no caso do altair
são aquelas chaves do tipo alavanca). Outra coisa que temos que citar que a
arquitetura do altair 8800 é baseado nos processadores intel 8080 (talvez exista
variantes em 8085 ou ate em z80 ja que o proprio simulador tem a opção z80, alem
dessas arquiteturas tambem serem compativeis de certa forma, embora creio que
precise mudar um pouco o circuito para que isso seja possivel ~ uma coisa
interessante que os computadores imsai 8080 é um clone do altair, eles tambem
usavam processadores 8080, ate que começaram a ser fabricados usando o 8085
como cpu). Como o computador é baseado em 8080 então a arquitetura e o assembly
usado na arquietura atual x86 não é compativel com essa maquina, nem o set de
instruções e nem o binario gerado (para isso, temos que programar exatamente para a
arquitetura 8080 ou ate mesmo o 8085 e z80, excluindo algumas instruções não
compativel com o 8080). bom galera agora que a gente ja falou um pouco sobre esse
computador vamos da uma olhada em uma imagem que peguei wikipedia dessa
maquina
o que precisamos entender que vamos programar ele manualmente bit a bit formando
o codigo binario equivalente aquela instrução do 8080, depois podemos rodar o
programa tanto passo a passo quanto de uma vez. primeiro de tudo vamos entender
um pouco do painel desse trem.
O primeiro botão que vamos ver é o que fica no lado esquerdo do canto inferior
(escrito off e on ~ coloquei em vermelho), esse botão liga e desliga a maquina
(quando empurramos a alavanca para on ele liga para off ele desliga),
o segundo botão que vamos analisar sera o botão para rodar o programa do
computador, sendo esse botão o run (no meu exemplo ele é o verde), para a gente
usar esse botão temos que coloca o programa antes ne (esse emulador ja tem um
programa padrao nele entao podemos dar um run sem problema), outra coisa que
podemos ver que os leds que estiver escrito A e os D vao mudar constantemente
sendo os leds A representando os endereços de memorias (normalmente vai mudar
sequencialmente menos quando acontecer um jmp) e o D representando a instrução
ou os dados (lembrando que isso é binario ~ no exemplo abaixo seria o codigo
hexadecimal 8 no barramento de dados e no barramento endereço de memoria o
numero 4cff), podemos apertar em stop para parar o programa no trecho atual da
memoria (tambem a cor verde porem para cima dessa vez), depois que o programa
estiver parado podemos apertar em run novamente para rodar ele novamente
podemos rodar o programa passo a passo depois de parado usando o botão single step
(no meu exemplo ele é o verde claro), o single step tambem serve para passar para o
proximo dado na memoria (executando ele é claro)
para a gente resetar os registradores tambem seria meio para reiniciar o computador
sem cortar a sua energia, usamos o botão reset (no meu exemplo é o roxo)
para a gente ir para um endereço de memoria especifico temos que setar os bits
equivalente a ele no barramento de endereço, para isso usamos os botões do
barramento de endereço/dados (no meu exemplo é a cor marrom), supondo que eu
quero debugar o meu programa a partir da posição hexadecimal 25 (100101) de
memoria, então basta setar o valor 100101 nos botões de barramento e depois usar o
botão de leitura ou Examine para pular para aquele trecho (no meu caso é o azul claro
o botão), o Examine Next é executado para ler o proximo byte porem não executar
como codigo
para a gente escrever na memoria primeiro vamos para a posição desejada como no
exemplo anterior, depois escrevemos no barramento de dados usando os botões de
barramento (esse botão serve tanto para memoria quanto para os dados a diferença
que os dados sao apenas 8 bits ou seja os oitos primeiros botões ja que é um
processador de 8 bits), por fim usamos o botão deposit (no meu exemplo era o azul
escuro), o Deposit Next vai pular a instrução e escrever no proximo endereço depois
dela, no exemplo abaixo eu escrevo o byte 05 na memoria
um simples programa que atribui um valor a um registrador depois soma com um
outro valor a esse registrador depois joga na memoria no endereço 0b, no caso a
instrução hlt vai parar o programa (seria o mesmo que puxar o botão stop porem por
software), depois basta a gente da um step para o proximo dado para ter o resultado

mvi a,50h
mvi b,10h
add b
mvi h,0
mvi l,0bh
mov m,a
hlt

depois de compilado vai gerar o codigo binario abaixo (representei ele em hex), voce
pode criar seus proprios programas e não se limitar ao meu, bastando usar um
compilador para 8080,8085 ou z80 para descobrir os bytes equivalente (ou procurar
em manuais dessa arquitetura pelo set de instruções tambem)

3e 50 06 10 80 26 00 2e 0b 77 76 00
depois disso basta voce escrever cada byte desse sequencialmente a partir do
endereço de memoria 0 ( vai da um trabalho isso em u.u ), depois executar o
programa ele ate ele para no hlt como previsto pelo codigo, para a gente exibir o
resultado basta exibir o proximo dado apertando o Examine Next (ele ler o proximo
endereço da memoria sem executar), no meu exemplo tem que da o valor 60
(1100000)

bom galera sei que tem muita coisa para falar sobre esse computador principalmente
voltado a parte de programação, porem, esse tutorial foi feito para mostrar o
funcionamento basico dessa maquina sem nos aprofundar tanto, então quem sabe em
algum futuro tutorial eu entro de cabeça para ensinar asm 8080/8085 ou ate mesmo
z80 ^^

by kodo no kami

Vous aimerez peut-être aussi