SIMULAÇÃO E REALIZAÇÃO DE UM COMPUTADOR …O sinal LIB MEM existirá quando se verificarem as se...
Transcript of SIMULAÇÃO E REALIZAÇÃO DE UM COMPUTADOR …O sinal LIB MEM existirá quando se verificarem as se...
SIMULAÇÃO E REALIZAÇÃO DE UM COMPUTADOR COM
, BASE NUM PROCESSADOR MONOLITICO
Christian Lenz Cesar
TERE SUBMETIDA AO CORPO DOCENTE DA COORDENAÇÃO DOS PROGRAMAS DE , ~
POS-GRADUAÇAO DE ENGENHARIA DA UNIVERSIDADE FEDE..llAL DO RIO DE ,
JANEIRO COMO PARTE DOS REQUISITOS NECESSARIOS PARA A OBTENÇÃO
DO GRAU DE MESTRE EM CI~CIA (M.Sc.).
Aprovada por:
RIO DE JANEIRO
ESTADO DA GUANABARA - BRASIL
OUTUBRO DE 1973
A G R A D E C I M E N T O S
Meus sinceros agradecimentos ao coordenador do Progra-
ma de Engenharia de Sistemas e Computação, professor Nelson
Maculan, pelo apoio e ao professor Celso de Renna e Souza por
ter tornado realidade a parte prática deste trabalho.
ii
RESUMO
O presente trabalho descreve a arquitetura de um pe
queno computador realizado com base num processador monolíti
co e sua simulação.
Primeiramente estabelece-se os circuitos externos ao
processador necess~rios ao seu funcionamento.
Em seguida mostra-se um simulador que executa instru-
~ çoes dadas em sua forma bin~ria. O usu~rio pode definir dentro
do simulador a organização da memória, dos periféricos e do sis
tema de interrupção.
Finalmente descreve-se a implementação do computador.
iii
ABSTRACT
This paper describes an architecture for a small com
puter using a microprocessor as its central processing unit.
ln the first part of the work it is established the
necessary external logic circui ts for the microprocessor·.
The second part presente a simulator that executes
instructions given in binary form. The user ma~ define the me
mory, peripherals and interrupt system organization inside the
simulator.
Finally it is described the implementation of the com-
puter.
iv
, I N D I C E
Capítulos: P~ginas:
APRESENTAÇÃO • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 1
I O MICROCOMPUTADOR
I.l.
I.2.
I.4.
I.6.
Introdução
Processador
. . . . . . . . . . . . . . . . . . . . . . . . • • • • • • • • • • • • • • • • • • • • • • •
Memória
Entrada
. . . . . . . . . . . . . . . . . . . . . . . . . . . e Saida •••••••••••••••••••
Sistema de Interrupção ••••••••••••
-Conclusao ••.••••••••••••••••••••••
4
6
12
15
18
21
II O SIMULADOR
II.l. Introdução • • • • • • • • • • • • • • • • • • • • • • • • 25
II.2. Programa Principal•······•·•····•· 28
II.2.1 Módulos••••••••••••••••••• 28
II.2.2 Organização da Memória.... 32
II.2.3 Interrupções e
Entradas/Saídas ••••••• 35
II.3. Utilização do Simulador........... 41
II.3.1 Cartões de controle e
programa.............. 42
II.3.2 Interpretação dos resulta-
dos da simulação...... 45
II.4. Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . 47
V
Capítulos: Páginas:
III A REALIZAÇÃO
CONCLUSÃO
III.l.
III.2.
III.3.
III.4
Introdução • • • • • • • • • • • • • • • • • • • • • •
Projeto do microcomputador ••••••
50
52
III.2.1 O painel••••••••••••••• 53
III.2.2 Teclas • • • • • • • • • • • • • • • • • 57
III.2.3 Matriz Programável..... 59
Implementação •••••••••••••••.••• 62
III.3.1 Organização do protótipo 63
III.3.2 Programas de painel.... 67 ...
Conclusao ••••••••••••••••••••••• 72
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
BIBLIOGRAFIA , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Apêndices:
A
B
e
CIRCUITOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . COMO USAR O SIMULADOR • • • • • • • • • • • • • • • • • • • •
LISTAGENS ••••••••••••••••••••••••••••••••
81
98
103
1
A P R E S E N T A Ç Ã O
A integração de funções lógicas no inicio da década
de 60 libertou o projetista de circuitos do trabalho de mon
tagem dessas funções com componentes discretos. Desde então
a eletrônica digital teve um desenvolvimento espantoso com a
multiplicação das tecnologias de fabricação dos circuitos, ca
da uma trazendo novos progressos em termos de velocidade e de
densidade de integração.
A integração em larga escala (LSI-Large Scale Integra
tion), apanágio da tecnologia MOS (Metal Oxide Semiconductor),
permitiu a colocação num só circuito integrado de funções cada
vez mais complexas, como por exemplo, memórias a semiconduto
res de grande capacidade.
Foi a partir dessa tecnologia que surgiu o micropro
cessador, que consiste num conjunto de circuitos LSI, cada um
contendo uma parte importante de um computador digital, por
exemplo tôda a unidade aritmética e lógica ou mesmo a unidade
central de processamento (CPU - Central Processing Unit).
O impacto desses microprocessadores se verifica es
pecialmente em áreas antes dominadas pelo minicomputador e pe
lo sistema digital feito "sob medida" (special-purpose), tais
como controle de processo, controle de máquina, periféricos
2
de computador, m~quinas de calcular, instrumentação, terminais
inteligentes e em comunicações, por serem de baixo custo e ta
manho reduzido. Os sistemas de processamento montados com êsses
novos componentes foram chamados de microcomputadores.
Lançado em 1972 o INTEL 8008 foi um dos primeiros mi
croprocessadores vendidos no mercado. Constituido por apenas
um circuito integrado de 18 pinos, é uma CPU que trabalha em
paralelo sôbre palavras de oito bits, possui um repertório de
48 instruções e endereça até 16K palavras de memória.
~ste trabalho resulta do estudo aprofundado da 8008
e do microcomputador SIM8-01 da mesma companhia e tem por ob
jetivos:
- dar ao projetista de circuitos lógicos regras e mo
delos para a implementação de um sistema digital
baseado na 8008
~ - criar um suporte de programaçao para o projetista e
usudrio da 8008 a fim de facilitar a implementação
~ e correçao dos programas a serem colocados em ROM
(Read Only Memory) e outras memórias
O trabalho está dividido em três capitules. Inicial-
~ mente propoe-se uma arquitetura para um microcomputador que
usa a 8008 indicando os sinais de controle necessários ao seu
funcionamento bem como a maneira de gerá-los por circuito. Al-
3
~ gumas regras sao estabelecidas para o projeto da memória, das
entradas e saidas, e do sistema de interrupção.
No segundo capitulo descreve-se um programa em PL/1
que simula a 8008 permitindo ao usuário a definição da orga
nização da memória, das entradas e saidas, e das interrupções,
que compoem o microcomputador.
O terceiro capitulo trata da implementação real de
um microcomputador usando o modelo da primeiro capitulo.
, ~ E importante acentuar que a compreensao destes capi-
tules depende da leitura prévia do manual da 8008, referencia
básica de toda a tese. Não se pretendeu que êste trabalho fosse
outro resumo da 8008. Apenas os aspectos menos claros do manual
é que serão tratados nas discussões.
4
, C A P I T U L O I
O MICROCOMPUTADOR
I.l - INTRODUÇÃO
A arquitetura a ser descrita para o microcomputador,
resultou da experiência adquirida nos tlltimos anos em nossos
laboratórios de circuitos digitais e da presente (1972) situa
ção do mercado brasileiro de eletrônica.
A quase totalidade dos circuitos digitais encontrados
nos revendedores das grandes cidades são funções lógicas sim
ples. Rara.mente se encontram circuitos LSI. Por essas razões é
que o chaveamento de informações que convergem para um mesmo
ponto é tradicionalmente feito utilizando-se circuitos com sai
da em coletor aberto, ao contrário dos americanos que podem se
dar o luxo de usar multiplexadores ou lógica a três estados.
A arquitetura repousa portanto sôbre uma técnica já
bem dominada que é a de barras de coletor aberto. Esta escolha
resultou em que apenas a 8008, a memória e os inversores de bai
xa potencia, necessários ao "interface" J.vI0S-TTL, fossem buscados
fora do Brasil.
A descrição que se segue trata os circuitos do ponto de
5
vista estritamente lógico. Somente nas conclusões deste capí
tulo é que serão discutidos os problemas prdticos que poderão
ocorrer na implementação.
-çao:
A fim de evitar confusão usar-se-d a seguinte conven-
microprocessador - a 8008
processador - a 8008 e o conjunto de circuitos neces
s~rios ao seu funcionamento
microcomputador - o processador com a memória, entra
das e saidas, e o sistema de interrupção
6
I.2 - PROCESSADOR
A organização de um processador que usa a 8008 é a da
figura 1.1. A barra de dados admite fluxo de informação em am
bos os sentidos. As informações que saem da 8008 são colocadas
na barra de memória, ou barra M, que é a continuação lógica da
barra de dados. Ao contrário, a barra de entrada, ou barra E,
por onde chegam as informações, estd isolada por meio de porta
lógica que serd amostrada em T3A, quando a 8008 estiver pronta
para receber o octeto de bits. Os registros RL e RH armazenam
durante os ciclos PCI,PCR.e PCW,as partes baixa e alta do en
dereço, respectivamente. Para o ciclo de entrada e saida}(PCC),
RL alimenta a barra de saida, ou barra S, e RH contem o nilinero
do periférico.
Os sinais de controle da 8008 - "status","sync",CCl e
eco (os dois ~ltimos obtido através de RH) - e a fase W2 do re
lógio mestre são utilizados para a geração de todos os sinais
necessários ao sistema (controle de escrita na memória, sincro
nização da interrupção, estados, ciclos, controle de multiplexa
gem na barra de entrada, etc.).
~ As figuras 1.2 e 1.3 mostram os circuitos de geraçao
desses sinais e a figura 1.4 um diagrama de tempo que indica o
relacionamento entre os sinais mais importantes: ,
W22 - a quarta fase do relógio. E o sinal mais impor-
7
tante, sendo usado para a obtenç~o de quase todos
os outros.
STROBE LO - carrega a palavra presente na barra M em RL
STROBE HI - carrega a palavra presente na barra M em RH
PCI,PCR,PCW,PCC - os ciclos do processador, obtidos pe-
la decodificação de CCO e CCl.
Tl,T2,T3,T4,T5,TlI,WAIT,STOP - os estados do processa
dor, obtidos pela decodificação de SO, Sl e S2.
R/W - comando de escrita em memória do dado presente na
barra M. Só ocorre durante o ciclo PCW.
T3A - amostra o dado presente na barra E quando a 8008
está recebendo informações.
Esses sinais serão utilizados na obtenção dos sinais de
multiplexagem das três entidades básicas da máquina ligadas à
barra E (memória, periféricos de entrada e sistema de interrup
ção) e dos sinais de chamada a periféricos de saida ligados à
barra S. Serão chamados de LIB (libere) no caso da barra de en
trada e CARR (carregue) no caso da barra de saida. Os LIB são
tais que apenas um poderá ocorrer (nivel l lógico) num dado ins
tante. Os CARR não possuem esta restrição, porém na prática, se
rão também mutuamente exclusivos. Isto é devido ao fato que a
barra E é do tipo coletor aberto (as barras Se M não são do
tipo coletor aberto).
barra E
T3A
L. 1
ROY
8
18008
status ,sync, i, r
LOGICA
eco CCl
s
barra M
L--------t~R/W
•---------•estados
•-------------ciclos
fig. 1.1
Tl
T 11
T2
T3 me
SYNC
P'cw
eco CCl
so S 1
S2
/ -dec
" /
-de, -
-
"
9
T3A
- PCI - PCR -- PCW __ PCC
---------~
fig. 1.2
Tl T 11 T2
WAIT T3 T4 TS STOP
10
T3 f/J2
SYNC s R/W
PCW R
1'22
SYNC
L.l.
,---....1R INT
T 1 1
STROBE LO---«:jl--✓
,-------1~----_1..!IN~TERROMPIDO
T1
STROBE--------_J H 1
fig. 1.3
l1J 1 -11J2
SYNC
11J22
Tl
T2
T3
STROBE.....b.Q
STROBE HI
T3A
ciclo
R/W
-n n
t ' n
n I
n n ________ n
fig. 1.4
L
1--' 1--'
12
, I.3 - MEMORIA
A memória principal do microcomputador é organizada
segundo as necessidades do usuário e geralmente será do tipo
a semicondutor. Normalmente haverá uma divisão por módulos (con
sidera-se módulo de memória aquela que já tiver circuito próprio
de decodificação de enderêço) com a parte de ROM nos endereços
mais baixos. A decodificação da parte alta do enderêço é função
do tamanho dos módulos de memória utilizados; a parte alta do
enderêço é usada para selecionar o módulo. No caso de uma sub
divisão uniforme da memória, ie, módulos de mesmo tamanho, a
organização será a da figura 1.5.
A palavra lida em memória só será colocada na barra E
durante LIB MEM, já que todos os módulos são isolados desta bar
ra por uma porta lógica (figura 1.6). No caso de RAM (Random
Access Memory) o dado a ser escrito está na barra M.
O sinal LIB MEM existirá quando se verificarem as se
guintes condições:
- ciclos PCI ou PCR
- processador não interrompido
No caso de memórias lentas há a necessidade de sincro
nização do processador a elas. Para isto existe o sinal de RDY
que poderá estar em 1 ou O lógicos, significando que o proces
sador tende a passar de T2 a T3 diretamente ou tende a entrar
13
no estado de WAIT após T2, respectivamente. No primeiro caso,
o módulo de memória lenta deverá forçar RDY a O, inibindo as
sim a passagem de T2 para T3; e mantê-lo nesse nível até o fim
da operação de leitura ou escrita. No segundo caso, RDY deverá
ser levado a 1 quando o acesso tiver sido terminado, fazendo
com que o processador deixe o estado de WAIT passando a T3.
A capacidade de memória pode ser aumentada por meio de
instruções de entrada e saida. Pode-se concatenar registros de
8 bits aos 14 bits jd existentes, carregando-os por meio de ins
truções OUT. Isto permite uma expansão da memória praticamente
ilimitada.
endereço
RH e RL
{14 bits)
{14-n) linhas para identificação do módulo
decod
n linhas de endereçamento (n =14)
- ( 14-n) linhas de seleçao para os 2 módulos possfveis
cs
MO
cs
Ml
CS - ''chip select''
cs M
214-n
fig .. 1.5
~ .j:>,
15
I.4 - ENTRADA E SAIDA
Toda comunicação de entrada e saida é feita durante o
ciclo PCC. Os periféricos de entrada estão ligados à barra E a
través de portas lógicas que serão amostradas pelos sinais LIB
INP correspondentes. Os periféricos de saida ligados à barra S
serão carregados pelos sinais CARR OUT correspondentes (figura
1.6).
O sinal LIB INP 'nwnero do periférico', existirá quan
do se verificarem as seguintes condições:
- ciclo PCC
- chamada ao periférico de entrada especifico (resul-
ta da decodificação do código contido na instrução
INP)
O sinal CARR OUT 'nwnero do periférico', existirá quan
do se verificarem as seguintes condições:
- ciclo PCC
- chamada ao periférico de saida especifico (resulta
da decodificação do código contido na instrução OUT)
A decodificação do código de periférico, presente em
RH, tem duas soluções extremas: total decodificação do código
junto ao processador com saida de linhas individuais ou deco
dificação local, ie, no próprio periférico. A escolha de uma
solução entre esses dois extremos dependerá do nwnero e tipo
16
dos periféricos, bem como da distância entre êles e o processa
dor.
Como no caso da memória, o processador pode ser sincro
nizado com os periféricos. As explicações dadas anteriormente sô
bre o sinal de RDY são válidas aqui.
Para os periféricos de entrada, numerados de O a 7, a
palavra presente na barra S pode ser usada como comando. O dado
a ser enviado ao processador será colocado na barra E. Para os
periféricos de saida, numerados na base octal de 10 a 37, o da
do está na barra S, enquanto que a barra E permanecerá neutra.
17
MEM.
LIB MEM
R/W
LI B I NP O
CARR OUT 10
LIB INP 7
LI B I NT .___ CARR OUT 37
barra E
PROCESSADOR
fig. 1.6
18
I.5 - SISTEMA DE INTERRUPÇÃO
Para o projeto do sistema de interrupção dispõe-se de
uma linha de interrupção (L.I.),por onde será enviado o sinal
que irá interromper a 8008, e a barra E onde será colocada a
instrução. A ligação a essa barra é feita através de porta ló
gica (figura 1.6), amostrada por LIB INT, que ocorre nas seguin
tes condições:
- ciclo PCI, ou PCR no caso de instruções longas (duas
ou três palavras)
- quando o processador estiver interrompido
Em alguns casos, tipicamente quando a instrução for
longa, poderá haver a necessidade de mais outra condição, além
das duas citadas acima, gerada pelo próprio sistema de interrup
ção, a fim de diferenciar cada octeto da instrução longa.
Um sinal poderá ser colocado em L.I. sempre que a ~1-
tima interrupção tiver sido processada (uma interrupção é con
siderada já processada durante ou após os estados T3, T4 ou T5
do ~ltimo ciclo da instrução relativa a esta interrupção). Os
sinais que não respeitarem êste limite serão ignorados pelo pro
cessador.
A primeira palavra da instruçãoâeve estar presente na
barra E durante o primeiro ciclo PCI após a colocação do sinal
em L.I •• Os eventuais endereços ou dados imediato (caso das'ins-
19
truçÕes longas) deverão ser colocados a sua vez na barra E nos
sucessivos ciclos PCR. A figura 1.7 ilustra a sequência de even
tos.
Em termos da 8008 há a necessidade de sincronização dos
sinais de interrupção, que poderão chegar aleatoriamente no tem
po. Essa função será atribuida a um circuito sequencial que ar
mazenará o sinal (de qualquer largura) enviando-o no momento cer
to para a 8008.
O reconhecimento da interrupção pela 8008 implica na
substituição de Tl por TlI em todo~ os ciclos da instrução (is
to é válido para qualquer uma das 48 instruções da 8008). Além
disso, o processador fornecerá um sinal (INTERROMPIDO) que per
manecerá ligado durante todo o processamento da interrupção.
Não
Não
Não
20
gerar
interrupç.
colocar palavra em bE
fig 1.7
fim
21
I.6 - CONCLUSÃO
A utilização da barra do tipo coletor aberto com a
8008 oferece como vantagem a modularidade, ie, a colocação de
um novo circuito sôbre a barra E não implica em alterações no
sistema original. A desvantagem é a limitação inerente ao co
letor aberto quanto ao n-wnero de circuitos que podem ser co
nectados à barra (normalmente 25 para o integrado 7401 - 2 in
put positive nand gate with open-collector output - quando se
garantir que apenas um circuito estará ativo de cada vez e que
a barra termina numa porta lógica com FAN-IN igual a 1 ). Po
risso é aconselhável ligar as saidas de todos os módulos de me
mória na entrada de uma só porta lógicacomsaida coletor aberto
(figura 1.6). Isto,e o fato de só existirem no máximo 8 perifé
ricos de entrada,permitirá ao sistema de interrupção o acesso à
barra E através de várias portas lógicas, cada qual com seu si
nal de amostragem LIB INT.
-A barra S nao precisa ser do tipo coletor aberto, po-
rém,como nela estarão ligados todos os periféricos de saida e
todo o endereçamento da memória,é absolutamente necessário que
o registro RL tenha alto FAN-OUT.
Cuidado também deve ser exercido na barra M, pois aso
ma dos FAN-IN dos módulos de memória (na entrada de dados) não
deve ultrapassar o FAN-OUT do circuito que a alimenta.
22
O FAN-OUT normal de 10 (familia TTL) para o RH ge
ralmente será suficiente.
Os esquemas apresentados para o processador foram pro
jetados para o caso geral de utilização da 8008. Em aplicações
particulares, alguns circuitos poderão ser eliMinados. A sin
cronização do sinal de interrupção, por exemplo, poderá serdes
necessária se o sinal em L.I. tiver largura suficiente para in
terromper a 8008. Também, o circuito que gera R/W só é necessá
rio em sistemas que utilizem memória RAM.
A organização da memória merece cuidados especiais de
vido ao carregamento em tempos diferentes dos registros RL e
RH, e ao fato que nas memórias MOS o tempo de acesso após a mu
dança das linhas de endereçamento (supondo o módulo de memória
já selecionado) é bem maior que o tempo de acesso após a sele
ção do módulo de memória (supondo o enderêço já presente nas li
nhas de endereçamento). Portanto, deve-se primeira.mente gerar os
niveis para as linhas de endereçamento e depois o sinal que sele
ciona o módulo. Isso pode ser realizado com o processador, se os
bits de endereçamento estiverem totalmente contidos em RL, quando
então as linhas terão tempo (entre STROBE LO e STROBE HI) para se
estabilizar até a seleção do módulo de memória, obtida pela deco
dificação (que é rápida no caso) dos bits presentes em RH, e mais
aqueles de RL que não participam da ativação das linhas de en
dereçamento. Isto implica num tamanho ótimo do módulo de memória
23
de 256 palavras (n=8 na figura 1.5), já que a utilização de módg
los menores representa um aumento na l!rea ocupada pela memória.
A utilização, nas instruções INP, do valor do acumula
dor, é particularmente ~til para a leitura de condições relati
vas a um periférico ou para comandos especiais. Por exemplo, po
de-se saber se uma fita está ocupada, comandar o enrolamento r~
pido da fita, etc. Isto é feito precedendo a instrução de INP de
um LAI que carrega um código que ser~ interpretado pelo perifé
rico, e eventualmente introduzindo uma instrução de teste sôbre
o octeto lido após a instrução de INP.
A existência de diversas partes do sistema com capaci
dade de interrupção cria o problema da coincidência de sinais
em L.I •• Um esquema de prioridade deverá ser estabelecido, se
necessário, entre os elementos capazes de interromper a 8008;
pode ser uma simples fila (FIF0) ao lado do processador, que
armazena as instruções que chegam para tratamento sob interrup
ção, ou alguma solução mais complexa que envolva uma hierarquia
entre êsses elementos.
Uma das particularidades do processador é o fato de
não fazer distinção durante o ciclo PCR entre instruções ime-
diatas e de referencia memória, ie, fil e ~ RH nao sabem se o
enderêço recebido no ciclo de leitura é proveniente do PC ou
de H concatenado com L (os dois ~ltimos registros da 8008).
24
~ Durante o processamento normal isto nao causa problema, pois é
uma leitura na memória que é envolvida nos dois casos. Mas sob
interrupção implica que se deve optar durante PCR, ou pela lei
tura em memória (caso da instrução curta LrM), ou pela leitura
do sistema de interrupção (como é o caso de instruções longas
do tipo LrI). A primeira opção é inadequada,pois não permite
instruções de chamada a subrotina, que, como as instruções ge
referência imediata, são instruções longas"(o sistema de inter
rupção enviaria à 8008 o primeiro octeto da instrução CAL du
rante PCI, e depois a 8008 leria a memória,endereçada pelo PC,
para obter o enderêço da subrotina, com resultados imprevisí
veis). Só resta a opção de se restringir as instruções que po
dem ser resolvidas sob interrupçãoao conjunto que não inclui
instruções de referência memória com leitura (a escrita é per
mitida,pois acontece no ciclo PCW). Isto é perfeitamente tole
r~vel para a maioria dos casos. Instruções associadas a inter
rupções são tipicamente CALL, RESTART e HALT. A eliminação das
instruções LrM do repertório daquelas que podem ser resolvidas
sob interrupção poderia ter sido evitado pelos engenheiros da
INTEL se durante a resolução da instrução LrM o ciclo PCR apa
recesse com Tl em vez de TlI. Infelizmente êste não é o caso.
25
, C A P I T U L O I I
O SIMULADOR
II.l - INTRODUÇÃO
O simulador escrito em PL/1 tem como finalidade o de
senvolvimento e correção de programas para o microcomputador.
Uma sequencia de instruções em linguagem de máquina da 8008 é
fornecida ao simulador que lista como resposta o estado da 8008
a cada passo da resolução do programa.
Entradas e saidas, e interrupções podem ser definidos
pelo programador dentro do programa principal em posições pre
estabelecidas.
O estabelecimento da imagem da memória é feita por
meio de cartões de controle colocados antes dos dados.
Como outra opção pode-se controlar a impressão dos re
sultados informando ao simulador quais as instruções que apare-
~ cerao na listagem final.
Neste capítulo, ao contrário do primeiro, dividir-se-á
a memória em páginas. Em princípio êste novo conceito e módulo
de memória se confundem; um módulo seria uma página. Mas se no
projeto do computador não se pode abstrair dos tamanhos dos mó
dulos por causa da decodificação, no simulador se fará uma
26
divisão uniforme do vetor memória a fim de facilitar a programa
ção PL/1. As páginas maiores serão portanto subdivididas em meno
res com consequencia que um módulo da máquina real corresponderá
a uma ou mais páginas dentro do simulador.
Os, tempos envolvidos na simulação, como o de instrução,
de acesso à memória e outros, serão medidos com a unidade de tem
po do simulador - o per!odo do sinal de sincronismo gerado pela
8008 (entre 2 e 3 microsegundos). Não serão admitidos tempos com
parte fracionária, devendo normalmente se arredondar o valor para
o inteiro imediatamente superior.
Inicialmente descreve-se as características principais
do simulador e em seguida a sua utilização. A listagem do progra
ma principal se encontra no apêndice C •
A fim de evitar confusão usar-se-á a seguinte convenção:
programa principal ou simulador - lista de instruções
PL/1 que realizam a simulação do microcomputador.
vetor memória - vetor de 16384 palavras de 8 bits uti
lizado como memória pelo microcomputador simulado. A
Este vetor é subdividido em páginas.
programa - lista de instruções 8008 armazenada na memó-
ria.
imagem da memória - máscara do vetor memória para a de
finição de
27
.tipo de cada página, ie, se é ROM ou RAM
.tempos de acesso, leitura ou escrita, a cada
página
.comportamento do sistema no caso de endereça
mento de página inexistente
ponto de quebra - par de endereços que definem o iní
cio e fim da impressão dos resultados.
28
II.2 - PROGRAMA PRINCIPAL
A primeira função importante do simulador é a medi-
~ çao do "tempo real" de processamento da 8008. Isto é feito a-
través da vari~vel NUMERO_DE_ESTADOS.
Inicializada em zero, NUMERO_DE_ESTADOS será incre
mentada a medida que instruções forem resolvidas (tempos fi
xos dentro' do programa principal) e a cada chamada à memória,
às entradas e saídas, e ao sistema de interrupção (tempos de
finidos pelo usuário). A introdução desses tempos no programa
principal se faz com instruções PL/1 do tipo
NUMERO_DE_ESTADOS = NUMERO_DE_ESTADOS + tempo ;
II.2.1 - Módulos
O programa principal é subdividido em módulos que con
sistem numa série de instruções PL/1 que realizam uma função es
pecifica dentro do simulador. Há dois conjuntos de módulos: os
processados uma só vez e os utilizados repetidas vêzes durante
o processamento.
O primeiro conjunto, que faz a inicialização do simu
lador, é formado pelos seguintes módulos:
módulo de declaração e inicialização de variáveis
nêle estão declaradas tôdas as variáveis utili-
29
zadas dentro doprogramaprincipal, bem como even
tuais valores iniciais.
módulo de leitura dos cartões de controle
leitura dos cartões de controle fornecidos pelo
usuário para o estabelecimento da imagem da memó
ria e pontos de quebra dentro do programa.
módulo de carregamento dos programas
os programas do usuário são carregados em posições
do vetor memória por êle definidas, conforme ai
magem de memória anteriormente estabelecida.
No outro conjunto encontram-se os módulos que simulam
o funcionamento da 8008: interrupção, ciclos da máquina, deco
dificação e resolução das instruções (a uma instrução pode cor
responder mais de um módulo).
As figuras 2.1 e 2.2 mostram a sequencia dentro do si
mulador para o processamento de cada instrução do programa,com
ou sem interrupção.
r-----------, MODULO PCI
desliga
interrupção
controle da
impressão
buscar instru
1
si
30
r-----------, MODULO INTERRUPT 1
verificação da
polfticas de
interrupção
1 i ga r
interrupção
buscar instru-
1
çao na memóriai--..--..... ---~ção no sist. de
interrupção
____________ J fig 2.1
31
N
s ,-------------
MODULO PCR 1
lu,scar resto
da instrução
na memória
1 1 1 1 1 1
---------------
: MODULO_INTERRUPT i 1 1
1 1
1 1 1
1 1 1 1
1
buscar resto d
instrução no
sist. de inter
L ___________ _j
resolução da instrução com possíveis
chamadas aos modules de ciclo
(PCR,PCW,PCC)
fig 2.2
32
II.2.2 - Organização da memória
A organização da memória do microcomputador simulado
será definida por três variáveis dentro do programa principal:
MEM - o vetor memória de 16384 palavras de 8 bits
PAG - o tamanho da página
IMAGEM_MEMORIA - um vetor estrutura d~ 16384/PAG po
sições, ie, o n1Ímero de páginas que podem exis
tir
Os ramos da estrutura IMAGEM_MEMORIA são TIPO (indi
ca se a página é ROM, RAM, ••• ), CARREGAMENTO (indica se a pá
gina existe e portanto passível de ser carregada com os progra
mas pelo módulo de carregamento), TEMPO_LEITURA e TEMPO_ESCRITA.
Estabelecido o valor de PAG, o programa principal mon
tará uma estrutura como a da figura 2.3 ( é apenas um exemplo),
ie, cada elemento de IMAGEM_MEMORIA apontando para uma página
(direta ou indiretamente) e a definindo. Cada posição do vetor
conterá uma das seguintes configurações:
ROM 1 tl te - é uma página ROM com tempos de acesso tl
e te
RAM l tl te - é uma página RAM com tempos de acesso tl
e te
ROM O tl te - é uma pagina inexistente. Quando endere
çada pelo programa funciona como ROM com
tempos de acesso tl e te.
33
EQU O tl te - é uma página inexistente. Quando endere
çada pelo programa, equivale a chamar uma
página existente. tl e te servem como a
pontadores indiretos para esta página.
~~~ O tl te - é uma página inexistente. Quando endere
çada pelo programa, a simulação é cance
lada. O conteudo de TEMPO_LEITURA e
TEMPO_ESCRITA é indeterminado.
Para cada acesso à memória haverá o estabelecimento do
enderêço (END_MEM), do n'Wllero da página .que contem o enderêço
(PAG_MEM) e a verificação do tipo de página. Permitido o acesso,
o'Telógio 11 NUMERO_DE_ESTADOS será acrescido do valor tl ou te,
obtidos direta (caso de ROM e RAM) ou indiretamente (caso de EQU).
Tentativas de escrita em ROM não serão levadas em conta (memória
permanece inalterada), prosseguindo a simulação; um aviso de vio
lação de memória será impresso na listagem final ao lado da ins
trução que a causou. O acesso a uma página inexistente com funcio
namento ROM, produzirá sempre uma configuração de bits definida
previamente pelo usuário.
1-1) ~~
1\) . \..>J
IMAGEM MEMORIA
ROM
ROM o
MEM
2
Pagina O
Pagina 1
Pagina 16384/PAG-1
vi ..i:::,.
35
II.2.3 - Interrupções e Entradas/Saidas
O programador dispõe de três áreas dentro do programa
principal onde pode introduzir instruções PL/1: no fim do módu
lo de declaração das variáveis, no módulo de interrupção e nas
partes do módulo de entrada/saida que tratam do funcionamento
do periférico.
Qualquer nova variável criada pelo programador, para
utilização nas duas ~ltimas áreas, pode ser declarada e inici
alizada no primeiro módulo do programa principal.
No módulo de interrupção pode-se estabelecer a ocor
rência de interrupções e as instruções a elas associadas. Ao
programador cabe definir:
- quantas interrupções diferentes existem
- a política de aparecimento de cada uma delas
- a instrução correspondente a cada interrupção
Esses três itens aparecem no módulo da seguinte maneira:
MODULO_INTERRUPT: • . •
INTERRUPCAO_i: [cartões de definição da política]
IF politica THEN DO;
(cartões de definição da politica]
INTERRUPT = lB;
VALOR_DA_INTERRUPCAO = i;
• • • • •
36
GOTO MODULO PCI(f;
INT_PCI(i): REGI= 'xxxxxxxx'B;
[ NUMERO DE ESTADOS=NUMERO DE ESTADOS+t . ,•] - - - - pci GOTO MODULO_DECODIFICACAO;
[INT_PCR_MM(i): REGB = 'bbbbbbbb'B;
REGA= 'aaaaaao.a.'B;
rNUMERO DE ESTADOS=NUMERO DE ESTADOS+t •,~ L: - - - - pcrmm~
GOTO MODULO_J_C@;]
[rNT_PCR_I(i): REGB = 'bbbbbbbb'B;
r NUMERO DE ESTADOS=NUMERO DE ESTADOS+t . :1, L - - - - pcriLl GOTO LABELl ;]
END;
[cartões de definição da política]
GOTO MODULO_PCI@;
onde i é o nwnero escolhido pelo programador para
a interrupção.
As instruções PL/1 envolvidas por colchetes não são
obrigatórias ou aparecem em casos particulares. Inicialmente
algumas instruções PL/1 são usadas para o estabelecimento da
política a ser testada e de eventuais condições ligadas a ela
(é o grupo de cartões que será chamado CDPl). Um teste é feito
sôbre a política para saber se é verdadeira, ie, se haverá a
interrupção. Em caso negativo, antes de examinar a próxima
( i + 1 ), pode-se incluir mais alguns cartões que prepara-
37
~ ~ rao a política para o futuro,sabendo que nao ocorreu desta vez
( é o grupo de cartões que será chamado de CDP3). Em caso afir
mativo entra-se num DO privativo daquela interrupção. Nova.men
te pode-se incluir cartões que prepararão a política para o fu
turo>sabendo que ocorreu a interrupção (é o grupo de cartões que
será chamado de CDP2). A variável INTERRUPT passa a indicar que
a 8008 está interrompida e VALOR_DA_INTERRUPCAO identifica a
interrupção, necessário para a busca da instrução.
Tudo está pronto; o simulador,em vez de ir~ memória
buscar a primeira palavra, desviará para INT_PCI(VALOR_DA_IN
TERRUPCAO) onde se encontra êste octeto {na listagem acima in
dicado como xxxxxxxx, e que deve ser definido pelo usuário).
Eventualmente pode haver um retardo na busca da instrução e
isto é simulado por um acréscimo na variável NUMERO_DE_ESTADOS.
No caso de instruções longas, o simulador voltará ao módulo de
interrupção em INT_PCR_I(VALOR_DA_INTERRUPCAO) para instruções
de referencia imediata ou em INT_PCR_MM(VALOR_DA_INTERRUPCAO)
no caso de instruções JMP e CAL. Para êste tlltimo, REGE conterá
a parte baixa do enderêço e REGA a parte alta.(na listagem aci
ma indicados como bbbbbbbb e aaaaaaaa, e que devem ser
definidos pelo usuário). Como em INT_PCI, retardes podem ser
introduzidos em qualquer um dos dois.
38
No módulo de entrada/saida o programador dispõe de 32
áreas que correspondem a cada uma das 8 instruções de entrada
e 24 de saida. Cada uma dessas áreas tem como primeiro cartão
MODULO_INP(i): ou MODULO_OUT(i): , onde i é o n'limero dope
riférico, e como ~ltimo GOTO MODULO_PCI; • Nestas áreas pode-se
introduzir qualquer sequência de instruções PL/1 que não violem
a integridade do programa principal.
Para as áreas MODULO_INP(i): , o programador tem a
seu dispor a variável OUT_LATCH que contém o valor do acumu
lador (o registro A da 8008). OUT_LATCH pode ser utilizado pe
lo periférico de entrada simulado, como um comando especial. O
brigatoriamente, a pen~ltima instrução deve ser a atribuição à
variável ACUMULADOR(l) (o índice 1 é importante) de um deter
minado valor (é a simulação da leitura do dado pela 8008).
Para as áreas MODULO_OUT(i): , novamente tem-se
OUT_LATCH como variável disponível ao programador. Conterá o
dado que está sendo enviado ao periférico. Ao contrário de
MODULO_INP(i): , é proibido a utilização da variável
ACUMULADOR(l).
Como no módulo de interrupção, pode-se simular os re
tardos envolvidos na chamada ao periférico. Esse tempo pode ser
fixo ou calculado antes da instrução que altera a variável
NUMERO_DE_ESTADOS.
39
No caso de periféricos que tem rotinas de simulação
semelhantes, pode-se juntá-las numa área só e usar a variável
VALOR_DO_PERIFERICO, que contem o n1Ímero do periférico chamado,
para diferenciar particularidades inerentes a cada um dos peri
féricos. Invariavelmente isto traz uma redução de cartões dentro
do programa principal.
Em resumo, tem-se as áreas MODULO INP(i): e
MODULO_OUT(i): programadas da seguinte forma:
• • • •
MODULO_INP(j): (!10DULO_INP(k)J
[ cartões de definição do periférico]
[NUMERO_DE_ESTADOS = NUMERO_DE_ESTADOS + tin;J
ACUMULADOR(l) = dado ;
GOTO MODULO_PCI;
• . MODULO_OUT(m): (!10DULO_OUT(n):]
[ cartões de definição do periférico]
[NUMERO_DE_ESTADOS = N1J!vlERO_DE_ESTADOS + tout;]
GOTO MODULO_PCI;
. • . .
onde dado será O (OOOOOOOOB) ou 255 (11111111B)
(isto depende do circuito e da barra E) quando o periférico
40
inexistir. Nêste caso os cartões de definição do periférico
não serão mais necessários.
41
II.3 - UTILIZAÇÃO DO SIMULADOR
Ao usuário é dada a possibilidade de definição do tipo
e tempos de acesso das páginas do vetor memória. Isto é feito
por meio de cartões de controle,colocados no inicio dos dados,
através dos quais se estabelece a imagem da memória.
O primeiro cartão define o tamanho da página (cartão
PAG) e os seguintes as características de cada página (cartões
TIPO). Entretanto,a sua utilização é opcional, podendo o usuá
rio deixar a cargo do programa principal a inicialização dai
magem da memória.(o que os americanos chamam de "default").
Para limitar o tamanho da listagem final há o cartão
de estabelecimento de pontos de quebra (cartão IMP), que indi
carão quais as instruções da memória que devem aparecer nos re
sultados.
O formato dos cartões de controle (PAG, TIPO e IMP)
e dos dados está descrito no apêndice B.
O resultado da simulação consiste na impressão does
tado interno da 8008 antes e após a resolução de cada instrução.
42
II.3.1 - Cartões de contrôle e programa
A primeira opção existente é a definição do tamanho da
página, que deverá ser um n"dmero que é uma potência de dois e
não poderá ultrapassar 16384 que é a capacidade máxima de ende-A
reçamento da 8008. Este valor deve ser igual ao tamanho da me-
nor página existente na máquina real e será a unidade de divi
são da memória. As páginas maiores serão subdivididas (e isto
é possível já que o tamanho de tôdas as páginas é uma potência
de dois) para se adaptar a essa unidade. Esta operação tem como
resultado a divisão da memória em páginas de mesmo tamanho. Os
cartões de controle para definição da imagem da memória,que se
guem o cartão PAG, deverão se referir ao nmnero das páginas,
quevariam de O (primeira página) até 16384/PAG-l.
A não inclusão do cartão PAG implica na utilização pe
lo simulador de páginas de 256 palavras (PAG = 256) e, portanto,
na existência de 64 páginas numeradas de O a 63.
Como outras opçÕes,pode-se definir o tipo da página:
ROM, RAM e inexistente. As inexistentes podem ter quatro com
portamentos diferentes ao serem endereçadas:
- lê ou escreve numa página que existe
- só lê 11111111 (páginas tipo ROM/lJil.1)
- só lê 00000000 (páginas tipo ROM/ZER)
- acesso proibido; para a simulação
43
O primeiro comportamento ocorre na prática quando se
simplifica a decodificação do enderêço (tipicamente em sistemas
com pouca memória). Geralmente essa simplificação é feita des
prezando-se os bits de mais alta ordem; assim 11000100110011 e
01000100110011 correspondem a uma mesma posição de memória.
Se não se simplificar a decodificação, chega-se aos
dois comportamentos seguintes. A máquina tentará ler uma pá
gina que não existe e amostrará o que está na barra de entra
da, neste momento em estado neutro, que pode ser 11111111 ou
00000000 dependendo dos circuitos utilizados.
O usuário só poderá definir os três primeiros casos
ficando os não definidos com acesso proibido (isto só vale quan
do o usuário usa pelo menos um cartão TIPO).
Além da informação de tipo pode-se definir no cartão
TIPO, tempos de acesso a páginas do tipo ROM, RAM, ROM/UM e
ROM/ZER. Não se deve esquecer entretanto que esses tempos devem
estar na unidade de tempo do simulador que é o período do sin
cronismo. Se uma memória tiver o tempo de escrita igual a 5,5
microsegundos (pior caso) e o sincronismo tem um período igual
a 2,1 microsegundos, o TEMPO_ESCRITA para esta página será
r 5, 5 1 2, 11 = 3 •
A não utilização de cartão TIPO implica na definição
de uma memória de 16 K palavras do tipo RAM com acessos nulos e
44
dividida em 16384/PAG p~ginas.
Os programas do usuário para o simulador devem estar
em binário e serão carregados em posições de memória determi
nadas pelo próprio usuário. Esses programas serão colocados a
pós o cartão BRANCO.
O apêndice B mostra como organizar os cartões de da
dos (controle e programa) e descreve os formatos.
45
II.3.2 - Interpretação dos resultados da simulação
O resultado da simulação d uma s~rie de linhas que
correspondem à execução de instruções pela 8008. As linhas es
tão divididas em 18 campos, com informações sôbre o processa
mento.
Da esquerda para direita tem-se:
- um campo para informação do nível do PC
- um campo para o conteudo do PC naquele nível
- um campo para o nome da instrução que será execu-
tada ( a primeira palavra da instrução está no en
derêço contido no campo anterior)
- quatro campos para as condições C, Z, Se P, após
a execução da instrução
- sete campos para os registros A, B, C, D, E, H e L,
já modificados pela instrução
- um campo para o valor da concatenação dos registros
H e L (os dois bits mais significativos de H são des
prezados)
- um campo para informações gerais: PULA, NAO PULA
(para instruções JUMP, CALL e RETURN condicionais)
e VIOL MEM ( a violação de memória ocorre quando se
tenta escrever em ROM)
- um campo usado pelas instruções de referência ime
diata e à memória; o campo mostra o valor lido
- um campo para o tempo "real" de processamento
46
A fim de evitar listagens muito compridas, pode-se
limitar, através de pontos de quebra ("breakpoints"), uma re
gião da memória, que conterá as instruções que poderão ser im
pressas. As instruções,cuja primeira palavra não estiver con
tida dentro dos limites estabelecidos pelos pontos de quebra,
serão executadas normalmente, mas não aparecerão nos resulta
dos (inexistência da linha).
A determinação dos pontos de quebra é feita pelo car
tão IMP, que deve vir antes do cartão BRANCO. Até 7 pares de
endereços (os limites mínimo e máximo) poderão ser definidos.
A não inclusão do cartão IMP implica em que tôdas as instruções
~ executadas pela 8008 aparecerao na listagem dos resultados.
As instruções sob interrupção são privilegiadas, a
parecendo nos resultados independentemente dos pontos de que
bra. Diferencia-se as instruções executadas normalemente da
quelas sob interrupção, pelo fato que nas ~ltimas não aparece
o valor do nível e do conteudo do PC, ficando os dois campos
em branco.
Maiores detalhes sôbre o cartão IMP encontram-se no
apêndice B.
47
II.4 - CONCLUSÃO
O programa principal é modular no sentido que os mó
dulos tem funções bem definidas dentro do programa principal.
No caso dos módulos de simulação da 8008 a modularidade signi
fica também que a posição entre êles é irrelevante.
O nrunero m~ximo de interrupções que é possivel definir
dentro do programa principal é dado pelo tamanho dos vetores ,
"label" INT_PCI, INT_PCR_I e INT_PCR_MM. E claro então, que
para aumentar o nrunero de interrupções basta alterar o cartão
de declaração dessas três variáveis.
~ Uma critica que pode ser feita à programaçao do módu-
lo de interrupção é uma inerente hierarquia entre as interrup
ções, mais especificamente, as primeiras examinadas, serão tra
tadas imediatamente, em detrimento das seguintes, mesmo que
essas rlltimas tenham ocorrido antes. Ora, h~ casos na pr~tica
onde isto não ocorre, onde, por exemplo, a interrupção que chega
primeiro é a primeira a ser tratada, independentemente de prio
ridade. Isto pode ser simulado no módulo de interrupção, substi
tuindo-se o cartão GOTO MODULO_PCI@; , que segue o cartão
VALOR_DA_INTERRUPCAO = i ; , por um GOTO INTERRUPÇAO(j); (se
as interrupções forem colocadas em ordem numér~ca crescente,
então j = i + 1). Os CDP2 da interrupção j tratarão de compa
rar os tempos de ocorrência dela e da anterior. Desta maneira
pode-se varer todo o módulo de interrupção antes de determinar
48
qual o VALOR_DA_INTERRUPCAO.
Será preciso introduzir dentro do programa principal,
alguma condição que termine a simulação. Isto pode ser feito
pelo módulo de interrupção, bastando contar o n'Wilero de ins
truções HALT que passam pela 8008 (uso dos CDPl). Atingido um
certo n'Wilero a simulação é terminada. Outra maneira é utilizar
uma instrução de OUT, que quando chamada envie o programa para
seu fim ( GOTO ENDE; ). Em casos onde o risco de "loops" in
termináveis é grande, é de interêsse limitar a simulação por
meio do relógio interno, ie, testa-se se NUMERO_DE_ESTADOS
ultrapassou um dado valor. O mais seguro parece ser combinar
esta ~ltima maneira com uma das duas primeiras.
~ Sempre com a preocupaçao de adaptar o simulador à re-
alidade, as duas instruções inexistentes, cujo funcionamento
na máquina foi determinado experimentalmente, foram introdu
zidas no simulador com os seguintes nomes:
- SET101 ( 00 111 000) altera somente os"flip-flop"
de condição Z, Se P, forçando-os para os n!veis
1, O e 1, respectivamente
- SETOlO ( 00 111 001) altera somente os"flip-flop"
de condição Z, Se P, forçando-os para os níveis
O, 1 e O, respectivamente
O tempo para as duas é 5 unidades de tempo do simulador.
~ Infelizmente o simulador nao oferece qualquer facili-
49
dade para reconhecimento de mnemônicos e montagem de programa.
Essas deficiencias poderiam ser cobertas por futuros trabalhos
que envolveriam a programação de um montador ou mesmo de um
compilador para uma linguagem de alto n!vel.
-O programador nao deve esquecer que inicializado o
simulador não se sabe o conteudo certo dos'~lip-flop" de con
dição. O mesmo acontece com a memória antes do carregamento
dos programas e constantes (o simulador, como a máquina real,
é capaz de interpretar e executar configurações binárias pre
sentes em posições da memória não inicializadas pelo programa).
Só se garante como contendo o valor O, tôda a pilha de PC e os
registros A, B, C, D, E, H e L. O programador deve atentar
para essas particularidades para não incorrer em erros de
~ programaçao.
50
CAPITULO I I I
A REALIZAÇÃO
III.l - INTRODUÇÃO
O projeto, inicialmente um microcomputador de 8 bits
com capacidade de 16K palavras de memória, 8 periféricos de en
trada, 24 de saida e um painel, teve seu tamanho reduzido, por
motivos de disponibilidade de material e de tempo, a uma máqui
na de 8 bits com configuração m~xima de 256 palavras de memória,
1 periférico simples de entrada, 2 de saida e o painel, projeta
do em função dessas simplificações. Somente o processador, apre
sentado no primeiro capitulo, foi montado na sua forma geral,
pois o teste de sua lógica era um dos objetivos mais importantes
do trabalho. As limitações tiveram efeito sôbre o projeto da me
mória, das entradas e saidas, e do painel, que no caso se confun
diu com o sistema de interrupção.
O projeto tinha e teve como meta a criação de um painel
acoplado ao processador que permitisse ao usuário, o acesso à
memória e ao estado interno da 8008 (por estado interno enten
de-se a pilha de contadores de programa, os registros de inde-A
xação e os quatro "flip-flop" de condição). Este painel é cons-
tituído por lâmpadas para a visualização das informações, teclas
(chaves do tipo reversível) para comando do microcomputador e
chaves (tipo interruptor) para dados em geral.
51
~ Nas seçoes seguintes explicar-se-á o projeto do computa-
dor e depois as simplificações introduzidas no protótipo. Os cir
cuitos montados estão no apêndice A.
52
III.2 - PROJETO DO MICROCOMPUTADOR
O microcomputador projetado tem por base a arquitetura
descrita no capitulo I. Para o primeiro protótipo escolheu-seu
ma configuração bem simples: apenas os periféricos de saída 17 e
37, e o de entrada 7. Os periféricos de saida são simples regis
tros, sendo que um dêles (OUT 17) servirá também como periféri
co de entrada (INP 7). O outro (OUT 37) estará ligado a lâmpadas
no painel.
O painel é dentro do sistema o ~nico elemento capaz de
interromper a 8008. Estará encarregado da geração das diveFsas ,
interrupções e instruções correspondentes. E por meio dêle que
o operador comandará o funcionamento da máquina.
53
III.2.1 - O painel
Inicialmente, é preciso notar a impossibilidade do a-
cesso direto aos registros internos da 8008. O projetista scS
dispõe da barra de dados por onde flui tôdas as informações, dos
sinais de controle e do repertório de instruções. Para obter o
estado interno deve-se então recorrer a métodos indiretos.
No caso dos registros de indexação (A, B, e, D, E, H e
L) pode-se exclusivamente por programação (a maneira mais prá
tica), utilizando as instruções sôbre registros e de entrada/sa
ída, mover um a um seus conteudos para registros periféricos.
Esta solução não é aplicável para os contadores de programa, ie,
a pilha de PC (program counter), já que as instruções que agem
sôbre êles (JUMP, CALL, RESTART e RETURN) somente o fazem al
terando os conteudos. Porém sabe-se que o valor do contador de
programa é enviado para fora sempre que a 8008 busca uma ins
trução. Basta portanto, amostrar o valor de RL e RH quando con
tiverem o enderêço desejado, independentemente da instrução pro
cessada; é, ao contrário dos registros de indexação, uma solução
puramente de circuito. Diferentemente, os "flip-flop" de condi
ção exigem uma solução mista: estarão presentes na barra de da
dos para serem amostrados, somente durante o estado T4 do ciclo
PCC de qualquer instrução INP. O registro de 4 bits onde serão
armazenados e, Z, Se P estará ligado a lâmpadas.
Além das quatro condições, é importante visualizar
54
também o conteudo da pilha de PC e os registros de indexação,
porém seria dispendioso montar oito conjuntos de lâmpadas pa
ra cada elemento da pilha e mais sete para cada um dos regis~
tros. Limitou-se o painel a dois conjuntos apenas que mostra
rão o valor do PC usado naquele instante e um dos sete regis
tros, selecionado por uma trinca de chaves.
Para completar o orgão de visualização, duas lâmpadas
informarão ao operador do microcomputador, quando a m~quina es
td parada (STOP) e em estado de espera (WAIT).
A configuração final consta então de quatro grupos de
lâmpadas:
- uma linha de 14 para o conteudo do PC
- uma linha de 8 para um registro de indexação
- uma linha de 4 para as condições C, Z, Se P
- duas lâmpadas para WAIT e STOP
Por questão de economia, os dois primeiros grupos se
rão usados pela parte do painel que faz o acesso~ memória (con
sidere que a configuração acima tem um custo equivalente a apro
ximada.mente 40% do preço da CPU 8008). A linha de 14 mostrar~ a
gora o enderêço da memória e a de 8 o dado lido ou escrito neste
enderêço.
Como o painel não tem ligação direta com a memória, a
leitura e escrita ser~ feita utilizando a 8008 que se encarre-
55
gará de ler as informações do painel (dado e enderêço) e devol
ver ao mesmo o octeto lido.
, E imprecindível que tanto êsses acessos à memória por
meio da 8008 como a obtenção do estado interno não modifique
êste estado. O operador deve ser capaz de parar a máquina duran
te um programa, ler a memória, observar o estado interno e dar
a ordem de continuação de processamento,sem que nenhum bit da
8008 seja alterado. Ora, como o processador participa ativamen
te nas operações de painel mencionadas, a obediência a esta con
dição de inviolabilidade da 8008 torna-se a parte mais crítica
do projeto. Isto implica de imediato que a comunicação painel
-processador deve ser feita sob interrupção; dnica situação em
que a pilha de PC não tem seu conteudo modificado por instruções
outras que JUMP, CALL, RESTART e RETURN.
Tudo depende então de se associar a cada tecla do pai
nel uma interrupção, ou uma sequencia ininterrupta de interrup
ções;(o que significa dizer que a 8008 permanecerá,durante tôda
a sequencia, gerando TlI em vez de Tl);ao sinal de interrupção
inicial seguir-se-á, antes do fim do processamento da instrução
correspondente a essa primeira interrupção, um novo sinal de
interrupção, com sua instrução, e assim até o fim da sequen
cia. Durante a execução da dltima instrução da sequencia não
haverá geração de interrupção.
Do funcionamento da 8008 sabe-se que a cada interrup-
56
ção, ou sequência de interrupções, estará associada uma instru
ção, ou sequência de instruções. Surge então o problema de gera
ção dessas instruções, pois que não estarão na memória. Escolheu
-se como maneira de produzi-las a matriz programável (MAPRO). Es
sa matriz funciona como uma pequena memória de leitura exclusiva ,
e tem seu próprio contador de enderêço. E da MAPRO que a 8008 le-
rá as instruções correspondentes às interrupções geradas pelo
painel. Cada interrupção terá sua instrução armazenada na MAPRO
em posição bem definida. Acionar uma tecla de comando do painel
significará carregar no contador de enderêço da MAPRO um valor
que aponta para a instrução relativa à interrupção gerada por
esta tecla. No caso de uma sequencia de interrupções, o conta
dor ser~ incrementado a medida que as palavras, colocadas se
quencialmente na MAPRO, forem lidas, gerando a sequencia de
instruções anteriormente mencionada.
Esses programas de painel, se ·assim se pode chamá-los,
contidos na matriz programável, serão executados com a 8008 in-
~ terrompida, cabendo à própria MAPRO a geraçao dos sucessivos
sinais em L.I. (a tecla só é responsável pela primeira inter
rupção que dá partida ao processo).
57
III.2.2 - Teclas
Dividir-se-á as teclas em dois grupos: para memória e
para processador. As primeiras, quando acionadas, farão com que
as lâmpadas do painel funcionem em Modo Memória, ie, o conjunto
de 14 lâmpadas mostrará o enderêço onde se quer ter acesso e o
de 8 o dado lido:
- tecla END (endereço) - colocação do enderêço, indica
do por chaves, num registro de 14 bits denominado
registro de painel (RP)
tecla ESC (escrever) - escrita na posição de memória,
cujo enderêço é dado por RP, do dado que está a
fixado nas chaves (as 8 inferiores do grupo de 14
usadas para o endereçamento) (chaves imediato)
- tecla +l (incremento) - RP -- RP + 1
A não existência de uma tecla LER decorre da leitura
automática da memória provocada por qualquer uma das 3 teclas
acima.
As teclas para processador farão com que as lâmpadas
funcionem no Modo Cpu, ie, o conjunto de 14 mostrará o PC e o
de 8 algum registro:
- tecla EST (estado) - obtenção do estado interno da
8008. As chaves para selecionamento do registro
obedecem a convenção da 8008 (A-000, B-001, ••• )
(chaves registro)
58
- tecla PAS (passo) - resolução da próxima instrução
do programa em memória. Durante a execução des
ta instrução a 8008 não estará interrompida.
- tecla IP (instrução painel) - execução sob interrup
ção da instrução afixada por 8 chaves (chaves
instrução). Esse octeto será concatenado com
as 14 chaves já existentes para formação da ins
trução longa.
Os programas de painel para essas teclas sempre termi
narão por uma instrução HALT. Além das seis acima, mais duas,
PARE e CONT (continue), se relacionam apenas com o funcionamen
to do processador.
59
III.2.3 - Matriz programável
A matriz programável do painel (MAPRO) é uma memória
de leitura exclusiva a diodos. Possui um decodificador que sele
cionará uma das linhas da matriz. O endereçamento é feito por
meio de um contador que pode ser carregado com qualquer valor.
A MAPRO terá seu contador incrementado cada vez que a
8008 pedir uma palavra de instrução do painel (figura 3.1).
Entre TlI e T3A há tempo suficiente para completar a leitura
da palavra no novo enderêço. O nivel painel serve para diferen
ciar o painel de outras partes do sistema de interrupção.
A matriz tem nove colunas. Oito destinadas à instru
ção e uma para a interrupção. Nesta ~ltima, a colocação de um
diodo significará que não há sinal de interrupção no fim da
instrução. No caso de instruções longas, que ocupam mais de
uma linha na MAPRO, basta colocar o diodo na ~ltima palavra
da instrução para inibir a interrupção.
As teclas do painel carregarão no contador o enderê
ço do programa de painel correspondente menos um (a razão é
que reconhecida a interrupção e chamado o painel, o contador
da MAPRO será incrementado, sôbre o valor carregado pela tecla,
antes da leitura da instrução) e gerarão um sinal de interrup
ção inicial.
Os programas na MAPRO terminarão normalmente por uma
60
instrução de HALT, que não deve gerar interrupção (na MAPRO
corresponde a uma linha com apenas um diodo na coluna de mi
croprogramação da interrupção).
Os programas poderão ter partes comuns, mas pulos
dentro da matriz devem ser realizados por meio de circuitos
junto ao contador.
teclas
1-i) 1-'•
crti 'v,I . .....
FILTRAGEM DOS
SINAIS E
GERAÇÃO DO
ENDEREÇO
(PCl+PCR).Tll.STROBE LO
CONT:
dec
painel
MA.PRO.
(matriz a
diodos)
LIB INT INST
L • 1 •
barra E
O\ 1-'
62
III.3 - IMPLEMENTAÇÃO
A implementação do protótipo se diferencia do projeto
inicial pela redução do enderêço de 14 para 8 bits, o que in
fluencia toda a fiação, pelas simplificações que introduz nos
circuitos combinacionais, e especialmente na organização do pai-
nel.
A matriz programável que armazenaria todas as palavras
das instruções dos programas de painel, agora passa a fornecer
somente o primeiro octeto, ficando a geração do segundo a cargo
de um outro circuito (isso se deve à limitação do espaço para ,
colocação dos diodos na placa onde foi montada a MAPRO). E cla-
ro, que, como o enderêço é só de 8 bits, a eventual terceira
palavra é desnecessária ("don't care"); pela mesma razão, ore
gistro H da 8008 perde sua importância.
Os circuitos de decodificação do código de periférico
foram minimizados aproveitando a existência de poucos periféri-
cos.
A memória sendo de apenas 256 palavras, a decodifica
ção do enderêço ficou a cargo do próprio módulo de memória (o
protótipo só tem um módulo de 256 palavras). Também, o enderê
ço estando pronto em Tl, ie, bem antes da leitura do octeto da
memória pela 8008 em T3A, não houve necessidade de se trabalhar
com o sinal RDY, que permanecerá sempre ativo.
63
Quanto ao painel, a largura de RP foi reduzida para
mi.to, evitando a multiplexação das partes alta e baixa sôbre
a barra E que ocorre quando se usa o RP de 14 bits.
III.3.1 - Organização do protótipo
A organização do protótipo é o da figura 3.2 (é inte~
ressante compará-la com a figura 1.7). Os periféricos de saida
ficaram restritos a dois registros de 8 bits: um ligado a lâm
padas que será usado tanto para mostrar o valor de um regis
tro (Modo Cpu), como o valor lido na memória (Modo Mem), e o
outro servindo também como periférico de entrada. Essa ~ltima
ligação permitirá salvaguardar o conteudo da acumulador duran
te os programas de painel que o utilizam para transferencias.
O sistema de interrupção é formado pela MAPRO, que contém os
programas de painel e que é inicializada através das teclas
(carregamento do enderêço inicial no contador da MAPRO, que faz
parte do contrôle da MAPRO) (figura 3.3). As chaves instrução
usadas pela tecla IP, e a trinca de chaves para seleciona
mento do registro, fazem parte integrante da matriz de diodos,
por estarem programando diretamente (colocação ou não de diodos
nas interseções de linhas com colunas) linhas da matriz. O se
gundo octeto das instruções longas é obtido, ou do registro de
painel (RP),ou diretamente das chaves imediato (êsse nome não
64
significa que elas sejam usadas exclusivamente por instruções
de referencia imediata; instruções sôbre o PC também usarão
as mesmas chaves para o enderêço). A matriz se encarregará de
selecionar qual dos dois octetos deve ser colocado na barra E
(LIB INT IMEDIATO e LIB INT ENDEREÇO).
O registro RP,que está ligado às chaves imediato,mostra
rá em Modo Mem o enderêço que foi carregado pela tecla END (END
gera SET IMEDIATO) ou incrementado pela tecla +l. ESC não atua
sôbre RP. No Modo Cpu, RP mo$trará o valor do PC carregado por
SET PC (gerado pelo processador sob ordem da matriz de diodos).
Os circuitos em detalhe se encontram no apêndice A.
LI B MEM
LIB INP 7
LIB INT INST
LI B
LIB INT ENDEREÇO
65
PROCESSADOR
MEM.
.____ R/W
1 7
.____ CARR OUT 37
fig. 3.2
PAINEL
chaves instrução
chaves registro
teclas controle
chaves Imediato
1-1) ..... (Jq
\JJ . \JJ
.
• -1 1 1 1
1 • 1 1 endereço 1
1 1
1
MATRIZ DE
DIODOS
CONTROLE 1 LIB INT INSTRUÇÃO
+ 1 1 1 SET IMEDIATO
1 1 1 ... ,.,,
1 1 LIB INT IMEDIATO
SET PC 1 - LIB INT ENDEREÇO
• °' °'
67
111.3.2 - Programas de painel
são os seguintes os programas de painel das teclas do
microcomputador (o asterisco a frente da instrução significa
que é gerada uma interrupção ao final da execução):
- tecla EST (estado)
*OUT_l7 o acumulador é salvaguardado no periféri
co 17; durante a execução desta instrução,
o conteudo do PC é amostrado (SET PC) em RP
*LAr transferência do registro r, selecionado
pelas chaves registro, para o acumulador
*OUT_37 colocação do conteudo do registro, agora
também presente no acumulador, no perifé
rio 37
*INP_7
HLT
~ recuperaçao do acumulador
fim do programa; 8008 em STOP
- tecla IP (instrução painel)
*(instrução do painel) é a instrução programada nas
chaves instrução (primeiro octeto) e nas
chaves imediato (octeto da instrução longa)
*OUT_l7
*LAr
*OUT_37
*INP_7
HLT
68
- tecla PAS (passo)
LLL nada faz; serve apenas para que a próxima
instrução não seja executada sob interrup-
~ çao
*(próxima instrução na memória) é a execução de mais
uma instrução do programa em memória (só pos
sível com a 8008 não interrompida)
*OUT_l7
*LAr
*OUT_37
*INP_7
HLT
- tecla PARE
HLT para o processamento
- tecla CONT (continue)
LLL instrução fantasma que tira a 8008 do esta
do de STOP
- tecla END (enderêço)
inicialmente RP é carregado (SET IMEDIATO) com ova
lor das chaves imediato
*OUT_l7 salvaguarda o acumulador
*LHL salvaguarda o registro L em H
*LLI(RP) carrega em Lo valor contifo em RP (a ati-
69
vação desta instrução na matriz programá
vel colocará RP na barra E quando a 8008
solicitar o segundo octeto da instrução)
*0UT_37 instrução fantasma; necessária para com
patibilizar este programacom o da tecla
ESC
*LAM
*LLH
*0UT_37
*INP_7
HLT
- tecla +l
leitura do dado
recuperação do registro L
colocação do dado no periférico 37
recuperação do acumulador
inicialmente RP é incrementado
*0UT_l7
*LHL
*LLI(RP)
*0UT_37
*LAM
*LLH
*0UT_37
*INP_7
HLT
- tecla ESC (escrever)
gera o sinal ESC até o fim do programa
*0UT_l7
*LHL
*LLI(RP)
70
*LMI(chaves imediato) essa instrução substitui a
0UT_37 nos programas de painel das teclas
END e +l, quando o sinal ESC est~ no nível
um lógico
*LAM
*LLH
*0UT_37
*INP_7
HLT
A organização dos programas na matriz program~vel é
a seguinte:
teclas END, +l e ESC -----------------• 0000 *0UT_l7
0001 *LHL
tecla PAS --• 1000 111 0010 *1LI(RP)
{1ºº1 *( inst .mem.) {°º11 *0UT_37
tecla IP---• 1001 *(inst.painel) 0011 *LMI(imed.)
tecla EST --• 1010 *0UT_l7 0100 *LAM
1011 *LAr 0101 *1LH <E---------
1100 *0UT_37
1101 *INP_7
tecla PARE -• 1110 H1T
tecla C0NT -+ 1111 111
71
O contador de enderêço da MA.PRO é programado por cir
cuito para passar de 0101 a 1100 automaticamente. A instrução
em 0011 é escolhida pelo sinal ESC. Em 1001 a diferença é a
existência ou não da interrupção.
Para facilitar o projeto da MAPRO,no protótipo, prefe
riu-se incrementar o contador de enderêço logo após a leitura
da instrução. O apêndice A indica qual o sinal de avanço do
contador para êste caso e a posição dos diodos de programação
da interrupção
Como a primeira instrução do programa é sempre proces
sada sob interrupção, foi necess~rio introduzir, no programa da
tecla PAS, uma instrução LLL ("no operation") que não gera in
terrupção.
72
III.4 - CONCLUSÃO
Necessitando de poucas instruções, portanto de poucas
palavras, o painel encontra na matriz programável uma solução
econômica e flexível, pois possibilita a inclusão, alteração
ou substituição de funções de comando (são as teclas no painel),
com relativa facilidade. Poder-se-ia chamá-lo de painel micro
programado, pois a coluna da interrupção na matriz tem uma fun
ção de controle para o painel.
Os programas das teclas END, +l e ESC beneficiaram das
simplificações introduzidas na implementação do microcomputador
(os programas de painel para o Modo Cpu estão implementados de
maneira geral). A sua generalidade foi violada quando se salva
guardou o registro L no H. Para o projeto ideal deve-se salva
guardar H e L em registros periféricos como foi feito com o acu
mulador. Há diversas maneiras de fazê-lo. A mais direta é utili
zar novas instruções de entrada e saída para ler e escrever o
conteudo de H e L num registro periférico:
*OUT_l7 salvaguarda A
*LAL
*OUT_l6 salvaguarda L
*LAH
*OUT_l5
• • • • •
73
• • • •
*INP_5
*LHA recupera H
*INP_6
*LLA recupera L
*INP_7 recupera A
O problema com a solução acima é a utilização de três
dos oito periféricos de entrada disponíveis. Com alguns circui
tos combinacionais consegue-se ler H, L e A pela mesma instru-
~ çao de entrada, bastando utilizar o código presente no acumula-
dor para diferenciar entre os três registros:
*OUT_l7
*LAL
*OUT_l6
*LAH
*OUT_l5
• • • • • •
*LAI 5
*INP_7
*LHA
*LAI 6
*INP_7
*LLA
cinco é o código escolhido para o registro H
seis é o código escolhido para o registro L
*LAI O
*INP_7
74
zero é o código escolhido para o acumulador
Outras soluções existem,que utilizam a técnica de amos
tragem (como foi usada para o PC e~ RP), mas só devem ser apli
cadas quando houver limitação na capacidade de memória da MAPRO.
Quanto aos circuitos montados no protótipo, e que estão
detalhados no apêndice A, deve-se observar os seguintes fatos:
- o processador foi montado de acordo com o projeto do
primeiro capítulo, apenas sendo usadoso RL para o en
dereçamento da memória e alguns bits de RH para o có
digo de periférico.
- no controle da multiplexação da barra E, introduziu-se
um circuito sequencial que separa as instruções de re
ferencia imediata daquelas de referencia a memória,
permitindo assim a execução correta das instruções
LrM sob interrupção. Esse circuito foi incorporado ao ,
projeto para dar generalidade a MAPRO. E bastante sim-
ples pois tira partido do fato que a diferença entre
as instruções de referencia memória e referencia ime
diata pode ser detetada apenas pelo bit DO do primei
ro octeto da instrução.
- na MAPRO a diferença mais importante com o modelo
ideal, é o avanço do contador de enderêço ser feito
logo após a leitura da instrução. Isto implica
75
em que no protótipo o enderêço carregado pela tecla
é o da primeira instrução, e não o da anterior a essa.
Aparentemente uma melhor solução, o avanço adotado na
implementação traz problemas na geração da interrup
ção, pois no fim da execução de uma das instruções
do painel (que geralmente vem acompanhado por uma
geração de interrupção para que a próxima também
seja processada sob interrupção), quem deve gerar
o sinal em L.I. não é mais a linha dessa instrução
que termina, mas a próxima linha,j~ que o contador ,
aponta para ela. E certamente uma má solução para
o caso geral da MAPRO, mas no protótipo, a custa de
uma porta lógica para resolver uma das incongruen
cias deste avanço no caso da geração de interrupção,
permitiu uma importante simplificação dos circuitos
de geração de enderêço e do contador.
Os testes efetuados programando-se o microcomputador
pelo painel permitiram a obtenção dos seguintes importantes re
sultados:
- as instruções de rotação do acumulador estão incomple
tamente especificadas no manual da INTEL. Em vez de
00 000 010 RLC
00 001 010 RRC
00 010 010 RAL
00 011 010 RAR
76
o correto é
00 XOO 010 RLC
00 XOl 010 RRC
00 XlO 010 RAL
00 Xll 010 RAR
onde X pode ser O ou 1.
- as duas instruções inexistentes 00 111 000 e
00 111 001, que logicamente deveriam corresponder
a mnemônicos INM e DCM, ie, incrementação ou decre
mentação do dado em memória, não atuam sôbre a memó
ria, pois pertencem ao grupo de instruções que só tem
o ciclo PCI. Com umciclo só não é possível se ler e
reescrever um dado na memória. Entretanto, a 8008 in
terpreta esses octetos como instruções de incrementa
ção e decrementação; mas, sôbre que valor, já que
não se tem acesso a memória e nenhum registro foi
especificado? O que acontece, é que a ALU (arithme
tic and logic unit) vai operar sôbre o que está na
barra interna a 8008. Como a barra estará neutra
(11111111), a incrementação produz 00000000 e a de
crementação 11111110, valores que são perdidos pois
não são carregados em nenhuma parte. Mas, o cálculo
desses valores na ALU provoca a alteração dos "flip
flop" de condição de acordo com o resultado. Na in
crementação,como o resultado é zero, Z=l, S=O e P=l
77
(as instruções de incrementação e decrementação não
alteram a condição C). Para a decrementação, como o
resultado é 254, Z=O, S=l e P=O. Foram escolhidos
dois mnemônicos para essas instruções: SETlOl e
SETOlO (INM e DCM não foram adotados para não con
fundir o programador desavisado). SETlOl e SETOlO
são instruções de um ciclo só (PCI) constituido pe
los estados Tl (ou TlI), T2, T3, T4 e T5; exatamente
como INr e DCr.
O protótipo é um ponto de partida para outros traba
lhos que serão feitos usando a 8008. As atividades que devem
ser levadas adiante agora são:
- projeto e implementação de um programador de PROM
(Programmable Read Only Memory). Este projeto deve
ser suficientemente flexível para permitir a progra
mação da maioria das PROM comerciais.
- montagem definitiva do processador em placas de cir
cuito impresso, com fontes própria de +5 Volts e
-9 Volts.
Em seguida devem ser realizados a ligação do microcom
putador a uma TTY, um CRT e um K-7 (fita magnética). Já se en
contram em fase de estudo a ligação de uma máquina de escrever,
de um dispositivo de visualização e de uma fita "cassete".
78
e o N e 1 u s à o
No primeiro capitulo descreveu-se uma organização de
barras para um processador que usa a INTEL 8008. Os circuitos
propostos foram implementados e testados com resultados intei
ramente satisfatórios.
O simulador do segundo capitulo foi testado um grande
nwnero de vêzes nos computadores IBM/360 e IBM/370 do Núcleo de
Computação Eletrônica e demonstrou ser um instrumento útil para
o programador da 8008. Uma versão simplificada do simulador po
de ser feita retirando-se do programa principal as facilidades
oferecidas pelos cartões de controle.
No terceiro capitulo apresentou-se os problemas práti
cos ocorridos durante a realização. Fatores econômicos, quepe
sam muito numa engenharia cara como a de computadores, forçaram
compromissos entre o ideal e o real. Mesmo assim procurou-seu
tilizar material de boa qualidade (especialmente no que concerne
o "hardware 11, como chaves, teclas, etc.), a fim de evitar even-
~ tuais defeitos intermitentes, que sao o pesadelo do projetista.
A utilização ae placas para fiação "wire-wrap", aliada
a um trabalho de bancada sistemático, com documentação detalhada
e atualizada dos circuitos e fiação, e esquemas de teste cuida
dosamente elaborados, permitiu que a montagem e testes finais
79
fosRem concluídos após quatro mêses do seu início.
A montagem do microcomputador foi de grande utilidade
para o melhor conhecimento da 8008 (só conhecemos realmente um
computador quando sentamos frente a êle). Com o protótipo pode-se
corrigir e completar o material informativo do manual da INTEL,
cuja primeira edição contem inwneros êrros, e adaptar o simula
dor a todas as idiossincrasias da 8008, tornando-o mais comple
to que o próprio manual.
~ O universo dos microprocessadores nao se restringe à
8008. Outras companhias já lançaram modelos mais ou menos so
fisticados que a CPU da INTEL (a própria INTEL já se superou
com o microprocessador 8080), e a tendencia é que mais e mais
empresas entrem nêste mercado. A grande incógnita hoje é o fu
turo dos micros frente aos minis, ou, quem sabe, o futuro dos
minis, que vêem seu império atacado por anões. Talvez se encon
tre a resposta no fato que várias companhias de minicomputado
res já incorporaram circuitos LSI de grande complexidade a suas
máquinas (será que passarão a se chamar microcomputadores?).
O certo de tudo isso é que os microprocessadores abri
ram uma nova frente no desenvolvimento de sistemas digitais, e
o projetista atualizado sempre os incluirá na lista de possí
veis soluções.
80
B I B L I O G R A F I A
1. "8008 8-bit Parallel Central Processor Unit" Intel Corp.,
November 1972.
2. Bruce Gladstone "Designing with microprocessors instead of
wired logic asks more of designers 11, Electronics, October 11,
1973, p.91.
81
" APENDICE A
CIRCUITOS
Ilustração dos circuitos do protótipo.
figura A.l Processador
Unidade central de processamento, "interface" TTL-MOS
MOS-TTL para a INTEL 8008 e decodificação do estado
("status bits" SO, Sl e S2).
figura A.2 Processador
Obtenção dos ciclos, sinais de carregamento para RL e
RH e amostragem da barra E.
figura A.3 Processador
Registros RL e RH
figura A.4 Processador
Geração do pulso de escrita em memória e sincronização
do sinal de interrupção.
bE7
bE6
bES
bE4
bE3
bE2
bEI
bEO
STOP
WAIT
"1 {12
i8008
82
+
RDY
--INT
TS
fig.A.l
D7
D6
D5
D4
D3
D2
D 1
DO
SYNC
SYNC
TIA
T2
T3
T4
!62
SYNC
TlA
T2
T3 SYNC
SYNC
eco
CCl
eco
CCl
83
+
!622
STROBE LO
STROBE LO ~-----STROBE LO 2
STROBE HI b---t1~-------S T. OBE HI ~-------"'-S T ROBE HI 2
T3A
PCW
PCR
PCI
PCC
fig.A.2
84
D o - io7i - -~--Jii.AO
AO
D ......- ....
1 - DCQ -Q~Al
Al
i.....-
D 2 - ~ ....
A2
A2
D ~ ....
3 - DCQ -Q~A3
A3
..__
D - -
4 .... DrQ CQ ~A4
A4
' .
D s .... DCQ ....
l~__. AS
AS
D 6 .... .--- ....
Q ºcQ ~A6
A6
..__
D7 .... ~ ....
Q A7
A7
--Q ....
ºcQ __.AS
A8
DCQ ....
Q ~ A9
A9
..__
St
,....__ .... Q
'li._O BE ºcQ -LO 1
.... A 1 O ~
AlO
ST
r:TT -llO BE u -LO 2 ----.,A 11
A 1 1
í::--õ .... D -~~A 1 2
A12
ST
-~ ... R.OBE
D -HI 1 ~~A 1 3
A13
ST eJ__. -- e flQ BE H 1 2 eco
co
~---e Q CC 1
Cl
fig A.3
T3 !12 SYNC
PCW
,~2
T 11
INTERROMP DO
STROB HI _______ .....J
+
85
ut------..., 1 NT
fig A.4
86
figura A.5 Memória
Oito módulos de 256 x 1 bits (INTEL 1101A).
figura A.6 Periféricos
Registros periféricos 37, 17 e 7. Registro de armaze
namento das condições C, z, Se P. Duas LEDs (Light
Emitting Diodes), TI 209, para WAIT e STOP.
m
LIB MEM
-
~o 1 cs ir o
Ai ...._
A2 -ê1
M. Ã5 -A6 ..._
A7
LBli D' 1-1) 1--'•
(Jg
:i:=-• V1
6 f_
R/W ~ D O J
bEl
cs o o
R/W Dj 1 1
cs o o
bE3
CS D o
R/W Di
cs o o
R/W D i
bE5
cs o o
R/W Di
bE6
CS D o
R/W Di
bE7
cs D o
R/W D i
(O -..J
+ + r7 T ~
o AO ,. ~"' AO
bEO DO
e -- . -' ' D1~ \\ A 1 1 r:::,;-, 1 A 1 1
D,,Q bEl
A2 1 ~ 1-J~-\\l
A2 '
L .-, r: "L___L_ D2
bE2
A3 t ~ 1...--1 .....
l _ A3 t ~ t:::: \\ D3
bE3 .,,
1 ID
A4 I ~ "-----' ·\, l 1 1--1 t 1 / .-, A4 bE4
As l 1 ~ t 1 r \\ AS -
bE5 (X) (X)
A6 1 lr-7 '' 1 A6 1 1 r-:1_ L- PccJ-rlA12 bE6
A7 1 lr-t:7 ,,
1 A7 1 1 ,-e~~ T4 bE7
~+ H.i "" l \\ 1-'· ~ WAIT~ ~
LIB INP 7 ~ • \\ O"I
CARR OUT 37 CARR OUT 17
89
figura A.7 Painel
Teclas para controle de acesso a memória. Filtragem
dos sinais (circuitos "anti-bounce"). Geração do en
derêço da primeira instrução na MAPRO (MEM)
figura A.8 Painel
Teclas para controle do processador. Filtragem dos si
nais. Geração do enderêço da primeira instrução (CPU,
Rl, R2, R3).
figura A.9 Painel
Contador de enderêço da MAPRO. O sinal gerado com os
sinais do processador, é diferenciado por um circuito
RC para obtenção de um pulso de 50 ns.
figura A.10 MAPRO
Decodificação do enderêço. Matriz de diodos. Circuitos
de geração de interrupção.
figura A.11 Painel
Registro RP e lâmpadas para visualização de seu conteu
do.
figura A.12 Painel
Circuito usado na obtenção do segundo octeto das instru
ções longas. Flip-flop para identificação das instruções
de referencia imediata e de referencia à memória sob in
terrupção.
90
o o 1- 1-e,: e,: u \; V') ...... o o UJ + UJ UJ ::e ::e
1- 1-w w V') V)
w a::
"' ~ i ""'
+ + +
+ + +
I• fig A.7
91
1~
,~ + +
+
fig A.8
~ 1-'·
Ot?
• • I.D
_ CPU
- R~
- Q?
_ R 1
+o-JR~ e
+o- KSQ
__M EM
~: _PCI
+ l '.....J ~ - _. ,J RQ
+- 17 ' s - - _I )
+
6---C]---
11H=J-
l ' R7 T ,J ,J
+ _-----, ' - ....1 ) s
-
~--1 y
'- AVANÇO ~
Lw
""' li it .... Jl ....
ó-JS:: e ~~
Q3
Q2 --Ql -
ECPU _
ÊMEiL I..Ü 1\)
- -
3K3ó ó óóó Oóó -y -- . . - . .
Ql 1 .. • .. ... .. . .. . ..
?} . ~ . .. • . ..
dec i3
~ - . :MEM - y ll ....
Q2 dec
QJ
.......
...
~~~~ ~~~~~~ ~~~~~~ t '
, , '
, , ' mi ·~1 -~1 ·~1 -~, ~1 ~, ~1
-...J C7' V1 .J::-vJ N _. O
ó 11L..11, f'-" 1 V
1 NTERR. PCC , ' -1
y -1 -y
-
l )>-T3A - 1 -
• 1 )>-
OPC/PC _
.
ENDPAINEL
-J '"\. -- E S C
1 1 R I NT I N ~ T
e:/ diodo
-L • 1 . e.
I..D \>l
94
+-- , , :::: ~ ';:: ~ ,.., , , ::::; ,,~ , , :::: ~ ,::=: , , :::; .... -- . .., .... ·-
.... . ... . ~
m - - bE4 - bE6 -bEl bE2 bE3 bES bE7 j ~ ~ j j j j j
.)1.... ;~ ~ ..... ~ A J\I
/~ )~ LI B I NT 1 1 ',, ' 1 1 1
E~DEREÇO 1
~ __ ~ / \! 1/\ 1.--- -- - ~
1
,- .,_ ..,_ .,_ ~
..,_ ~ t--
RESET RP 1 -... RP2
- RP_3
_Jo~ j_ -~,-
....JL.. ,......JL .....JL .....JL ..,_ .... D RC .... ..... DRÇ,.. .,...DRQ- -DRQ ... - DR(- .....DRQ ....
/ ±1 csr csc "S Q ~ .... CSQ ,. s Q ~SQ 1-0- .... c sr ~SQ ,.. ....
.,- -,r ..,,.... -,,- ...,r --,,- ....,r ---;:r
(_\ '
ô ô (J (_j (J (J s ET
1
,~r r',~I / ~.,-... ,...., ,.... /°""I l1r","' "",...., IMED. li
l SET - PC
-CIO - AO .....
c 1 1 Al -- .....
_c 12 A2 ......
.,Ç 1 3 A3 -
_e 14 A4 -
CIS AS --Cl6 A6 -- -
...C 17 A7 -
fig A.11
95
+
CIO bEO
······ e 1 1 bE1
····· Cl2 bE2
bE3
Cl4 bE4
...... CI bE5
bE6
CI bE7
-LI B INT IMEDIATO
DOA
-AVANÇO DOA
fig A.12
96
figura A.14 Barra E, painel e periféricos
Circuitos para carregamento dos periféricos, multiple
xação da barra E e carregamento de RP.
97
PCC -T3 -'- CARR OUT ..37 Al2 .I
Al3 PCC '\
T3 - '\.. CARR OUT 17 .... Al2 - _j-
Al3
PCC: Al2 D LIB INP l
PCI
D C> LIB INT l,NST INTERR. :
PCR
ENDPAIN~ ~ C> LIB INT END.
LIB INT IMED. DOA PGR
INTERR. ENDPAINE,L,
DOA LIB MEM
INTERR. ------------~ eco--------------...-
RESET rME.,T.'_n_rA_T_o __________ r-,D ______ RP_1_.
D RP2 • TlA.-.-------r ·~)'\.__._~ -------
OPC/PC D------R_P_3 ___ _
PCI -----, SET PC T3A _________ _
fig A.14
98
A P E N D I C E B
COMO USAR O SIMULADOR
Os dados do simulador serão constituídos por cartões
de controle e cartões de dado ou programa. Esses tlltimos terão
o código binário da instrução perfurado nas 8 primeiras colunas
do cartão. k:lcolunas de 9 a 72 estão reservadas para algum co
mentário e as de 73 a 80 para o nome da instrução se o programa
dor desejar. Apenas o código binário é obrigatório.
Os cartões de programa virão precedidos por cartões
(sem formato) que irão especificar o primeiro e tlltimo enderê
ço onde deve ser carregado o programa em memória.
99
Os cartões dos programas:
{endj - endj + 1)
CARTÕES DE INSTRU ÃO
endj·
000110001
CARTÃO OE FINALIZA ÃO
end >end X y
endk
• • • • •
end · y
100
Disposição dos cartões no simulador:
CARTÕES DE
CARTÃO EM
CARTÕES DE CONTROLE
JOB
o 30
8 9 DD *
PROC OPTIONS(MAIN
O SIMULADOR ou
PROG.PRINCIPAL
CARTÕES JCL
CARTÕES DE
CONTROLE NOME DEFINE
Cartão PAG PAG tamanho da
página
Cartões ROM pág. ROM
TIPO RAM pág. RAM
EQU pág. equival.
a outra
ZER pág. só lê O
UM pág. só lê 255
Cartão IMP IMP pts. de quebra
Cartão 'p"'p "'p fim dos cartões
BRANCO de controle
OBSERVAÇÃO CART0ES
deve vir antes dos O a 1 cartões tipos
podem vir e~ qual-
quer ordem após o
cartão PAG
O a oo
pode vir em qual- O a 1 quer posição
é o liltimo car- 1
tão de controle
"DEFAULT"
256
O cartões implica em
páginas RAM; 1 ou mai
implica em acesso pro
ibido às páginas não
definidas.
O a 16384, ie,
toda a memória
(esse cartão é obri-
gatório)
s
...... o ......
FORMATO DOS CARTÕES DE CONTROLE
coluna fç. PAG ROM ZER UM RAM EQU IMP
1 a 10 nome PAG ROM ZER UM RAM EQU IMP 11 a 15 tl tam.pág. tempo leitura enderêço tl(incl) 16 a 20 te tempo escrita ao end. te(excl)
21 a 25 pm{l) página pm(i) inclusive_,a. pm(i-l)=pm(i) end. pm( i) (incl)
26 a 30 xm(l) página xm(i) exclusive, • ao end. xm(i) . •
31 a 35 pm(2) onde i varia de 1 a 6 • (exclusive) xm(i-1)-l=pm(i)+k , 36 a 40 xm(2) pm(i-l)=pm(i)+k+l onde i varia de 1 41 a 45 pm(3) • a 6.
• 46 a 50 xm{3) •
• pm(i-l)+j=xm(i)-11
1
1--' 51 a 55 pm(4) o
f'v
56 a 60 xm(4) onde i=2,4,6
61 a 65 pm(5)
66 a 70 xm(5)
71 a 75 pm(6)
76 a 80 xm(6)
-A página pode ter qualquer valor que seja uma potência de dois entre 1(2º) e 16384(214 )
-A fç. nome é "left-justified"; as outras são "right-justified".
103
A p E N D I e E e
LISTAGENS
Programa em linguagem PL/1 para a simulação de um micro
computador que usa a 8008.
Este programa exige de 90 a 100 K de memória.
<;rMUA: PROCF.OURF OPTIONS (MAINl; ~~ ENDFILF(SYSIN) GOTO GRAN_FINAL; NOVO_PROGRAMA: RFGIN; ON fNílPAGF (<;YSPRINT) BFGIN; PIJT PAGE; TF FJ~_OA_DAQTF_INTCIAL THFN PLJT EOTT ('TPC PC INST C l 5 P A ' E STA O n $' l ( cm { l g , , A , C n L( 9 7 ) , A} ; F N f) ;
PUT LINE(30l;
B e o E H l M',
SIMUOOOO <;IMU0005 SIMIJ0006
SIMUOOll SI~U0012
...... o .,.
l**~******************************************************************ISIMUOlOO I* OFCLARACAO E lNTCIALIZACAO DAS VARIAVEIS PARA 8008 •ISIMIJOlOl /*********************************************************************/SIMU0102 nc L I* llEMfNIQS_.!2f-11EMUE.1LllU_MltR1Lf.B.Q~ESSAQUB SIMU0104
FLTP FlílPS DE CONOTCAO: FFCONO(Ol=CARRV=RORROW SIMU0106 l ZERn SI~UOlOR 2 SYGN SIMUOllO ~ PRTY SIMU0112
FF ílF TNTFRRUPCAO : INTERRUPT SIMU0114 RFGISTROS DF. INDEXACAn: RFGINOFX(O)=REGISTRO A STMU0116
1 B SI MUO 118 . 2 e SIMU0120 3 f) SIMIJ0122 4 F S P,1U0124 5 H SIMU0126 6 L <;t~UOl?A
ACllMllLADOR . ACIJMULADOR.::RFGINDEX(O) SIMU0132 . Cíl~TAílORFS OE PROf,R~MA: PC SIMU0134 REGISTROS TF.MPQRARIOS . RFGA E REGB SIMU0136 . RFGISTRíl OE INSTRUCAO: RFGI SIMU0138 AP 1NTA DOR ílF PC . IPC STMU0140 . APONTAnOR DE RfGINílEX: IREGINO *I SIMU0142
(FFCflNn(n:3}) FIXFf) RIN(l) ,5IMIJ0144 CARRY(l) FIXFD BIN(l) OFF FFCONO(lSUB-1) ,5TMU0146 BORROW (l) FIYEO BIN(ll OEF FFCOND(lSUB-1) ,SIML10148 ZFRO(l) FTXFO BIN(l) OFF FFCONO(l5U8) ,SIMU0150 SYGN(l) FTXEO BIN{ll OEF FFCOND(lSUB+ll ,SIMU0152 PRTY (1) FJXFD AIN(l) OEF FFCnNO(lSUB+2) ,SIMU0154 I NTFR~ UP T FIXFO RlN{ 1) INIT(O) ,SIMU0156 R EG T Nf) EX ( ('I .: 6) FTXEO BPHA) INTT((7)0} ,SIMU0158 I\CUMUL AOnP ( l l FIXFf) Bl1\J{8) DEF RFGINDfX(lSUB-1) ,SIMU0160 ºC(0:7l FIXEO IHN(l6) INIT((8)0) ,SIMU0162
(RFGA,REGB) FIXFD BIN(A) tNIT(O) ,SIMU0164 REGI BIT(A} ,5IMU0166
( IPC, IREGTNO) FIXEO BIN(3) INIT(O) ;$T~U0168
..... o u,
ncL
ílCl
'* j[ARlA~fl.S_B.fEfR.ENI.ES._A_Mf!:1QBlA_fXll!U:lA_AQ_ee.oc.ES.S ADQR_lftQQ.6 S IMU0200 TA~ANHO DA PAGINA . PAG . ílF~l~!CAO DA MEMDRlA: IMAGEM_MFWlR IA RílM,RAM, ••• : TIPO 11 8ílOT<;TRAP" . CARREGAMENTO . TF"1P8S ílF ACE<;~Q ~ . TEMPO_LF.: tTURA .
CAnl\ MOíllllO TEMPO_ESCRITA "1FMOPIA REAL : ~EM FNnERFCíl DARA MFM . TMFM .
PAG FTXFO BIN{16l INtT(?56) M Flx'FO R!N{l6) OFF PAG
l !MAGFM_MFMílRIA(*l CTL ? TIPO CHAR(1l ? e ARR FGAME I\J rr, RTT(l) 2 TEMPO_LFITURI\ FIXFD OEC(5) ? TEMPO_E<;CRtTA Flx'EO DFCP5 l
~EM(0:16381) BIT(8) T~fM FTXEO DFC(~) INIT(Ol
I* YARlAYElS_AUXlllABES._fABA_CAB&.E.GAMf~ID_QQS_eBOG&A~A~------DEFINIC~o on TIPO OE MEMORIA : CONTROLE LIMITES DAS PAPTES DE UM PPOGRAMA: INICIAL E FINAL IN~TRUCAO LIDA : INSTRUCAO OB~ERVACOF.S DO PROGRAMADOR : COMENTARIO
(INICIAL ,FINAL) FJXED OEC(3) INIT(O) CONTROLF CHAR(3)
(TL,TFl FTXFO DEC(5) (PM(6l,XM(6)) FIXED BIN(l6)
COMFNT ARJfl
l NSTRUCAíl
CHAR(64)
CHAR ( 8)
SIMU020? SIMU020( SIMU0206 SIMU0208 SIMll0210 SIMIJ0212 SIMU0214
*/SIMU021A ,SIMUO?l8 ,<;IMU0220 ,SIMU0222 ,STMU0224 ,SIMU0226 ,SIMU0'.'28 ,SIMU0230 ,SIMU0232 ;SIMU0?34
S IMU0250 SIMU0252 SIMU0254 SJMU0256
*ISIMU0258 ,SIMU0260 ,STMU0262 ,SIMU0264 ,SIMU0266
,STMU0?68
;SIMU0270
1-' o
°'
ncL I* YA~lA~flS_RA~A-lMRRESSAQ_QQS_~ESULIADQS A l NC::TRUCAO PRO( E~~ AOA : NOME_OA_ lNSTRUCAO IMEDIATn,MEMORIA nu REGISTRO : TIPO_OE_RFFERFNCIA O REGISTRO USADO : NOME_OO_REGISTRO O "FLJP-FLOP" TFSTAOO : NOME_DO_FF DIZ OUANOO HOUVF SALTO O QllF FOI ESCRITO NA MFM DADO f1E FNTRAf'l.l\ TFNTATIVA OF ESCRITA FM ROM IMFOIATO OU MEMORIA TFSTE SF 1 llU O "BPl=õKPOTNTS" QUANDO JMPRJM[P lNSTRUCAO QUANnn IMPRIMIR CABFCALHO
: OBSERVACAO : OCTETO : TRUE_FALSF : TRACE_ON : IMPRIMA
TRACE_OFF
: FTM_DA_PARTE_INICIAL
SIMU0300 StMU0302 SIMU0304 SIMU0~06 S IMU0308 SIMU0310 S t MUO ":\ 17 SJMU0314 SIMU0316 SIMU0318 SIMU0320 SIMU0322 SIMU0324
*/SIMU0326
NOMF _O!\_ I N<: TRlJCAO TIP~_DE_REFFRFNCIA ~OMF_OO_RFr.ISTR0(0:6l NOMF_no_F F (O: 1)
CHAR(6} CHAR(ll CHAR ( U CHAR (1 ) CHAR(8) CHõ.R ( 1) BIN{lól BIN(Hd RIT(l) RJT(l)
JNIT(' 'l ,SIMU0328
(íl8SERVACAn,OCTETOl TRUF_FALSE TRACE_ON(7l FIXFO TRACE_OFF{7) FIXEn J MPR tMA FIM_OA_PARTE_INICIAL
tNIT{' ') ,~IMU0330 INIT('A','B','C','D','F','H','L'l,SJMU0332 INIT(•c•,•z•,•s•,•P•) ,SIMU0334 INIT(' 'l ,SIMU0336
INIT{(7l0) I N I T ( ( 7 l 1 6 3 84 l INJT('l'Bl INIT('O'B)
,SIMU0~18 ,SIMU0340 , S IMU0342 ,SIMU0144 ;SIMU0346
~
o -...:i
ílCL I* YA3.1AYf.l.S_fAB.A_C!J~I8.0LE._QE_ELUXQ_ftiIB.f_MQ!2ULQS SIA4IJ0350 OECOOIFICACAO INICIAL DA INSTRUCAO: DECOíllFICACAn_DE_07D6 SIMU0352
(A or-cooIFICACAO nE 050403 FFITA POR TESTFS) SIMU0354 DECODIFICACAO_DE_020100S IMU0356
ílFCOOIFICACAO FINAL DA INSTRUCAO : LABEL_ROTATF SIMU0358 LAB~l_JUMP_CALL SIMU0360
~FLECAO 00 PFRIFERICO : MODULO_INP SIMU0362 MODULO_OUT SIMU0364
JNSTRUCAO SOA INTFRPUPCAíl SJMU0~66 PRIMEIRA PALAVRA(INSTRUCAO) : ~FGUNOA PALAVRA(IMFDIATO OU :
INT_PCI TNT _PCR_ I INT_PCR_MM
SIMU0368 SIMU0370 SIMU0372 SIMU0374
TERCEIRA PALAVRA((FNDERFCO) : SEMAFOR~ IOFNTIFICAílOR Df JNSTRUCDES
COM REFFRFNCIA 1 JMEOTAT0 1 : LABFll (=MODULO_ALU OU SIMU0376
cn~ REFERENCIA 'MEMORIA'
CONTROLE P/ "ALLOCATF" IN~ICF~ PA~A OFCnntFICACAíl QU~L O PERIFFRICO Sfl FCAn OA HffFRRUPC An
INICIAL
=MOOULO_lR_MI@lSIMU0378 : LABEL2 (=MODULO_ALU OU SIMU0380
=MODULO_LRM@l SIMU0382 : LABEL3 : 07D6,D50403,D20100 : VALOR_PERJFFRICO : VALOR_OA_INTERRUPCAO
SlMU0384 S1MU0386 SIMIJO~A8
*ISIMU0390
{ílfCílílIFICACAíl_DF_D706{0:3),DFCOOJF1CACAO_OF_02DlD0(0:7}, LARFL_RílTATf{Q:~J,LABFL_JUMP_CALL(0:1},
SIMU0392 SJMU0394 SIMU0396 SlMU03()8 SIMU0400 SIMU0402 SIMU0404
Mnnutn_tNP(0:7),MOOULO_nUT(l0:37), LABfll,LARFL2,LABEL3)
{TNT_PCI{ 5),INT_PCR_I( 5),INT_PCR_MM( 5)) (D706,D504D3,020100) ( V Al OR_ Pf RI FERI CO, VALOR_OA_ INTERR UPCAO)
LABEL, LABEL , FIXED BIN(3) , F I XEO OFC ( 2) ;
1-' o 00
11C L- I* YABlAITIS_AllXlllARfS RFLOGIO "TEMPO REAL": NUMERO_DE_FSTADOS CALCULn DO ENOfRFlO : FND_MEM CALfULO no MOílULO : MOO_MEM "BUFFFR" OE SAIOA : nuT_lATCH
(NUMERn_nE_FSTAOOS*4 FORNFCF TEMPO FM MICROSFGUNOOS) TESTE O ou 1 no~ FF : CONDICAO PARA CALCULO nns FF : RFGTESTE PA~A CALCULO nF PRTY: NN
CONT ADílR PARA CALCULn nn CARRY: UNDERFLOW
SIMU0450 SIMU0452 SIMU0454 SIMtJ0456 SIMU0458 SIMU0460 SIMU046?. SIMU0464 SIMU04ó6 SIMU0468 SIMU0470 SIMU047? OVERFLOW
CARRY PAPA A ROTACAO: CARRYAUX *ISIMU0474
~UMFRO_DF_ESTADDS FIXEO OF.C(15} INIT(Ol, (FNO_MFM,PA½_MEM) FIXEO BIN( 16t ' MOO_MFM flXFíl BlN(l6) OEF PAG_MEM,
') V F R F 1. OW ( l ) FIXF.D BIN{ 1) INIT(OB), UNDFRFLOW ( l) FIXED BIN( 1 ) DEF OVERFLOW,
(CONíllCAO,CARRYAUX(l)} flXFn BIN( 1) ' (~EGTESTF,nur_LATCH) FIXEíl BIN( 8) ' ( NNN, CONT AOOR) FIXEO BIN( 5) .
't
I* VARIAVFI~ OFFINIOAS OFLO U~UAPtO *I DFCLARE DAOO_DF_fNTRAOf\(0:7) FTXEO BINARV{A) JNITTAL((8)0l,
FFLATCH FIXFD BIN(B); DCL ~TOPPFn FIXFíl ijlN(l6) TNIT{O); DCL GUARDA_hCUMllli\OOR FIXfO AIN(A);
SIMU0476 ST~U0478
SIMU0480 SIMU0482 SIMU0484 SJMU0486 SIMU048B
SIMU0498 SJMU0490 SIMU0492
SIMU0494
~ o I.O
!************************************************* *******************/SIMUlOOO '*** M n nu Ln l F I Tu R A e ARTA o e o N T R o L E*** */S!MUlOOl l*******************~*************************************************ISIMU1002 LEIT!JRA_CARTA7_Cf"'JNTRrJLF: GfT FDIT(CONTROLE)(COL(ll,A(3)) COPY; SIMlJ1004
IF CnNTRnLf= 1 PAG' THEN o~. GET fDIT(PAG,(COl(lll,f{5), cnPY; !F PAG>l63B4 THFN PUT LIST ('PAGINA ULTRAPASSA l!MITE',PAG); TF PAG=llPAG=?f PAG=4fPAG=PIPAG=l6f PAG=~?IPAG=64IPAG=l28IPAG=256I
PAG=512IPAG=1024IPAG=204BIPAG=4096f PAG=8192IPAG=l6384 THEN GOTO LF I TlJD A_CART AO_CONTRflLF; EL~E oo; PUT L15T ('PAGINA OFFINIOA NAíl FOI UMA POTENCIA DE 2');
GOTO FNDF; FNO; GOTíl LETTURA_CARTAO_CONTROLE; END;
IF CONTROLE='fOU' THFN 08; IF ~ALLOCATTON(TMAGF~_~EMORIA) THFN DO; LAAEL':\=EQll; ~1Tíl IMAGfM_TNIClAL; E~D;
FlU: GET ~DIT ((PM(I),XM(I) no J=l TO 6))(COL(2ll,12 F(5)) COPY; no I=?,4,6; IF PM(I)>=X~(I)IPM(I-lJ>=XM(I-ll THEN GOTO LOOPIO;
1) O .J= O TO 1 6 3 8 4 W H I L E ( ( P M ( t) + J ) ~=X M ( I )) ; T I P O ( P M ( Il + J ) = ' E Q U ' ; TfMPn_LFTTURA(PM(Tl+Jl=PM(I-ll+MOO(J,XM(I-11-PM(I-ll );
FNO; tnOPlO: FNíl;
GOTO LFTTURA_ChRTAíl_CílNTROLF; fND;
SIMU1006
SIMU1010 SIMU1012 SIMU1014 S P4Uln 16 SIMU1018 SIMIJ1020 SIMU1024
S IMtH030 SIMUlíl32 SIMU1034 SIMU1036 STMU1038 SIMU1040 SIMU1042 SIMU1044 SIMIJ1046 SIMU1048 SIMU1048
1-' 1-' o
IF cn~TR~LF= 1 RílM'ICONTRnLE= 1 RAM 1 THEN ~n; (F ~ALLnCATION(IMA~FM_MFMnRTA) THEN on; LABFL~=POM_RAM; GOTO IMAGEM_INJCIAL; END;
ROM_RAM: GFT EO!T{TL,TE,(PM(I),XM(Il on I=l TO 6l}(C0L(ll),l4 F(5)) COPY;
no I=l TO A; IF PM(l)>=XM(I) THFN G• Tn LOOP_RnM_RAM; nn WHILF(PM(Il~=XM(I)); TIPO(PM(I))=CONTROLF;
TEMPO_LFJTURA(P~(I))=TL; TEMPO_ESCRITA(PM(l))=TE; CARRFGAMENTO{PM(Il)='l'B; PM(l)=PM(I)+l; END;
LOJP _ROM_RAM: P.m; r,orn L E1TUR A_CART AO_CONTROL f; ENíl;
IF Cíl~TROLF= 1 7fR' ICONTROLF='UM' THEN DO; IF CONTROl~=•ZEP' THEN REf,f= 1 00000000 1 B; ELSF REG!='llll]lll'R;
TF ,ALLOCATION(IMAGEM_MEMORJAl THEN DO; LABFL3=ZER_UM; GOTO TMAGfM_INTCIAL; END;
GOTO !MAf,EM_INTCTAL; ZFR_UM:
GFT Ff'lT(TL,n=,(PM(I),XM(Il no I=l TO 6)HCOL(lll,14 F(5)) COPY; nn T=] TO 6; TF PM(l)>=XM(T) THEN GOTO LOOP_ZER_UM;
on WHILF(PM(I),=XM(l)); TIPO{PM(Il)='ROM'; TFMPO_lEJTURA{P~(I))=TL; TEMPO_FSCRITA(PM(I)l=TE;
no IMFM=PM( It*M TO PM(l 1*(M+ll-1; ~FM(IMF.M)=REr.T; END;
CARREGA~ENTn(PM(!)l='O'B; PM(l)=PM(Il+l; ENO; LOOP_ZFR_UM: FND;
GOTO LFITURA_CARTAO_CONTROLF; rNíl;
TF cnNTROLE='IMP• THEN oo; GFT EOfT((TRACF_ON(Jl,TRACE_nFF(T) on I=l TO 7l)(Cíll{lll.14 F(5))
COPY; GOTO LEITURA_CARTAíl_CONTROLE; END;
<;IMU1052 SIMU1054 SIMU1056 S TMLJ1060 SIMU106? SIMU1064 SIMU1066 SIMU106A S It-!U1070 SIMU1072 SIMU1084
SIMUl086 SIMU1088 SIMU1090 SIMUl092 STMU1094 SIMU10CJ6 SIMU1098 SIMU\100 SIMU1102 S TMUl 104 S1Mlllll2 ~ IMllll 14 S1MU1116 SIMU1118 SIMU1120
SIM1Jll22 SIMtH124 SIMU1126 SIMl.11128
1-' 1-' 1-'
JF cnNTROLF=• 1 THEN GílTO ~AQUINA_OFFINIDA; PUT LJST( •CONTROLF NAO JOENTTflCAon•1; GOTO FNOE;
IMAGí-M_INTCIAL: ALLOCATE IMAGEM_MEMORIA(0:16384/M-lJ; on I=O Tn 16~84/M-l; TIPfl{Il=' •; CARRfGAMENTO(I)='O'B; TFMPO_LEJTURA(Il,TFMPO_ESCRITA(lt=O; ENn; GOTO LABEL3;
MAQUINA_ílEFINinA: IF ,ALLnCATinN(l~AGFM_~fMORIA) THE~ oo; AI LOCATF. I~AGFM_MF.MORl~(0:16384/M-ll;
INJCIALJZACAO: on T=O TO 163A4/M-1~ TJPn(T)='RAM'; CARREGA~ENTO{T)='l'B; TFMPO_LEITURA(J),TEMPO_FSCRITA(l)=O ; FNO TNICI Al IZACAn; FNO; PUT EDIT((I,TIPO(I),CA~REGAMFNTO(Il,TEMP~_LEITURA(I),TEMPn_ESCRJTA(ll
nn 1~0 TO 16384/PAG--l)l (CnL(l1),F(4),X{?), A(3l,X(?l,B(ll,X(2l,F(5),X(2l,F(5));
on T=n rn 16384/PAG-1; JF TIºíl(ll='EJU• THEN IF TIPO(TFMPO_LFITURA(l))=•EQU' 1
TIPO(TEMPO_LFITURA(l))=• 1 THEN DO; PUT SKIP lJST{'FRRO OE FOUIVAlfNCTA DF PAGINAS(EQlJ=FQlJ / FQU= )'); FNn; FLSE; FLSF; ENO;
SIMU1l40 S!MU1142 SIMU1144
SYMU1146 c;tMIJ1148 SIMU1150 SIMU1152 SIMU1154 SIMU1156 SIMU1158
Sl~Ull70 S IMUll 72 c;JMlJllBO STMlJll82 SIMU1184 SIMU1186 <iIMUllAR SIMIJ1190
1-' 1-' N
l*********************************************************************ISTMU1500 I* *********PR O GRAMA~ PAR A A ME M íl R 1 A ***********ISIMU1501 l*********************************************************************/SIMU1502
CARREGAR: /* C~RREGAMFNTO DOS PROGRAMAS F CONSTANTES NA MEMORIA n PPIMEIRO CARTAn nF DAOílS SfRA UM CARTAn EM BRANCO. VIRAO A ~EGUIR OS RLDCOS OF PROGRAMAS. O ULTIMO CAJHAO CílNTFRA 0015 NUMEROS POSITIVOS QUAISQUER Vtl\100 íl MAIOR EM PRIMEIRO LUGAR.
SIMU1504 S1MU1506 SIMU1508 SIMU1510
*ISIMU1512
GFT SKIP LIST(INICIAL,FINAL); SIMU1516 I* lilTUB.A_ Qç_lf~_RlQCQ_[lf_PRQliRAMA S JMU1518
PRIMEIRO CARTAO DO BLOCO CONTEM DOIS NUMEROS: SIMU1520 O~ ENDERECOS LIMITES DO PROGRA~A NA MEMORIA. SIMU1522 ~E~UF-Sf CARTOFC TN~TRUCAO E CONSTANTE */SfMU1~24
TF TNJCTAl>FTN~l THFN /* FTM DO CARREGAMENTO *I GOTO IMAGEM_OA_MEMORIA;SIMU1526 no I=INICIAL/~ rn FINAL/M; SIMU1528
TF CARREGAMFNTO(I)='O'R TMFN DO; SIMU1530 PUT LJST( 1 CARRFGA~ENTO PROIBIDO NO MODULO',I); SIMU1532 GílTO ENOF; SIMU1534 FNn; CNO; SI~Ul5~6
..... ..... ~
1 EITll~A_DF_IN<;TPUC~FS:/* EflRMA!Q_DQS_~!filüES_Uf_l~SIB.UCA!.Lf_CQ~SIANif SIMU1538 COLUNA FUNCAO SIMU1542 l A 8 INSTRUCAO OU CON~TANTE SOB FORMA BINARIASIMU1544 q A 7? COMENTARIO (OPCIONAL) SIMU1546
73 A 80 NnMF. ílA INSTRUCAO OU NUMERO DECIMAL STMU1548 COMFNTARIO F NOME SAO OPCIONAIS */SlMU1550
DO !MFM=INICIAL TO FINAL ;SIMU1552 GFT FnIT(MFM(IMFM),COME~TARIO,TNSTRUCAO) SJMU1554 {COLUMN(lt,B(8),l(64l,A(8)l ;SIMU1556 PIJT FílIT(MEM( tMEM) ,HffM, TNSTRtJCAn,CnMENTARtn} S1Mlll558
(CnLUMN(23),8(8,,C• LUMN(35},F{3),COLU~N(40),A{8),COLUMN{50l,A(64));SIMU1560 FNO LFTTIJR~_Df_TN<;TRUCílE<; ;<;JMU156? PUT PAGF; SIMU1564 <;OTO C ARP FGAR; SI MU 1566
IMAGEM_OA_MEMORJA: FIM_ílA_PARTE_INICIAL='l'B; PIJT PAGF;
GOTO MODULO_HLT;
SI MlJl 800
..... ..... .;:..
l*********************************************************************ISIMU2000 I* **************MO OU l O t N TER R U PC A n *****************ISJMU2001 l*********************************************************************ISI~U2002 MOOUlO_INTfRRUPT: T NTF:RR UPC AO_UM:
IF STOPPFíl<=l/* CONOICAO PAPA HAVFR INTFRRRUPCAO */ THEN oo; ~TOPPEO=~TOPPFO+l;
INTERRUPT=lB; VALO~_nA_INTERRUPCAO=l;
I * GOTO MOOULO_PC I; * / GOTO ~ODlll O_PC t 4l; INT_PCT(l): RFGI='llOOOOOO'B; I* LAA */ GOTO MODULO_OECODTFTCACAO; INT_PCR_MM(l): RfGB=•oooooooo•B;
RFGA=•oooooooo•B; GOTO M• OULO_J_C@; INT_PCR_I(l): RFGB:•nnnoonoo•B; GOTO lABFLl;
ENO; lNTERPUPCAO_O~JS: !F '-10D(NUMERO_OF_E'STAf)OS,2"i6)>·=250 THEN no; INTERRUPT=lR; JMPRTMA='l'R; VALnR_nA_INTFRRUPCA0=2; JNT_PCI(2): REGI= 1 1100100l'A; /* 6LBB */ GOTO MOOULO_OECOOIFICACAO; TNT_PCR_MM(2)! REGR=•oooooooo•B;
REGA='OOOOOOOl'B; I* ?56 S GOTO MOOULO_J_C@; FNíl; TF NOMF_OA_IN<;TRl!C~O='HLT' THEN no;
IF ~TOPPED=~ THFN
FNfl; I* TNTFq~UPT=OB; *I GOTO MODUlíl_PCI@;
I* FIM 00 '100ULO INTFRUPT *I
*' STOPPFO=STOPPEO+l;
/* IF STOPPE0=3 THEN *I GOTO ENOE;
SIMU2004
......
...... (J1
l*********************************************************************/SIMU4000 '* ************* O ECO D I FICA C A O ************************ISIMU4001 l*********************************************************************ISIMU4002
MOOULD_ílFCílnIFICACAn: '* UftQDlflCA,AQ_Qà_l~SIBUtAD_Nn_BfúiSIBD_l *' 07ílA=(REGif. 1 11000000'B)/64; 05D4íl3=(REGlf.'00111000'8)/8; O?nlO0=(RFGTf.'0OOO0lll'A); r.nrn DECnOIFICACAn_oF_070é(0706) OFcnnJFJCACAíl_DF_íl706(0): GOTO DFCílDIFlCACAO_DF_D201D0(020lOO); ílFCnoIFICACAO_OE_0201D0(2): r.• TO MOOULO_RL_RC_RAL_R; DECOOIFlCACAO_DE_D20lOO(l': O~COOIFICACAO_nF_n2n1oo(O):
I F 05040 ~=O T HF.N If 05D403-==7 THEf'.t I F 020 líH)= l THEN GnTO MílOULO_YNR;
nFC~DIFICACAn_nE_íl706(1):
GOTO MOOULO_HLT; GOTO MODULn_tNEXT; GOTO MODULO_OCR;
IF Míl0(0201D0,2l=O THEN GOTO MOOULO_J_C; F.LSE GOTO MODULO_I_O;
OFCOílJFICACAn_nF_~70~(3): Tf 020100-==7 THFN
IF íl5D4D3=7 THFN GOTO MODULO_HLT; FLSF GOTO MODULO_LRM;
FL<:F; IF 050403=7 THEN GOTO MOOULO_LMR; GOTO M• rHJL O_LRR~
DFCOOI F IC AC AO_DF_07f)6 ( 2): IF 0201D0=7 THEN GOTO MOOULO_ALU_M; GOTO MOOULO_ALU_R;
SIMU4OO4 SIMU4008 S!MU4010 SIMU4012
;SIMU4014 SIMU4016 SIMU4018 SIMU4020 SIMU40?? SIMU4024 SJMU4026 SJMU4O28 <;JMU4O3O SJMU4O3? SIMLJ4034 SIMU4036 STMU40~8 SIMU404n SIMU4042 SIMU4044 S1MU4046 SIMU4048 SIMU4050 SIMIJ4052 S!MU4054 SIMU4056 SIMU4058 SIMU4O6O
.... .... °'
/*~~*~~*~~~*~~~*~~~~~~~*~~~*~**~*~T~***********~*************~********ISIMU4loo 1~ ~*****~~*~**44 ~ L u u L L P L 1 **~~***~***********************/SIMU4101 ,~~~~~~~~i~~~~~~~M*~~~~~*~*~*~**~~~**~******~************~********~***/S1MU4lL2 f,1..t..,uLL_r'L 1: SlMU4lU4 ir i1"1--tdl" ... =' .. • ... 1 Lliolt.l<KLd-1=1.1: fl-t:tl. S1Mu4l0b r'ul tuJ.H1'1ul"t._L1-1_ll\::ilKL,l...1-H ... ,(t-fL.Ll'lU{iJ l..JL l=u Tl ~J,(t<t:l;ll\Cl:X(IJ Dl.J SIMU4lu8 !=v l1.. ól,MLLlt<LLl~1..,LÂi~J,b~J*L~ó+KLGl~ULA(ol,LbStkVkLAU,ul...Tl:1U, SlMU4llu 1, L.. fv' ..... 1' L _ 1.., L _ e. .:l u.i.: ... ~ , H .. L L l L b l , Jl l 6 l , 4 , A t u , f- il , l , 7 { x tl l , f- Ld h x ( l t , f ,~ ) , L(All.),µló)l,~LL(~~J,rl!vll;
11\ 1 c.Kt-l,I-']= ... t; L..l.:l-Kll1-1L1-1u=• ', Ll.lc...fL=' GLI l, r,,LulJL .... _ddt:KKLl-'I; l•,Ll ... vLL_PL.J.<.1.: L r,t 1-'K ! fV A=
1 •• , .,
{PL{ll-'Ll>=IKkLt:_L~ll)LPL(lPL)<lkALt_Lf-1-(l)j P~l!r1..J>=)Kkl..t:_Ll\lL)tPLl1~Ll<lK~L1:_u~t-(L)j PLlir'LJ>=l~MLt_Ll\{jtt~L(11-'LJ<TkALt_Uff-(3)j t'l, ( 1 I"" t. L>= ~ ""''-- L_ L,~ t '-t J t P" ( 1 r-L) < l kA L. t._u t-1-- ( 4 j j l-'L.li~Ll)=IKA1..c_Ll\l~Jt~Ll1PLJ<lKALt_ul-~(~JI PLlll-'L))=lkALc._Ll\(b){,fL(&PL)<lKALt_Uff(o)j P L ( l 1-' L J > = l K A L L_ L l'i l 7 j t.. 1-' L l J. P L ) < l KA L. t:_ uf- l- ( -, ) ) t. l t\ l e. k K l, P l = 1 v I b ;
.1.t" d 11 1-'l'll'M= 1 i 1 b IHLI\ t-'Li :il\tl"' t.L11( ll"'L,í-Ll 1t-1..J HLLL\LvJ ,1-llJ ,X(1j ,f-(:i) ); LI'" _11\ l t.~uP 1 =1 o J tt-L.I\ 1.;ll L 11,d _PL. l ( VALUK_UA_ J.I'< l tkkLJl,>C-Au j; t 1\ u _ fv e fv = 1-' i.- ( 1 l' L l ; 1'1 l, u_ jY, C. fv. = L l'i L,_ ('/ t. f,,J /•1 ;
~r I it-Llfvuu_~cfvJ=' • lrc.l\ LL; tlLI L1.:>1('1t.N"l".l1\/A t.,t. Lt.!lt,KA t.:M i'luuULLi t.,t, Mt.MLKlA ll\t:XJ..:>Ít.Nll: 1 j; \.) l I l t. 1\ L, L ; L j\ l. •
1~ 111-'h(~L~-~L~l,='t.~u• l~tl\ ~u~LKu_Ut_t..)JAuu~=I\UMt.KL_uL_t.~IALL~+It:Ml-'L_Ltl1LJkA(ML.L_/"tMJ; tL~I: l\u~LKI.._LC_t.:.:ll~t.,ü~=I\U~Lrtu_~L_L.)IAuL.~+ j LI• P L _ L L l h. K A l 1 1: 1" P L_ l L il li k A t ~ L L _ /" t: Í" J J ; H· t d""Llh,H,_,•1tl• 1-.·= 1 L\./u 1 l h1:..."1 kci.,.1.=dcM( t.,~u_Mt.Ml; LL~~ ~Lu1=ltv~~l~LL,(LI\L_fvt.fv,fvJ+ltfvPL_Lt.1luKA(M1.,L_MtMj*M)) ; r-~t~l-'1..l~~~L,l~Ll1~~1+~,lc~b4J; u~lL ~l~uL~_LlLl.LLtlLALAL,
SlMU4il6 5IMU4ll7 S1 t-!L4118 51MU412li ~lMU4lL.i 5lMu4ll4 !>lMU4126 51Mu4128 51Mu413u ::.lMU4132 SIMu4134 SIMU4138 SIMU4l4v SlMU4l42 SIMU4144 Sltv.U4l46 ::ilMU414S SIMu4l!:>v SlMU41?2 SIML4154 51MU4156 51Ml..J4158 !>IMU416li ::.1MU4162 SIMU4lé4 SlMU4lob S 1MlJ4168
,.... ,.... ---.J
l*********************************************************************l~IMU4200 ,. ************** C 1 C Ln PC R **********************************/SIMU4201 I* **************~E F E R F N C IA I ME D T ATA **************/SJMU4202 l*********************************************************************ISIMU4203 ~nnuLJ_I: SIMU4206 TF TNTFRRUPT =lB THF~ GOTO TNT_PCR_I(VALOR_OA_TNTERRUPCAO); S!MU4?08 FNO_MEM=PC(IPC); SIMU4210 Mn~_AAFM=FNíl_MFM/~; SIMU4212 TF TTPO(MOO_~EM)= 1 'THEN DO; SIMU4214
PIH LTST('TFMTATTVA DF LEITURA FM MODULO OF MEMORIA INEXISTENTE'); SIMU4216 f;rJTll FNnE; FNO; SIMU4218
JF TTPO(MOD_MF"'!t-.='FOU' THFN SIMU4220 NUMFRJ_OF_f~TAnOS=NUMFRn_DE_FSTAOOS+TFMPO_LEITURA(MOO_MfM); ELSE SIMU4222 NU~FRO_DF_FSTADOS=NllMERO_OF._fSTADOS+ SIMU4224 TFMPíl_lfITURA{TFMPO_LEITURA(MOD_MEM)); SIMU4226 IF TJPíl{MílO_~FM)~=•FQU• THFN RFGB=MFM(END_MEM); SIMU4228 ELSF RfGR=(MFM{MOD(f~O_MF~,M)+TEMPO_LFITURA (MOD_MFM)*M)); SIMU4230 PC(TPC)=Mníl(PC{lPCl+l,16184); ~JMU4232 OCTFTíl=RFGB; SIMU4234 G•Tn LABFl.1; SIMU4236
......
...... 00
l*********************************************************************ISIMU4300 '* ************** C I C l n PC R **********************************ISIMU4301 I* ************** R E F f R F N C I A M F MOR I A ****************ISJMU4302 l*********************************************************************ISIMU4303 MnnuL 'l_M: S IMU4~06 FNO_MFM=MnnCRFGTNOEX(~),64l*2~6+RFGINDfX(6); SIMU4308 Mnn_M~M=FNn_MFM/M; SIMU4310 IF TIPn(Mílíl_MFMl=' 'THEN 00; STMU4112
PUT LIST('TENTATIVA OE tFITURA FM MODULO OE MEMORIA INEXISTENTE'); SIMU4314 r;QTf'! fNOE; FNO; SIMU4316
tF TJPO(MOO_MFM)~='EQU' THFN STMU4318 NUMFRJ_OF _f STA 00S =1\JIJMFRn_OF _F ST AOfJS+ T FMPí1_l E ITUR A( MOD_MEM); El SE S IMU4320 NU~F.RJ_OF_FSTAOOS=1\JIJMERO_DE_FSTADOS+ SJMU4322 TEMPO_lFITURA(TEMPO_LEITURA{MOO_MFMl); SIMU4324 IF TIPO(MnD_Mf~)-='EQU' THEN REGB=MEM(FND_MFM); SIMU4326 ELSE PFGR=(ME~{MOD(END_ME~,Ml+TEMPíl_LEITURA(MOO_MEM)*M)); SIMU4328 OCTETO= REGB; S IMU4330 GOTn L ABFt 2; S IMU4332
..... ..... '-D
l*********************************************************************/SIMU4400 I* ************** C I C LO PC R **********************************ISIMU4401 I* **************REFERE N C II ME M ME M ****************/SIMU4402 f*********************************************************************/SIMU4403 MOOlJLíl_MM: IF INTERRUPT=lB THFN GOTO INT_PCR_MM(VALOR_OA_JNTERRUPCAO); F.Nn_MFM=PC( IPC l; Mnn_MEM=FNO_MEM/M; IF TIPO(MOD_MEM)=' t THFN no;
P!JT LICT('TFNTATIVA DF LEITURA EM MOOULO DE MEMORIA INFXTSTENTE'l; GOTO FNDE; FNO;
IF TIPO{MOn_MFMl,='EQU' THFN NUMERJ_DF_FSTAOO~=NUMFRO_DE_ESTAOOS+TEMPO_LEITURA(MOD_MEM); ELSF NUMER• _OE_FSTAOOC=NUMERO_Df_ESTlDO~+ TEMPO_LFITURA{TEMPO_LFITURA(MOO_MFMJ); IF TIºO(t.10D_MFM)-..= 1 F0U• THEN RFGR=MEM(END_MEM); EL<;F REGA=(MEM(MOO(END_MEM,Ml+TFMPO_LEITlJRA(MOO_MEMl*M)); PC( IPC )=MOO(PC( IPC )+l, 16384); FNO_MFM=PC( IPC); MOO_MEM=FNO_MEM/M; IF TTPO(MOD_MEM)=' f THFN no;
PUT LTST('TENTATIVA OE LFITURA EM MODULO DE MEMORIA INEXISTENTE•); GOTO ENDE; FNO;
IF TTPO(MOO_MFM},='EQU' THEN NUMFRO_OE_FSTAOOS=NU~ERO_DE_f<;TADOS+TEMPn_Lf!TURA(MOO_MEM); ElSE NUMFRJ_nE_ESTAOOS=NUMFRO_Df_FSTAnos+ TFMPn_u= T TlJR A ( TEMPO_L F I TUR A { MOO_MFM)) ; IF TTPO(MOD_MFMl ,='FQU' THEN REGA=MFM{ENO_MEM); FLSE ~FGA=(ME~(MOD(END_MFM,M)+TFMPíl_LEITURA{MOO_MEM)*Ml); PC(IPC)=MOD(PC(IPCl+l,16384); GOTO MOOlJLO_J_C@;
SIMU4406 SIMU4408 SlMU4410 SIMU4412 SIMU4414 SIMU4416 S1Mll4418 SIMU4420 SIMU4422 SIMU4424 SIMU4426 SIMU4428 SIMU4430 SIMU4432 SYMU4434 S1MU4436 SIMU4438 S 1MLJ4440 SIMU4442 SIMU4444 SIMU4446 SIMU4448 S1MU4450 SI4U4452 SIMU4454 STMU4456 SIMU4458
1-' N o
/*********************************************************************ISTMU4500 '* ************** C I C L O PC W **********************************ISIMU450l l*********************************************************************ISIMU4502 ~ODULO_Pcw: S1MU4504 FNO_MfM=~nD(RFGINDFX{5)y64)*256+RFGTNOFX(6); SIMU4506 MOD_MEM=FNO_MEM/M; SIMU4508 TF TTPO(MOD_MEM)=' 'THF.N 00 ; SIMU4510
PUT LIST('TFNTATIVA DF FSCRITA EM MODULO OE MEMORIA INEXISTENTF. 1 ); SIMU4512 GOTn FNDE; FNfl; SJMU4514 IF TIPO(PAG_MEM)~=•Fou• THEN
TF TIPO(PAG_MFM)='ROM' THEN OBSfRVACAO='VlOl MEM'; FLSE DO; MF.M(F.NO_MEM)=REGB;
NIJMFRO_Df_FSTAOOS=NtJMERO_OE_FSTAOOS+TEMPO_ESCRITA(PAG_MFM);F.ND; Fl~F
YF TTPO(TFMPO_LEITURA(PAf._MEM)l= 1 ROM 1 THEN OBSERVACAO='VIOL MEM'; FLSF DO;
MFM(MOO(EN~_MFM,M)+TFMPO_lEITURA(PAG_MEM)*M)=RfGB; NUMERn_oE_FSTADOl:i=NlJMERO_DF_ESTADO'i+
TEMPn_FSCRITA{TFMPO_LEITURA{PAG_MEM)); END; (;OTO ~ODULíl_PC I; SIMU4536
l*********************************************************************ISIMU4600 I* ************** M n íl U l O PC C ********************************ISIMU4601 l*********************************************************************ISIMU4607. MOOULO_PC C: SI MU4604 ílUT_LATCH=REGINOFX(O); SIMU4606 V ~t OR_P ER TF ER I CO= FL OOR ( 050403/ 2) *1 O+MOO ( D 50403,?) *4+ ( 020100-1 l / 2; SI MU460A GOTO MOílULO_I_O@; SIMU4610
~
N ~
l*********************************************************************ISIMU5000 I* ************** t íl A O R E G R E G ****************************/SIMU5001 l******~**************************************************************ISIMU5002 MOílULO_LRR: StMU5004 NOMF_nA_INSTRUCAn=•L• 11NO~E_Dn_RFGISTR0{050403)IINO~E_no_REGISTR0(0201DSIMU5008 OI; SlMU5010 NUMERO_Of_ESTAOO~=NUMERO_OF_FSTADOS+5; SIMU5014 RfGINDEXID~D4D3)=REGTNnFX{0201DO); SIMU5016 r,nrn ~ílOULO_PCI; SIMU501A
l*********************************************************************/SIMU5050 I* **************LO A n R E G M ~MOR IA *******************/SIMU5051 l*********************************************************************ISIMU5052 MílDULn_tRM: S IMU5054 LABFl2=MOOULO_LRM@~ GOTO MODULO_M; SJMU5056 MOOUL Cl_LRM@: SI MU505 8 NnMF_DA_TN~TRUCAO='l' flNOMF_On_RFGJSTR0(0504n3)f l'M'; SIMU5062 NUMFRO_OE_F.STAOOS=NIJMERO_OE_FSTADOS+8; SIMU5066 REGINDEX(0504D3)=REGB~ SIMU5068 GnTO ~ílnULíl_PCI; SIMU~070
l*********************************************************************ISIMU5100 ,. *************Ln~ n ME MOR I A REGISTRO ***********/SIMU5101 l*********************************************************************/SIMU5102 ,..OOIILO_LMR: SJMLl5104 NnMF_ílA_INSTRUCAn=•LM'IIN• Mf_OO_REGI~TRO{D2D1DO); SIMU5108 NUMFRO_OE_FSTAOOS=NUMERO_ílF_FSTAOOS+7; SIMU5110 RFGR=REGTNOEX(O?OlOO); SIMU5112 GnTn Mnnuto_PCW; SIMU5114
~ N N
l**~******************************************************************ISIMU5150 I* ************** L íl A O IMEDI ATO **************************/SIMU515l l*********************************************************************ISIMU5152
OECOnIFICACAO_O~_n201on(6,: ~onULO_LR_MI: LABELl=MOOULO_lR_MI~; GOTO MODULO_I; MODIJLO_LR_MJ@: tF 05D40~=7 THFN Díl;
MOíllllO_l MI: ~OME_OA_INSTRUCAO='LMI'; ~U~FRn_nF_FSTAOílS=NUMEPO_ílF_ESTADOS+g; GOTO MOOULíl_PCW; END;
MODI ILO_LR I: Nfl~E_DA_lN<;TQUCAíl='L' 11 NOt-lf_DO_RE(;JSTRO(D50403) 1 f' 1 1 ;
NUMFRíl_DE_ESTAOOS=NUMERO_OE_E5TAOO~+R; RFGINDEX(050403l=REGB; GOTO Mílf)ULO_PC I;
SJMU5154 S!MU5l56 SIMU5158 SIMU5160 StMU5162 SIMU5164 SIMU5166 SIMU5168 STMU5170 SIMU5172 SIMU5174 S!MlJ5176 SIMU5178 t--'
N v.J
l*********************************************************************ISIMU5200 I* ************** M íl OU L r INCREMENTO R E G ********/SIMU5201 /*********************************************************************ISIMU5202 MnnuLO_INR: SIMU5204 NO~F_DA_IN~TRUCAíl='IN'I INOMF_OO_RFGISTR0(050403); SIMU5206 NUMFRO_OF_ESTAílOS=NUMERO_Of_f~TADOS+~; SI~U520A OVERFLOW=CARRV; SIMU5210 RfGINílEX(íl5íl4n3),RFGTESTE=MOO(PFGINDEX(D5D403)+1,256); SIMU5212 r;nrn MODULO_C_z_c::_p; SIMU5214
l*********************************************************************ISIMU5250 I* ************** M n D U l O D FC REME N TO R E G ********ISIMU5251 l*********************************************************************ISIMU5252 Mí11)Ul n_nc R ! SI MU52 54 NnME_DA_INSTRUCAO=•oc•!JNOME_OO_REGISTRO(D50403); SIMU5256 NUM~RO_DE_FSTADOS=NUMERn_nE_FSTAOOS+~; SIMU5258 UNOFRFLílW=CAQQY; SIMU5260 REGJNDFX(050401l,REGTFSTE=MOO(REGINOEX(05D4D~)-1,256); SIMU5262 Gnrn Mnoutn_r_Z_S_P; SIMU5264
~
N -""'
l**#******************************************************************ISTMU5100 I* **************MO OU L íl AR I T METI C O R E G IS T R O*/SIMU5301 l*********************************************************************/SIMU5302 MOOUl.O_~LU_R: SI MU5104 TIPO_DE_RfFERFNCIA=N~ME_DO_RFGJSTRíl(D20lOO); SIMU5308
QFG8=~FGINOFX(02DlOO); SJMU5312 NUM fRO_nE_ES T Aonc;=NUMF.RO_OE_E<;T ~DOS +5; SI MU5314 GnTll MOíltJLO_AUI; SIMU5316
l*********************************************************************ISTMU5350 I* **************MODULO AR I T METI C O ME M ***********/SIMU5351 l*********************************************************************ISIMU5352 MOOULO_Al U_M: SI MU5354 TIPO_OF_REFFRFNCIA='M'; NUMERO_OE_FSTAOílS=NUMFRn_nE_ESTAOOS+B; SIMU5356 LABFL2=MnOULO_ALU; GOTO MOOULO_t-1; SIMU5358
/*********************************************************************fSIMU5400 I* ************** ~ n O U L n A L U I M F O I A T O ************/$ IMU5401 l*********************************************************************/SJMU5402
DFCOOIFICACAO_DF_020100{4): MOnULO_ALU_I: TTP0_QF_REFF~ENCIA='l'; NUMERO_OE_~STAOOS:NUMFRO_OE_ESTADOS+8; LABFLl=MOOULO_ALU~ GOTO MODULO_T;
SIMU5404 STMU5406 SIMU5408
~
N V1
l*********************************************************************ISTMU5450 I* ************** M íl n tJ Ln D ECO D I FICA C A O A l U ****/SIMU5451 l*********************************************************************ISIMU5452 MOOlll(l_AlU: S IMU5452
IF 05íl403=0 THEN GOTO MODULO_AO; SIMU545A TF 05íl40l=1 THFN GOTO MODULO_AC; SIMU5458 IF 050403=2 THFN GnTn Mnnutn_su; Sl~U5460 TF 0~0403=3 THEN GOTO MOOULO_SB; SIMU5462 TF 05040~=4 THFN GOTO ~ODULO_ND; SIMU5458 tF 050403=5 THFN GOTn MOOULO_XR; SIMU5466 IF n5íl403=6 THFN GOTn MOOULn_oR; STMU5468
GOTO MOOULO_CP; SIMU5470
i:j
°'
l*********************************************************************/SIMU5500 '* ************** ~ íl O li LO A D **********************************ISIMU5501 l*********************************************************************/SIMU5502 W'IOUL 1_An: S IMU5504 NOME_D A_ T NS TRUC MJ= • Aíl' 1 1 T J Píl_DE_R EFERf NC IA; SI MU5506 MOOIJL O_AO@: S IMU5508 TF ACUMULAílOQ(l)+~FGB>=25f. THEN ílVERFtnW=lB; SIMU5510 RF~TFSTf,ACUMULADílR(t)=MOO(AíUMULAOOR(l)+RFGB,256); SIMU5517 GOTn Mnotttn_c_z_S_P; S IMU5514
l*********************************************************************ISIMU5550 I* ************** M n OU ln AC **********************************ISIMU5551 l*********************************************************************ISIMIJ5552 MODULO_AC: SIMU5554 NOMf_~A_!NSTRUCAO='AC'I ITIPO_DF_RfFERENCIA; S!MU5556 JF RFGB+C~PRY(l)=?56 THEN OVERFLOW=lB; SIMU5558 RFGR=MnO(RFGB•CARRV(I,,?5~); S1MU5560 r;nrn MOOIJLO_At1m; S IMU5562 l*********************************************************************ISIMU5600 I* **************MO n U LO S U **********************************l~IMU5601 l*********************************************************************/STMU5607 MfJDlllíl_SU: SIMU5604 NOMF_~A_INSTPUCA0= 1 SU'IITIPO_nF_RFFERENCIA; SIMU5606 R Ft";R=2 56-Rf GB; SI MUK L/, GnTf) Mnoutn_Af)@; SIMU5610 l*********************************************************************ISIMU5650 I* **************MO OU l O S B **********************************ISIMU5651 l*********************************************************************ISIMU5652 MílílULO_SR: SJMU5604 NO~E_nA_INSTRUCAn=•SR•f tTIPO_OF_REFERFNCIA; SIMU5606 IF RF~A+AOPROW{l)=25~ THEN UNOFRFLOW=lB; SIMU5608 RFf,8=?56- ~ílO(REGB+CARRY(l),256); SIMU5610 GOTO ~nnutn_AD@; STMU5612
1-' N ~
I* *******************************************************************/SI~U5650 I* **************MO O lJ L 0 N n **********************************/SIMU5651 l*********************************************************************ISIMU5565 MOnUt íl_Nn: SI MlJ5654 Nn~F-~A_YNSTRUCAn=•ND'I ITIPn_DE_RFFERENCIA; SIMU5656 Rf(;TfSTE, ACUMULAOOR(l l=REGB&ACUMllLAOílR( 1); S1Mll565A GOTO MílOlJtO_C_Z_S_P; STMU5660
/*********************************************************************ISIMU5700 I* **************MO OU l O X R **********************************ISIMU570l l*********************************************************************/SIMU5702 MOOUtn_XR: SI MU5704 NílMF._~A_INSTRllCAfl-='XR' l lTTPO_OF_RFFFRF.NCIA; S IMU5706 Q FGTE S TF, ACUM~Jl A OfH ( 1 l =-,,R. FG8&ACUMUL Al10R ( l) 1 P FGB &-,,ACUMULA DOR ( 1); SI MIJ5758 GOTO MOOUlO_C_Z_~_P; SIMU5760
l*********************************************************************ISIMU5750 I* **************MO OU l O O R **********************************1SIMU575l l*********************************************************************/SIMU5752 MOOUtíl_OR: SIMU5754 NOME_DA_INC::TRUCAO='OR' 1 ITIPO_OF_RFFERENCIA; SIMU5756 RfGTFSTF,ACU~UtAnOR(l)=REGBIACUMULAOOR{l); SI~U5758 r,nro MOOUlO_C_Z_S_P; SIMU5760
/*********************************************************************/SIMU5800 I* **************MO D LJ LO CP **********************************1SIMU5801 l*********************************************************************ISIMU5802 MOl11lt 'l_CP: S IMU5804 NOME_OA_T NS TRIIC a O-=• CP• 1 I TI Pn_OE_R FFFR fNC IA; S t MU5806 IF ACU~UtAnOR(l)<REGB THEN UNílFRFLOW=l8; ~IMU5808 RFGTF~TF=MGD(ACUMULAnoq(l)+(256-RFGB),256); SIMU5810 GOTO MílDULO_C_Z_S_P; SIMU5812
>-' N 00
l*********************************************************************ISIMU5900 !***************ROTA C A n D O ACUMULA O O R ************ISIMU5901 l*********************************************************************ISIMU5902 MOílUtíl_RL_P C_R -'ll_R: NIIMFRO_OE_F STA nns=NUMERO_OE_FST AOOS +e;; CAPRYAUX=CARRY; CARRY=OB; G• Tn LABFL_ROTATF(MOO(O':i0403,4)); LAAEL_POTATf(O): NOME_DA_TN<;TRlJCA0= 1 RlC 1 ; GOTO MOOULO_RlCál; tABFl._RtlTATE(I): NOMf_DA_INSTRllCAfl='RRC•; GOTO MODULO_RRC@; LABFL_ROTATF.(2): NOME_ílA_INSTROCAO='RAL'; GOTO MOf1tJl(l_RAL@; LABFl_POTATE(1): NOME_OA_INSTRUCA0= 1 RAR 1 ; GOTO MOOULO_RAR@; MOílUL"1_RLCãl: MOOULl1_R Al@: IF ACUMULAOOR(l)>l27 THEN CARRY=lA; ACUMULADOR= ~orH ACUMULADOR ( l t *2, 256) +
CARRY*(D5D403=0)+ CAPRVAUX*(D5n403=2); GOTO MOOULO_PCT; M(1f)lll ':!_RR Câl: MnmJLO_R AR@:
TF M1íl(ACUMULADOR{ll,2)=1 THEN CARRY=lB; .õCIIMIJl AOOR=ACIIMIJLADOR/?+
12R*(CARRV*(0504D3=1)+CARRYAUX*(D5D4D3=3l); r;orn MOOULíl_PCI;
STMU5Q04 SIMU5906 SIMU5908 SIMU5910 SIMU5912 SIMU':i914 SIMU5916 SIMU5918 SlMU59?0 SIMU5922 SJMU5924 SIMIJ5926 SIMU5928 SIMU5930 SIMU5932 SIMU5934 SIMU5Q"36
..... N \.O
l*********************************************************************l~IMU6000 '***************MO n U Ln J li MP CAL L *********************ISIMU6001 l*********************************************************************ISIMU6002 MnnuLn_J_C: G1Tn MnOULO_M~; MOílUlíl_J_C@: IF n~D403)3 THFN 00; 0504D3=050403-4;CONDICAO=l8;TRUE_FALSE='T';ENn;
ELSE no; CONDICAO=OB;TRUF_FALSE=•F•;ENO; GOTO LABEL_JUMP_CALL{D20100/?)~ LA8Fl_JUMP_CALL(3l: NOMf_OA_INSTRUCAn=•CAL'; GOTO MOOUlíl_CAL; LAB~L_JU~P_CALL(2): NOME_DA_TNSTRUCAO='JMP•; GOTO MOOULO_JMP; LABEL_JUMP_CALL{1): NOME_ílA_I NS TRUCA'l=' C' 11 TRUE_FAl SE 11 NOME_DO_ff ( 050403); IF cnNnJCAO=FFCnNn(050403) THFN oo;
fJBSFRVAcan=• PULA •; GOTO MOOULO_CAL; FNO; ELSF no;
NllMFRíl_Of_ESTAOOS=NUMERO_Df_ESTAOOS+q; nBSFRVACAO='NAO PULA'; GOTO MOOUlíl_PCI; END;
LA8Fl_JUMP_CALL(01: NOME_OA_TN~TRUCA0='J'IITRUE_FAL~E11NOME_Oíl_FF{0504D3l; IF CnNntCAíl=FFCOND(O~D403) THFN DO;
OB<:fRVACan=• PULA •; (;QTO MílDULíl_JMP; ENO; El <; E 00;
NU~ER0_nE_F~TADOS=NUMFRn_nF_ESTAnnS+Q; OBSFPVACA0= 1 NAO PULA•; GOTO MODIJLO_PCJ; END;
MODULíl_CAL: IPC=MOD( !PC+l,8 ); MnnuLO_JMP: PC( IPC)=MOD(RFGA*2';6+RFGR,16384) ; NUMFRO_DE_fSTdDOS=NUMERn_oE_fSTADOS+ll; GOTO MOOULO_PCI;
SIMU6004 SIMU6C'06 SIMU6008 SIMU6010 SIMU6012 StMU6014 SIMU6016 SIMU6018 SIMU6020 SIMU6022 SIMlJ6024 SIMU6026 SIMU6028 SIMU6030 SIMU6032 SIMIJ6034 STMU6036 SIMU6038 SIMU6040 SIMU6042 SlMU6044 SIMU6046 SIMlJ6048 SIMU6050
~ ~ o
'*********************************************************************ISIMU6100 I* ***********MO D U ln R E TU Q N ******************************ISIMU6101 l*********************************************************************ISIMU6102
~FcnnIFICACAO_nF_02D1D0(7): ~ODULO_RET: SIMU6104 NOME_nA_JN~TRUCA0= 1 RFT 1 ; SIMU6106
~íl[)UlO_RET@: SIMU6108 NUMF RO_OF _E STA OílS=NUMERO_OE_FST ADOS+5; I PC=MOO ( I PC-1, 8); S IMU6 l 10 GOTO MOíllJLO_PC I; S IMU6 l l 2 l*********************************************************************/SIMU6150 I* *****MO D U l O R F TU R N C O N D I CIO NA L *********ISIMU6151 l*********************************************************************ISIMU6152
nfc•nJ F ICAC Afl_nF _0201no ( 3 l: MOOULO_RF _Te: IF 050401>~ THFN DO; 0~0403=050403-4; TRUf_FALSE='T'; CONDICAO=lB;
ELSE no; TRUE_FALSF=.•F•;. CONDICAO=OB; NOME_D~_TNSTRUCAO=•P• 1 fTRUE_FALSFI l NOME_DO_FF(05040~); JF FFCOND(D50403)=CO~OICAO THEN no; OBSERVACAO=' PULA •;
~OTO MODUL~_RET@; ENO; Nll~ERO_DE_ESTl\l)n~=NUMERO_DF _ESTADOS +1; OBSFRVACAO= 'NAO PULA•; GOTl'l ~noutn_PCI;
SIMU6154 ENO;SIMU6156 ENO;SIMU6158
SIMU6160 SIMU6162 SIMU6164 SIMU6166 SIMU6168
/*********************************************************************ISIMU6200 I* **************~O OU LO RESTAR T ***********************/SIMU6201 l*********************************************************************ISIMU6202
OECOOIFICACAO_DE_íl2Dl00(5): MOOULO_RST: NOMF_nA_TNSTRUCAíl='R<;T' 11•_• f f SURSTR(CHAP(D~D4íl~*R),LFNGTH(CHAR(D5040~*8))-1); NUMFRO_nF_ESTA00S=NUMERO_OF_FSTADnS+5; IPC=MOD( IPC+l,8); PC(JPC),Qf~e~n504D3*8; GOTO MOnULO_PCI;
STMU6204 SIMU6206 <;JMU6208 SIMU6210 SIMU6212
..... t>I .....
'**#******************************************************************/ '* ************** M íl n U LO INPUT OUTPUT ***************/ '*********************************************************************' wrnuu1_ 1_n: NUMFRJ_OF_FSTAOílS=NUMFRO_DF_fSTAOOS+8; GOTO MOOULO_PCC; MOOULO_T_O@: IF 0~0403<=1 THFN on;
ÇfLdTCH=CARRY{ll*lOOOR+PRTY(ll*lOOB+ZFRíl(l)*lOB+STGN{l) ; NOMF_ílA_IN~TRJCAíl='INP' lf•_•I ISUBSTP(VALOR_PERIFERIC0,4,2);
~OTO MOPULO_INP(VALOR_PERIFERICO); ENO;
NOMF_OA_TN<;TRUCAíl='OUT' l l •_• I ISUBSTR(VAL'JR_PFRIFERIC0,4,2); GOTO MODULn_OUT(VALnR_PFRIFERICO);
~ ~ N
133
... -'.X) .. ...... • .) -<t -> <t X. 1-L. .1.1
1 .u u
1 ..J :..J
""' ..J -...J ..J ,2,.
11 -J -:t ..l -:i ... X. --...... . .. .e. .. .u
-1 ::< 1 .. ..J .u ...... '...l ..l .. .e. 1 .:> .... J .. -> ,) ,- .:t ... ...J .... ... D ... -. ,-f 1 .... .::: ... J J .. ..l ..J,. - 1 ,-1 1
J) .t: - .J J'\ .. ...J 1, ..,j .. .. .. •• . .. _
.... ..J J .:::> - - _, -1 + -:t ... _ :, ":)
-1 \J "l ~ J'\ ... li .... >( > .... -- "t ..J - ... .... -J) J .. :,( .lJ .J li J- ..J ~ ~ -J. '.l. .:i.. .J. ,.\) i. u 1 _J ·i. '.l. ...)
.::: ..) ..::: L. .e...:: 'J 10 .J ..J L .... IL ::!:.. J .... .... ... ... .... li J - .:::: ::i ... -- .J .... .J '-1 '.l. 1 1 1 1 Y'. .J 'l.. .... ,_
.X: ..J 1 .J .J .J ;::..J J .J _J .J :, L. .:t;. _J ..J ..) J <t .:J ..J ..... _J ..J ..J ..J ..l ..l • ..t: .J J .:::i ..l ..J .J 1...) .J J ..J ~ ...., 1 ...J ...., ..:. ~ J ..J ::) J .J -::) ..l ") ..J ~ ..J ~ :t li ..J ~ ·.:i J ..J ..J _J J J ...) ...J ,::: .r. > >( ::> _J
>!. ') ::!:.. ~ -~ ~ ~ .J ::, .-, J .J .?_ ... J ~ ..l J ") :,) _.J ':) ::, ') J .) .J ...J u ,,= ..) '! .) ~ .J ~ ~ :., 2. "O J :i .... :t J :;
. MnouL n_nurt 101: MOOUL O_OUT ( l ll : MOOULO_OUT( l?l: M'lfJULíl_OIJT( 13): MOOUlíl_OUT(l4,: MOf1ULO_OUT(li;): MOOULO_íllJT( lt-l: MOOUI. O_O!JT { 17) : W1DUlíl_íJUT( ?íll : Monu1.o_nurt21>: Mí1n11l O_OIJT ( ??} :
Mílf)IJL(l_(llJT( 23) : MODULO_OUT { 24, : MOOULrl_OUT ( 25) : Ai!ODULO_(ll!T( 26) !
MOOULO_OUT(?7l: Mnnuto_nur<,n>: ~nnu1.1_n1nc 31 > : MílO!ll.O_OIIT( 1?}: M'lf)lllíl_OUT( 13) : MOOULO_OUT( 34): ~OOULO_OUT(1t;}: GOTn M(lnULO_PC T; MílOllLO_OUT( 16): PUT FDIT((MEM(J) on J='lUT_LATCH*64 Tn OUT_LATCH*64+63)) (Cíll(30),B(BJ,COL(~0),8(8l,COL (50),8(8l,C0t(60),8(8),COL(70l,B(8l, COLUWl ,BUH,COL(qQ),Bf8l,COltlOOJ,B(8l ); GílT'l MflDULn_PCI; Mílnllt n_OUT( 17):
NIJMF.RO_OE_FSTADOS-=NU~FRO_Of_FSTAnos +O; GllA~nA_ACtJMIJLAílíJR=ACUMULAOOR( 1);
GílTíJ MílDULO_PCI;
1--' ~ ~
l*********************************************************************/SIMU9850 I* ************** M n OU l O H A L T *****************************ISI~UQR51 l*********************************************************************ISIMUQ852 ~flOULO_Hl T: S IMU9854 NílMF_DA_T~STRJCAíl='HLT'; SIMUq856 ~U~FR~_DF_ESTADOS=~U~ERn_oE_ESTADflS+4; SIMU9858 GOTíl ~ODIILO_PC I; S 1MU9860
l*********************************************************************ISIMU9900 '* ********** T N ~ T R U C A O I N E XI S T F N T F **************/SIMU9901 l*********************************************************************ISIMLJg902 MOOULO_ 11\Jí=XT: S IMU9904 NUMl=R :J_m= _F STA 00S=NUMF.R o_nE_E S T Anns+i:;; S 1 MU9906 TF D?01íl0 THFN no;NO,..E_OA_IN<;TRUCAO='SFTlOl';REGTESTE=OOOOOOOOB;END; SIMU9908
EL~E Dn;NnME_DA_INc;TRUCAO='SETOlO';REGTESTE=lllllllOR;fND; SIMU9910 c;nro MOOUlíl_PCI; SIMuqq12
~
~ VI
l**~******************************************************************/SJMU9Ç5Q '***************MO O lJ LO F F C O N DICA O ***************ISIMU9951 l*********************************************************************/SIMU9952 MOOULO_C_Z_S_P: CONTADOP=O;CAPRY=OVERFLOW;UNDERFLOW,nVERFLOW=OB; TF PF~TF~TF=O THEN on;ZERO,PRTY=lB;SYGN=OB;GOTO MODULO_PCI;FND;
EL<::E ZERO=ílB; lF RFGTESTF>127 THEN SYGN=lB; ELSF SYGN=OB; DO NN~=7 TO O BY -1;
!F REGTF~TE>'**NNN-1 THFN on;CONTADOR=CONTAOOR+l; REGTE~TE=REGTFSTE-2**NNN; END;
ENO; JF M,nD(CONT~DílR,?.)=0 THEN PPTY=lB; ELSE PRTY=OB;
r,nrn MO[')Ulíl_PC I;
FNO~: FRfF JMAGEM_MFMnRT~; FNíl NílVO_PROGRAMA; GRAN_FINAl: fNn;
GnTn Nnvo_PROGRAMA;
SIMU9q54 SJMU9956 SIMU9958 SIMlJÇ960 SIMU9964 SIMU9q66 SIMU9968 S Hfü9970 S T MU9<H2 SIMl.19974 SIMLl9976
..... v,l
°'
\,; KCM l IJ (;
uuvC.u.i lv o LA I uvv1..,u,1,,ul 1 l.i.., l l(;\;Ld.i 2 I í\ L 11.i\..GUlr\.iV 3 ACA f-.J
u1O10Cuu 4 JF S vi '1
l.í.."Lt..Cll 5 l.U\.LÚI..LH, 6 .L.í.L1l1..u0 7 LMA .1.UuOO li l 8 ACjll l\JllllOl 9 CPH úllClülü 10 Cll vvl...LL.~\.i(i 11 üllJllll 1.:: íJllL<üüiU 13 LTC LJCC lvO 1 14 11111111 l ':J Vlllllüü 16 J IV f 111111:ul 17 ULlllll 18
L.üüOv 1 lU Ll;i.,i.i.,L\.ii.J
·u.L111.Ull
t.\.iJ..li,;1..(.l
lhJuUll.1. 001101.,0..., 11.,llUlll uvuluL.lU ;\..uvülíJlU l.i.lllLU\J 000ú01Ul uU .i.í. J.J. l l luH. h.uU 1111\JLUü 101Llô1.;0 lllllU.iu tu llüUuu vvüvullu uuu00O11 lulllllv uvh,lull V lvld 1WU Uvvu.1.(:111 uOllllll
381 .382 3o3
1 .::.8 1L9 13U 131 . .l.32 133 134 13:> 136 137 138 .13Y 140 141 142 143 144 145 146 147 148
,1. A l
CUT 35
DCL LAM l 1\ L G Ri". xAL 1-'
(A
RRC 00
LMA ~S1 ú RI: 1 XkA LlA XRA LMA I 1\ L LA 1
CPL RTZ JMP
hLI 1,,, u o o u u o v u u u o 4 LAA \,, í.; u o L L i.J ÍJ o u u o 9 lAA o u u ú v v lJ u u o () o 14
u i.J LA I 1.,u\JU l. v LI V u V o o 1 22 u 2 lNL L Ü u C l u o li o ü l l 27 Ll j ADA u o ü ü 2 e (; 0 u o 1 1 32 1--'
~
i.i 4 JF ::i 1,,, U U v 2 L o u o ü l l PULA 43 <.D
u . .:l ACA u u o ü '-1 L u u o o l l 48 u 4 JF :> u o ú li 4 v u u o u 1 1 PULA 59 V 3 AiJA L ü 1.1 u 8 L o u ti o 1 l 64 0 4 Jf.S u u ,u ü 8 l. ü o o (J 1 1 PULA 75 ü .3 ,ACA LU . .U(; 16 ü u u u o l 1 BU \J 4 JFS ..;0vl, 16 L ÍJ u o (.) l 1 PULA 91 ü .3 ACA u u o. o 32 ü \J ü u o 1 l 96 u .4 JF::i l; u u (; ;\ "
~~ e o o u o 1 ·l PULA 107 1..1 3 ACA i.J u (; o 64 u o o u u l l 112 u 4 JFS u u u G 64 (.; u u u ÍJ l l PULA 123 u 3 ALA (J v l v ld3 e o o o u l l 128
0 4 JfS .u \; l O 128 e o o ü o l l l\AG PULA 137 u 7 L fvA iJ ú l O 128 \; o o o o l l Vlül Mt:M 144 ÍJ 8 AIJM ú o 1 l 12'.1 \. ú ú V v l l l 1.52 I,; s e P t- u IJ l l lLS e o o o o l l 157 Í.i 10 CTL u v l l 129 e v o v o 1 l NAD PULA 166 u 13 C1C li u 1 l l,;;:~ C o v v o 1 1 f\AO PULA 175 ú 16 Jlv.P ü v l 1 129 e e o o o 1 1 186 1., lt.::lBl Ct-S u u l l 12'1 l.i u o u ú l l NAO PULA 195 V 1,. .LA l v v l .i 1 í.. ú u o o 1 1 1 203 LI 2 1 l\ L Li u o o l u ú o ü o 2 2 208 u 3 AEA l,í,;iJI,; 2 ü o ü o o 2 2 213 v 4 JF~ o u u u 2 \J u o ú o 2 2 PULA 224 u 3 AüÀ (; u ü ü 4 u (J o o ú 2 2 229 u 4 J F S e, u o e 4 1,. l.., o u ü 'l. 2 PULA 240 V .3 AGA u (., ,Ü o 8 G o o (J o L ·2 245 u 4 .JFS li (; ,U O 8 u u V o o 2 2 PULA 256 ..... V 3 ACA L4..0t. 16 {. ü u o o 2 2 2bl .i:::,.
o u 4 JfS ú u u u 16 u o ú o o 2 2 PULA 272 u .3 AJ.;A li i.., U u 32 u u \,) o o 2 2 277 V 4 J.FS u v O L 32 G G o o o 2 2 PULA 288 o 3 AGA o o Í..í o 64 o o o u o 2 2 293 u 4 JF!:i ,\J J.J u L, 64 L ü u ÍJ ü 2 2 PULA 304 ü J ALA u u l u l~él l., o u o o 2 2 309 ü 4 JF S L u l U l.Lô li u o u o 2. 2 NAO PULA 318 u 7 lMA v u l (, l.ib e (; u ú o 2. 2 VlOL MEM 325 iJ 6 AIJM u u l v 176 o {J ú u o 2 2 48 333 v S LPh \,; u 1 (.i l 7o v u u o o 2 2 338 u lu UZ li ü l O 176 (. o ti o o 2 2 I\AO PULA .347 u 13 CTC .ú ü l O 176 u o u u o 2 2 NAG PULA 356
u 16 JMP O U l G l?b e o v 16381 CFS \,,IUlO 176 o ú u (. LA l O li l O l e ü
o o o 2. u ü u 2 u o ú 2
2 2 NAO PULA 2. l
367 376 384
1--' .i::,.
1--'
i..; 2 lí''IL U U u l 1 o \; u ü o 3 3 389 () 3 AC.A .U U U v 2 u u u o o 3 3 394 ü 4 JFS {.. u \, i,; 2 (. (, u u ü 3 3 PULA 405 \) 3 ACA u u (; ü 4 u o ú o ü 3 3 410 u 4 Jf;:, {; u u (J 4 \; u u V u 3 3 PULA 421 u 3 ACA t. u o u 8 ü u ü o ü 3 3 426 u 4 .JFS U Ü U V 8 li u u o o 3 3 PULA 437 u 3 ACA e u u <.. 16 e () ü u o 3 3 442 u 4 JfS 0 v U (., 16 í. o ü u u 3 3 PULA 453 1-J u 3 ACA v u IJ U 32 l, u ú ú o -:. 3 458 +>-
"-- N
l PL PC l f\ S f L l S P A E e. D E H L M ESTADOS _________ u ____ 4_JFS __ 1.i u_u u __ 32 __ 1.i __ ú __ o __ o __ O _ 3 ____ 3 ____ PULA __________________________ 469 ____________
u 3 A[A o o u u 64 u u 0 o o 3 3 474 \J 4 JFS ú u ü o 64 () o ü u o 3 3 PULA 485 u 3 ACA ú u l U 1.:.:8 l \.; ú v o 3 3 490 J 4 JFS u u l u l2t1 {. o o o ü 3 3 NAO PULA 499 o 7 LMA u u 1 u l2t1 \., l; u u o 3 3 VIOL MEM 506
lbb O O l lJ 1.::8 l \,; o o o 3 3 511 lbB u u l u 12b (. G u u o 3 3 516 ......
u E ACM 1 l ü l L i.. v (J i.J u 3 3 128 524 ~ ~
ü S (Ph o l u 1 o G v o o o 3 3 529 V l\J CTZ C l O l I.J u \j o u u ::. 3 PULA 540 ..;
l lé i..:'.é I Nf.>_ 3 L 1 u l 25~ t,; ü o í.; o 3 3 548 l J.6i..:'.S LLA u l u l 255 li o o o O 255 255 553 l lé l 3li SLA l l u l v o u o V 0 255 255 558 l ltl31 JMP l l O l l, \, u u u O 255 255 569 l 12.3.5 S J,:l 1 l 1 u l u o u ü o o 2:i5 255 573 l 1.d3(H, hL J l l u 1 ÍJ ' o u o O 2,, 255 5-11 1 1.:'..161 1-LJ l l U l o v \.; o o O 255 25-5 581