Mudanças entre as edições de "Painel Banctec 91690"

De Garoa Hacker Clube
Ir para navegação Ir para pesquisar
(Desfeita a edição 8045 de Leandrolsilva (Discussão))
 
(15 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 10: Linha 10:
 
É composto por um display de 7 linhas por 40 colunas, com dois botões (FEED, STOP) e um teclado numérico com algumas teclas adicionais (A,B,C,D,E,F,DO,CHG,CLR,EX).
 
É composto por um display de 7 linhas por 40 colunas, com dois botões (FEED, STOP) e um teclado numérico com algumas teclas adicionais (A,B,C,D,E,F,DO,CHG,CLR,EX).
   
  +
Fotos do equipamento no qual o painel era utilizado:
'''Documentação'''
 
   
  +
<center>
Temos também boa parte da documentação de manutenção da máquina na qual o painel era utilizado.
 
  +
<gallery widths=200px>
   
  +
Arquivo:DHU_MAIN.jpg|link=Arquivo:DHU_MAIN.jpg|Módulo principal|alt=Módulo principal
[[Arquivo:PAINEL_BANCTEC_91690.PDF|Documentação de manutenção do equipamento]]
 
  +
  +
Arquivo:DHU_1.jpg|link=Arquivo:DHU_1.jpg|Máquina completa|alt=Máquina completa
  +
  +
</gallery>
  +
</center>
  +
  +
  +
'''Documentação'''
  +
  +
Temos também boa parte da documentação de manutenção da máquina na qual o painel era utilizado. [[Painel_Banctec_91690#27/Ago/2012|Documentação do Painel Banctec 91690]]
   
 
'''Quando'''
 
'''Quando'''
   
A idéia é trabalhar no painel durante o evento [[Eletrônica_com_carinho|Eletrônica com Carinho]] que acontece às segundas-feiras, às 19h 30min.
+
A idéia é trabalhar no painel durante o evento <strike>[[Eletrônica_com_carinho|Eletrônica com Carinho]]</strike> [[Retroprogramação]] que acontece às segundas-feiras, às 19h 30min.
  +
  +
  +
'''Objetivos'''
  +
* <strike>Fazer dump da EPROM para tentar entender como o painel processa e exibe os dados.</strike> - OK em 21/Set/2012
  +
* Preparar uma fonte com saídas DC de 5v e 185v para alimentar o painel; (semelhante às fontes para nixie tube)
  +
* Localizar o canal de comunicação entre a placa principal e a placa que controla o display;
  +
* Usar um microcontrolador para enviar caracteres diretamente para a placa que controla o display. (deve funcionar de acordo com a documentação)
  +
* Analisar o código assembly na tentaiva de entender o funcionamento da placa principal.
  +
** De acordo com a documentação a placa principal recebe o texto compactado (3 linhas) e transmite para a placa que controla o display (7 linhas)
  +
  +
  +
'''Interessados'''
  +
  +
* [[Usuário:Leandrolsilva|Leandro Luciano]]
  +
* [[Usuário:Juca|Juca]]
  +
* (Preencha seu nome aqui)
  +
   
   
Linha 25: Linha 53:
 
Esta página será utilizada para registrar o progresso das atividades.
 
Esta página será utilizada para registrar o progresso das atividades.
   
==27/08/2012==
+
==27/Ago/2012==
  +
  +
===Documentação===
  +
  +
Documentação do equipamento: [[Arquivo:PAINEL_BANCTEC_91690.PDF]]
  +
  +
===Fotos (ToDo)===
   
 
O painel foi desmontado e tiramos fotos de todas as placas.
 
O painel foi desmontado e tiramos fotos de todas as placas.
Linha 31: Linha 65:
 
Revisamos a documentação e localizamos o esquemático das placas que compõem o painel.
 
Revisamos a documentação e localizamos o esquemático das placas que compõem o painel.
   
'''Próximo passo:''' Fazer dump da EPROM para tentar entender como o painel processa e exibe os dados.
+
<strike>'''Próximo passo:''' Fazer dump da EPROM para tentar entender como o painel processa e exibe os dados.</strike>
   
 
==06/Set/2012==
 
==06/Set/2012==
Linha 38: Linha 72:
   
 
Documentação menciona TTL PROM 2048 x8. Etiqueta do que parece ser a EPROM tem escrito o código 0111-004.
 
Documentação menciona TTL PROM 2048 x8. Etiqueta do que parece ser a EPROM tem escrito o código 0111-004.
 
   
 
No esquemático o chip está identificado como dm87s191
 
No esquemático o chip está identificado como dm87s191
   
  +
===Datasheet DM87s191 ===
  +
Datasheet DM87s191 - 2K x 8 TTL PROM Memory - DIP 24 pinos [[Arquivo:DM87S191.pdf]]
  +
  +
===Pinagem DM87s191 ===
  +
*24 - Vcc
  +
*23 - A8
  +
*22 - A9
  +
*21 - A10 (MSB)
  +
*20 - !CE1
  +
*19 - CE2
  +
*18 - CE3
  +
*17 - DO7 (MSB)
  +
*16 - DO6
  +
*15 - DO5
  +
*14 - DO4
  +
*13 - DO3
  +
*12 - GND
  +
*11 - DO2
  +
*10 - DO1
  +
*09 - DO0 (LSB)
  +
*08 - A0 (LSB)
  +
*07 - A1
  +
*06 - A2
  +
*05 - A3
  +
*04 - A4
  +
*03 - A5
  +
*02 - A6
  +
*01 - A7
  +
  +
<strike>'''Próximos passos:''' Fazer dump da EPROM, rodar um disassembler e analisar o código para tentar entender como o painel processa e exibe os dados.</strike>
  +
  +
==21/Set/2012==
  +
  +
Dump da EPROM efetuado
  +
  +
Foram utilizados dois CI SN74393N - Dual 4-bit counter para passar os endereços para a EPROM (11 bits) e um arduino para ler os dados (8 bits por endereço).
  +
  +
===DUMP da EPROM (dm87s191)===
  +
  +
<pre>
  +
0 02 00 26 FF FF FF FF FF FF FF FF 02 01 80 FF FF
  +
10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
20 FF FF FF 02 02 CA 75 D0 00 75 90 D4 78 01 76 AA
  +
30 B6 AA FD 08 B8 80 F7 78 01 76 55 B6 55 FD 08 B8
  +
40 50 F7 78 00 76 00 08 B8 80 FA 75 81 10 75 2C 01
  +
50 75 2D FE 79 74 78 74 75 D0 08 79 30 78 30 D2 7F
  +
60 90 40 00 E0 F5 2E 75 89 21 75 8D FD 75 8B FD 75
  +
70 8C F0 75 8A 00 75 B8 02 00 00 00 75 98 70 75 88
  +
80 50 75 A8 92 D2 95 D2 94 C2 94 12 00 92 12 01 6A
  +
90 80 F8 30 B3 6E 75 D0 08 E9 98 60 67 E6 08 B8 74
  +
A0 02 78 30 B4 0D 02 80 65 B4 0A 02 80 5C B4 0E 02
  +
B0 80 7E B4 0C 02 80 5B B4 11 02 80 7E B4 13 02 80
  +
C0 77 B4 14 02 80 62 B4 15 02 80 61 B4 08 02 80 35
  +
D0 B4 17 02 80 14 B4 87 13 C0 D0 75 D0 00 F7 09 B9
  +
E0 80 02 79 74 D0 D0 02 01 68 74 87 AD 2B BD 20 02
  +
F0 80 76 05 2B 90 20 00 F0 7F 50 DF FE D2 91 20 B3
  +
100 FD C2 91 80 63 15 2B 80 47 05 2A 80 43 75 2B 00
  +
110 80 3E 75 2B 00 75 2A 00 D2 93 7F 50 DF FE C2 93
  +
120 20 B3 FD 30 B3 FD 80 40 D2 92 80 3C C2 92 80 38
  +
130 75 2B 00 75 2A 00 80 18 D2 7D E9 98 60 FC E6 30
  +
140 7D 06 F5 2A C2 7D 80 02 F5 2B 08 B8 74 02 78 30
  +
150 75 F0 20 E5 2A A4 25 2B 90 20 00 F0 7F 50 DF FE
  +
160 D2 90 7F 50 DF FE C2 90 00 22 30 7F 12 75 D0 00
  +
170 E9 98 60 0B E6 F5 99 C2 7F 08 B8 80 02 78 74 22
  +
180 C0 D0 C0 E0 C0 F0 C0 82 C0 83 75 D0 00 D2 94 C2
  +
190 94 75 8C F0 75 8A 00 75 83 10 E5 2C FE F5 82 E0
  +
1A0 54 07 B4 07 2A 20 7E 02 80 1F 05 2D AD 2D BD 00
  +
1B0 66 C2 7E 75 2D FE 20 7B 06 20 7C 0B 02 02 A6 C2
  +
1C0 7B 75 28 88 02 02 A6 C2 7C 75 2D FE 02 02 B5 30
  +
1D0 7E 37 75 2D FE C0 82 75 82 01 E0 D0 82 54 07 B4
  +
1E0 00 06 74 84 F5 28 C2 7C E5 28 B4 80 03 02 02 58
  +
1F0 B4 84 08 20 7B 10 D2 7B 02 02 A6 B4 85 08 20 7C
  +
200 05 D2 7C 02 02 A6 02 02 BF 05 2D AD 2D BD 00 3D
  +
210 BE 01 07 24 02 80 13 02 02 B5 BE 02 04 24 0A 80
  +
220 09 BE 04 04 24 12 80 02 24 1A 83 80 26 84 85 31
  +
230 34 37 30 80 00 00 00 32 35 38 46 81 00 00 00 33
  +
240 36 39 45 82 00 00 00 41 42 43 44 83 00 02 02 BF
  +
250 02 01 9C D2 7E 02 02 A2 C0 82 75 82 08 E0 D0 82
  +
260 54 07 B4 06 5A C0 82 C0 83 C0 D0 75 D0 08 12 01
  +
270 12 74 FE 12 00 F4 D2 94 C2 94 D5 29 F6 30 8D FD
  +
280 C2 8D D2 94 C2 94 75 8C F0 75 8A 00 05 29 E5 29
  +
290 B4 00 EA 12 01 12 74 86 D0 D0 D0 83 D0 82 80 02
  +
2A0 74 80 F5 28 80 19 E5 28 F7 09 B9 80 02 79 74 20
  +
2B0 7B 0D 20 7C 0A EE 23 F5 2C BE 10 94 75 2C 01 D0
  +
2C0 83 D0 82 D0 F0 D0 E0 D0 D0 32 C0 D0 C0 E0 C0 F0
  +
2D0 C0 82 C0 83 75 D0 08 30 99 06 C2 99 D2 7F 80 0B
  +
2E0 C2 98 E5 99 F7 09 B9 74 02 79 30 D0 83 D0 82 D0
  +
2F0 F0 D0 E0 D0 D0 32 FF FF FF FF FF FF FF FF FF FF
  +
300 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
310 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
320 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
330 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
340 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
350 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
360 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
370 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
380 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
390 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
3A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
3B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
3C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
3D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
3E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
3F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
400 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
410 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
420 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
430 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
440 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
450 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
460 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
470 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
480 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
490 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
4A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
4B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
4C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
4D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
4E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
4F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
500 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
510 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
520 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
530 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
540 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
550 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
560 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
570 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
580 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
590 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
5A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
5B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
5C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
5D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
5E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
5F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
600 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
610 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
620 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
630 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
640 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
650 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
660 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
670 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
680 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
690 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
6A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
6B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
6C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
6D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
6E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
6F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
700 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
710 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
720 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
730 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
740 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
750 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
760 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
770 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
780 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
790 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
7A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
7B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
7C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
7D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
7E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
7F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  +
</pre>
  +
  +
  +
===Sketch arduino usado para fazer o dump===
  +
  +
Adaptado do que foi usado no projeto [[IntelbrasOP4114]]
  +
  +
<pre>
  +
//counter ICs = 2x SN74393N (total of 16 bits of which we use 11 to address the 16k of ROM mem)
  +
int counter_reset = 2; //pin 2 & 12 of both counter ICs
  +
int counter_increment = 3; //pin 1 of the first counter IC
  +
  +
//eprom IC = dm87s191
  +
int eprom_data[8] = {6,7,8,9,10,11,12,13}; // pins 09, 10, 11, 13, 14, 15, 16, 17 of the eprom IC
  +
//CE - CHIP ENABLE PINS
  +
int oe=4; //pin 18 (CE2) of the eprom IC
  +
int ce=5; //pin 19 (CE3) of the eprom IC
  +
// PIN 20 (!CE1) connected to ground directly
  +
  +
long int address;
  +
int data;
  +
  +
void reset_counter(){
  +
digitalWrite(counter_increment, HIGH);
  +
  +
digitalWrite(counter_reset, HIGH);
  +
delay(10);
  +
digitalWrite(counter_reset, LOW);
  +
}
  +
  +
void increment_counter(){
  +
digitalWrite(counter_increment, LOW);
  +
delay(10);//do we need it?
  +
digitalWrite(counter_increment, HIGH);
  +
}
  +
  +
void setup(){
  +
address=0x0;
  +
int i;
  +
  +
for (i=0;i<8;i++){
  +
pinMode(eprom_data[i], INPUT);
  +
}
  +
  +
pinMode(counter_reset, OUTPUT);
  +
pinMode(counter_increment, OUTPUT);
  +
pinMode(oe, OUTPUT);
  +
pinMode(ce, OUTPUT);
  +
  +
digitalWrite(oe, LOW);
  +
digitalWrite(ce, LOW);
  +
  +
reset_counter();
  +
Serial.begin(38400);
  +
}
  +
  +
int readDm87s191_counter(){
  +
int i,j;
  +
  +
digitalWrite(oe, HIGH);
  +
digitalWrite(ce, HIGH);
  +
  +
data=0;
  +
for (i=0, j=1; i<8; i++,j*=2){
  +
if (digitalRead(eprom_data[i])==HIGH){
  +
data+=j;
  +
}
  +
}
  +
  +
digitalWrite(oe, LOW);
  +
digitalWrite(ce, LOW);
  +
  +
increment_counter();
  +
return data;
  +
}
  +
  +
long int MAXADDR=0x7ff;
  +
int chunk_size = 16;
  +
void loop(){
  +
reset_counter();
  +
  +
while(address<=MAXADDR){
  +
  +
Serial.print(address, HEX);
  +
Serial.print("\t");
  +
for (int i=0; i<chunk_size; i++){
  +
Serial.print(readDm87s191_counter(), HEX);
  +
Serial.print(" ");
  +
}
  +
Serial.println();
  +
  +
address+=chunk_size;
  +
}
  +
while(true){}
  +
}
  +
  +
</pre>
  +
  +
===Disassembly do binário===
  +
  +
Possível disassembly - não confirmado se está correto
  +
  +
Efetuado com a ferramenta d51v26
  +
  +
<pre>
  +
;
  +
; D51 V2.6 8051 Disassembly of .\rom_painel_banctec.bin
  +
; 9/21/2012 22:48
  +
;
  +
org 0
  +
;
  +
reset: ljmp X0026 ; 0000 02 00 26 ..&
  +
;
  +
ie0vec: mov r7,a ; 0003 ff . ; data truncated
  +
;
  +
org 0bh
  +
;
  +
tf0vec: ljmp X0180 ; 000b 02 01 80 ...
  +
;
  +
org 12h
  +
;
  +
here: mov r7,a ; 0012 ff .
  +
ie1vec: mov r7,a ; 0013 ff . ; data truncated
  +
;
  +
org 1bh
  +
;
  +
tf1vec: mov r7,a ; 001b ff . ; data truncated
  +
;
  +
org 23h
  +
;
  +
servec: ljmp X02ca ; 0023 02 02 ca ..J
  +
;
  +
X0026: mov psw,#0 ; 0026 75 d0 00 uP.
  +
mov p1,#0d4h ; 0029 75 90 d4 u.T
  +
mov r0,#1 ; 002c 78 01 x.
  +
X002e: mov @r0,#0aah ; 002e 76 aa v*
  +
X0030: cjne @r0,#0aah,X0030 ; 0030 b6 aa fd 6*}
  +
inc r0 ; 0033 08 .
  +
cjne r0,#80h,X002e ; 0034 b8 80 f7 8.w
  +
mov r0,#1 ; 0037 78 01 x.
  +
X0039: mov @r0,#55h ; 0039 76 55 vU
  +
X003b: cjne @r0,#55h,X003b ; 003b b6 55 fd 6U}
  +
inc r0 ; 003e 08 .
  +
cjne r0,#50h,X0039 ; 003f b8 50 f7 8Pw
  +
mov r0,#0 ; 0042 78 00 x.
  +
X0044: mov @r0,#0 ; 0044 76 00 v.
  +
inc r0 ; 0046 08 .
  +
cjne r0,#80h,X0044 ; 0047 b8 80 fa 8.z
  +
mov sp,#10h ; 004a 75 81 10 u..
  +
mov 2ch,#1 ; 004d 75 2c 01 u,.
  +
mov 2dh,#0feh ; 0050 75 2d fe u-~
  +
mov r1,#74h ; 0053 79 74 yt
  +
mov r0,#74h ; 0055 78 74 xt
  +
mov psw,#8 ; 0057 75 d0 08 uP.
  +
mov r1,#30h ; 005a 79 30 y0
  +
mov r0,#30h ; 005c 78 30 x0
  +
setb 2fh.7 ; 005e d2 7f R.
  +
mov dptr,#X4000 ; 0060 90 40 00 .@.
  +
movx a,@dptr ; 0063 e0 `
  +
mov 2eh,a ; 0064 f5 2e u.
  +
mov tmod,#21h ; 0066 75 89 21 u.!
  +
mov th1,#0fdh ; 0069 75 8d fd u.}
  +
mov tl1,#0fdh ; 006c 75 8b fd u.}
  +
mov th0,#0f0h ; 006f 75 8c f0 u.p
  +
mov tl0,#0 ; 0072 75 8a 00 u..
  +
mov ip,#2 ; 0075 75 b8 02 u8.
  +
nop ; 0078 00 . ; data truncated
  +
;
  +
org 7bh
  +
;
  +
mov scon,#70h ; 007b 75 98 70 u.p
  +
mov tcon,#50h ; 007e 75 88 50 u.P
  +
mov ie,#92h ; 0081 75 a8 92 u(.
  +
setb p1.5 ; 0084 d2 95 R.
  +
setb p1.4 ; 0086 d2 94 R.
  +
clr p1.4 ; 0088 c2 94 B.
  +
X008a: lcall X0092 ; 008a 12 00 92 ...
  +
lcall X016a ; 008d 12 01 6a ..j
  +
sjmp X008a ; 0090 80 f8 .x
  +
;
  +
X0092: jnb int1,X0103 ; 0092 30 b3 6e 03n
  +
mov psw,#8 ; 0095 75 d0 08 uP.
  +
mov a,r1 ; 0098 e9 i
  +
subb a,r0 ; 0099 98 .
  +
jz X0103 ; 009a 60 67 `g
  +
mov a,@r0 ; 009c e6 f
  +
inc r0 ; 009d 08 .
  +
cjne r0,#74h,X00a3 ; 009e b8 74 02 8t.
  +
mov r0,#30h ; 00a1 78 30 x0
  +
X00a3: cjne a,#0dh,X00a8 ; 00a3 b4 0d 02 4..
  +
sjmp X010d ; 00a6 80 65 .e
  +
;
  +
X00a8: cjne a,#0ah,X00ad ; 00a8 b4 0a 02 4..
  +
sjmp X0109 ; 00ab 80 5c .\
  +
;
  +
X00ad: cjne a,#0eh,X00b2 ; 00ad b4 0e 02 4..
  +
sjmp X0130 ; 00b0 80 7e .~
  +
;
  +
X00b2: cjne a,#0ch,X00b7 ; 00b2 b4 0c 02 4..
  +
sjmp X0112 ; 00b5 80 5b .[
  +
;
  +
X00b7: cjne a,#11h,X00bc ; 00b7 b4 11 02 4..
  +
sjmp X013a ; 00ba 80 7e .~
  +
;
  +
X00bc: cjne a,#13h,X00c1 ; 00bc b4 13 02 4..
  +
sjmp X0138 ; 00bf 80 77 .w
  +
;
  +
X00c1: cjne a,#14h,X00c6 ; 00c1 b4 14 02 4..
  +
sjmp X0128 ; 00c4 80 62 .b
  +
;
  +
X00c6: cjne a,#15h,X00cb ; 00c6 b4 15 02 4..
  +
sjmp X012c ; 00c9 80 61 .a
  +
;
  +
X00cb: cjne a,#8,X00d0 ; 00cb b4 08 02 4..
  +
sjmp X0105 ; 00ce 80 35 .5
  +
;
  +
X00d0: cjne a,#17h,X00d5 ; 00d0 b4 17 02 4..
  +
sjmp X00e9 ; 00d3 80 14 ..
  +
;
  +
X00d5: cjne a,#87h,X00eb ; 00d5 b4 87 13 4..
  +
push psw ; 00d8 c0 d0 @P
  +
mov psw,#0 ; 00da 75 d0 00 uP.
  +
mov @r1,a ; 00dd f7 w
  +
inc r1 ; 00de 09 .
  +
cjne r1,#80h,X00e4 ; 00df b9 80 02 9..
  +
mov r1,#74h ; 00e2 79 74 yt
  +
X00e4: pop psw ; 00e4 d0 d0 PP
  +
ljmp X0168 ; 00e6 02 01 68 ..h
  +
;
  +
X00e9: mov a,#87h ; 00e9 74 87 t.
  +
X00eb: mov r5,2bh ; 00eb ad 2b -+
  +
cjne r5,#20h,X00f2 ; 00ed bd 20 02 = .
  +
sjmp X0168 ; 00f0 80 76 .v
  +
;
  +
X00f2: inc 2bh ; 00f2 05 2b .+
  +
X00f4: mov dptr,#X2000 ; 00f4 90 20 00 . .
  +
movx @dptr,a ; 00f7 f0 p
  +
mov r7,#50h ; 00f8 7f 50 .P
  +
X00fa: djnz r7,X00fa ; 00fa df fe _~
  +
setb p1.1 ; 00fc d2 91 R.
  +
X00fe: jb int1,X00fe ; 00fe 20 b3 fd 3}
  +
clr p1.1 ; 0101 c2 91 B.
  +
X0103: sjmp X0168 ; 0103 80 63 .c
  +
;
  +
X0105: dec 2bh ; 0105 15 2b .+
  +
sjmp X0150 ; 0107 80 47 .G
  +
;
  +
X0109: inc 2ah ; 0109 05 2a .*
  +
sjmp X0150 ; 010b 80 43 .C
  +
;
  +
X010d: mov 2bh,#0 ; 010d 75 2b 00 u+.
  +
sjmp X0150 ; 0110 80 3e .>
  +
;
  +
X0112: mov 2bh,#0 ; 0112 75 2b 00 u+.
  +
mov 2ah,#0 ; 0115 75 2a 00 u*.
  +
setb p1.3 ; 0118 d2 93 R.
  +
mov r7,#50h ; 011a 7f 50 .P
  +
X011c: djnz r7,X011c ; 011c df fe _~
  +
clr p1.3 ; 011e c2 93 B.
  +
X0120: jb int1,X0120 ; 0120 20 b3 fd 3}
  +
X0123: jnb int1,X0123 ; 0123 30 b3 fd 03}
  +
sjmp X0168 ; 0126 80 40 .@
  +
;
  +
X0128: setb p1.2 ; 0128 d2 92 R.
  +
sjmp X0168 ; 012a 80 3c .<
  +
;
  +
X012c: clr p1.2 ; 012c c2 92 B.
  +
sjmp X0168 ; 012e 80 38 .8
  +
;
  +
X0130: mov 2bh,#0 ; 0130 75 2b 00 u+.
  +
mov 2ah,#0 ; 0133 75 2a 00 u*.
  +
sjmp X0150 ; 0136 80 18 ..
  +
;
  +
X0138: setb 2fh.5 ; 0138 d2 7d R}
  +
X013a: mov a,r1 ; 013a e9 i
  +
subb a,r0 ; 013b 98 .
  +
jz X013a ; 013c 60 fc `|
  +
mov a,@r0 ; 013e e6 f
  +
jnb 2fh.5,X0148 ; 013f 30 7d 06 0}.
  +
mov 2ah,a ; 0142 f5 2a u*
  +
clr 2fh.5 ; 0144 c2 7d B}
  +
sjmp X014a ; 0146 80 02 ..
  +
;
  +
X0148: mov 2bh,a ; 0148 f5 2b u+
  +
X014a: inc r0 ; 014a 08 .
  +
cjne r0,#74h,X0150 ; 014b b8 74 02 8t.
  +
mov r0,#30h ; 014e 78 30 x0
  +
X0150: mov b,#20h ; 0150 75 f0 20 up
  +
mov a,2ah ; 0153 e5 2a e*
  +
mul ab ; 0155 a4 $
  +
add a,2bh ; 0156 25 2b %+
  +
mov dptr,#X2000 ; 0158 90 20 00 . .
  +
movx @dptr,a ; 015b f0 p
  +
mov r7,#50h ; 015c 7f 50 .P
  +
X015e: djnz r7,X015e ; 015e df fe _~
  +
setb p1.0 ; 0160 d2 90 R.
  +
mov r7,#50h ; 0162 7f 50 .P
  +
X0164: djnz r7,X0164 ; 0164 df fe _~
  +
clr p1.0 ; 0166 c2 90 B.
  +
X0168: nop ; 0168 00 .
  +
ret ; 0169 22 "
  +
;
  +
X016a: jnb 2fh.7,X017f ; 016a 30 7f 12 0..
  +
mov psw,#0 ; 016d 75 d0 00 uP.
  +
mov a,r1 ; 0170 e9 i
  +
subb a,r0 ; 0171 98 .
  +
jz X017f ; 0172 60 0b `.
  +
mov a,@r0 ; 0174 e6 f
  +
mov sbuf,a ; 0175 f5 99 u.
  +
clr 2fh.7 ; 0177 c2 7f B.
  +
inc r0 ; 0179 08 .
  +
cjne r0,#80h,X017f ; 017a b8 80 02 8..
  +
mov r0,#74h ; 017d 78 74 xt
  +
X017f: ret ; 017f 22 "
  +
;
  +
X0180: push psw ; 0180 c0 d0 @P
  +
push acc ; 0182 c0 e0 @`
  +
push b ; 0184 c0 f0 @p
  +
push dpl ; 0186 c0 82 @.
  +
push dph ; 0188 c0 83 @.
  +
mov psw,#0 ; 018a 75 d0 00 uP.
  +
setb p1.4 ; 018d d2 94 R.
  +
clr p1.4 ; 018f c2 94 B.
  +
mov th0,#0f0h ; 0191 75 8c f0 u.p
  +
mov tl0,#0 ; 0194 75 8a 00 u..
  +
mov dph,#10h ; 0197 75 83 10 u..
  +
mov a,2ch ; 019a e5 2c e,
  +
X019c: mov r6,a ; 019c fe ~
  +
mov dpl,a ; 019d f5 82 u.
  +
movx a,@dptr ; 019f e0 `
  +
anl a,#7 ; 01a0 54 07 T.
  +
cjne a,#7,X01cf ; 01a2 b4 07 2a 4.*
  +
jb 2fh.6,X01aa ; 01a5 20 7e 02 ~.
  +
sjmp X01c9 ; 01a8 80 1f ..
  +
;
  +
X01aa: inc 2dh ; 01aa 05 2d .-
  +
mov r5,2dh ; 01ac ad 2d --
  +
cjne r5,#0,X0217 ; 01ae bd 00 66 =.f
  +
clr 2fh.6 ; 01b1 c2 7e B~
  +
mov 2dh,#0feh ; 01b3 75 2d fe u-~
  +
jb 2fh.3,X01bf ; 01b6 20 7b 06 {.
  +
jb 2fh.4,X01c7 ; 01b9 20 7c 0b |.
  +
ljmp X02a6 ; 01bc 02 02 a6 ..&
  +
;
  +
X01bf: clr 2fh.3 ; 01bf c2 7b B{
  +
mov 28h,#88h ; 01c1 75 28 88 u(.
  +
ljmp X02a6 ; 01c4 02 02 a6 ..&
  +
;
  +
X01c7: clr 2fh.4 ; 01c7 c2 7c B|
  +
X01c9: mov 2dh,#0feh ; 01c9 75 2d fe u-~
  +
ljmp X02b5 ; 01cc 02 02 b5 ..5
  +
;
  +
X01cf: jnb 2fh.6,X0209 ; 01cf 30 7e 37 0~7
  +
mov 2dh,#0feh ; 01d2 75 2d fe u-~
  +
push dpl ; 01d5 c0 82 @.
  +
mov dpl,#1 ; 01d7 75 82 01 u..
  +
movx a,@dptr ; 01da e0 `
  +
pop dpl ; 01db d0 82 P.
  +
anl a,#7 ; 01dd 54 07 T.
  +
cjne a,#0,X01e8 ; 01df b4 00 06 4..
  +
mov a,#84h ; 01e2 74 84 t.
  +
mov 28h,a ; 01e4 f5 28 u(
  +
clr 2fh.4 ; 01e6 c2 7c B|
  +
X01e8: mov a,28h ; 01e8 e5 28 e(
  +
cjne a,#80h,X01f0 ; 01ea b4 80 03 4..
  +
ljmp X0258 ; 01ed 02 02 58 ..X
  +
;
  +
X01f0: cjne a,#84h,X01fb ; 01f0 b4 84 08 4..
  +
jb 2fh.3,X0206 ; 01f3 20 7b 10 {.
  +
setb 2fh.3 ; 01f6 d2 7b R{
  +
ljmp X02a6 ; 01f8 02 02 a6 ..&
  +
;
  +
X01fb: cjne a,#85h,X0206 ; 01fb b4 85 08 4..
  +
jb 2fh.4,X0206 ; 01fe 20 7c 05 |.
  +
setb 2fh.4 ; 0201 d2 7c R|
  +
ljmp X02a6 ; 0203 02 02 a6 ..&
  +
;
  +
X0206: ljmp X02bf ; 0206 02 02 bf ..?
  +
;
  +
X0209: inc 2dh ; 0209 05 2d .-
  +
mov r5,2dh ; 020b ad 2d --
  +
cjne r5,#0,X024d ; 020d bd 00 3d =.=
  +
cjne r6,#1,X021a ; 0210 be 01 07 >..
  +
add a,#2 ; 0213 24 02 $.
  +
sjmp X022a ; 0215 80 13 ..
  +
;
  +
X0217: ljmp X02b5 ; 0217 02 02 b5 ..5
  +
;
  +
X021a: cjne r6,#2,X0221 ; 021a be 02 04 >..
  +
add a,#0ah ; 021d 24 0a $.
  +
sjmp X022a ; 021f 80 09 ..
  +
;
  +
X0221: cjne r6,#4,X0228 ; 0221 be 04 04 >..
  +
add a,#data1 ; 0224 24 12 $.
  +
sjmp X022a ; 0226 80 02 ..
  +
;
  +
X0228: add a,#1ah ; 0228 24 1a $.
  +
X022a: movc a,@a+pc ; 022a 83 .
  +
sjmp X0253 ; 022b 80 26 .&
  +
;
  +
div ab ; 022d 84 .
  +
mov 34h,31h ; 022e 85 31 34 .14
  +
addc a,@r1 ; 0231 37 7
  +
jnb p0.0,X0235 ; 0232 30 80 00 0..
  +
X0235: nop ; 0235 00 . ; data truncated
  +
;
  +
org 237h
  +
;
  +
reti ; 0237 32 2
  +
;
  +
addc a,38h ; 0238 35 38 58
  +
orl a,@r0 ; 023a 46 F
  +
ajmp page4 ; 023b 81 00 ..
  +
;
  +
org 23fh
  +
;
  +
rlc a ; 023f 33 3
  +
addc a,@r0 ; 0240 36 6
  +
addc a,r1 ; 0241 39 9
  +
X0242: orl a,dpl ; 0242 45 82 E.
  +
nop ; 0244 00 . ; data truncated
  +
;
  +
org 247h
  +
;
  +
ajmp X0242 ; 0247 41 42 AB
  +
;
  +
orl 44h,#83h ; 0249 43 44 83 CD.
  +
nop ; 024c 00 .
  +
X024d: ljmp X02bf ; 024d 02 02 bf ..?
  +
;
  +
X0250: ljmp X019c ; 0250 02 01 9c ...
  +
;
  +
X0253: setb 2fh.6 ; 0253 d2 7e R~
  +
ljmp X02a2 ; 0255 02 02 a2 .."
  +
;
  +
X0258: push dpl ; 0258 c0 82 @.
  +
mov dpl,#8 ; 025a 75 82 08 u..
  +
movx a,@dptr ; 025d e0 `
  +
pop dpl ; 025e d0 82 P.
  +
anl a,#7 ; 0260 54 07 T.
  +
cjne a,#6,X02bf ; 0262 b4 06 5a 4.Z
  +
push dpl ; 0265 c0 82 @.
  +
push dph ; 0267 c0 83 @.
  +
push psw ; 0269 c0 d0 @P
  +
mov psw,#8 ; 026b 75 d0 08 uP.
  +
lcall X0112 ; 026e 12 01 12 ...
  +
mov a,#0feh ; 0271 74 fe t~
  +
X0273: lcall X00f4 ; 0273 12 00 f4 ..t
  +
setb p1.4 ; 0276 d2 94 R.
  +
clr p1.4 ; 0278 c2 94 B.
  +
djnz 29h,X0273 ; 027a d5 29 f6 U)v
  +
X027d: jnb tf0,X027d ; 027d 30 8d fd 0.}
  +
clr tf0 ; 0280 c2 8d B.
  +
setb p1.4 ; 0282 d2 94 R.
  +
clr p1.4 ; 0284 c2 94 B.
  +
mov th0,#0f0h ; 0286 75 8c f0 u.p
  +
mov tl0,#0 ; 0289 75 8a 00 u..
  +
inc 29h ; 028c 05 29 .)
  +
mov a,29h ; 028e e5 29 e)
  +
cjne a,#0,X027d ; 0290 b4 00 ea 4.j
  +
lcall X0112 ; 0293 12 01 12 ...
  +
mov a,#86h ; 0296 74 86 t.
  +
pop psw ; 0298 d0 d0 PP
  +
pop dph ; 029a d0 83 P.
  +
pop dpl ; 029c d0 82 P.
  +
sjmp X02a2 ; 029e 80 02 ..
  +
;
  +
mov a,#80h ; 02a0 74 80 t.
  +
X02a2: mov 28h,a ; 02a2 f5 28 u(
  +
sjmp X02bf ; 02a4 80 19 ..
  +
;
  +
X02a6: mov a,28h ; 02a6 e5 28 e(
  +
mov @r1,a ; 02a8 f7 w
  +
inc r1 ; 02a9 09 .
  +
cjne r1,#80h,X02af ; 02aa b9 80 02 9..
  +
mov r1,#74h ; 02ad 79 74 yt
  +
X02af: jb 2fh.3,X02bf ; 02af 20 7b 0d {.
  +
jb 2fh.4,X02bf ; 02b2 20 7c 0a |.
  +
X02b5: mov a,r6 ; 02b5 ee n
  +
rl a ; 02b6 23 #
  +
mov 2ch,a ; 02b7 f5 2c u,
  +
cjne r6,#10h,X0250 ; 02b9 be 10 94 >..
  +
mov 2ch,#1 ; 02bc 75 2c 01 u,.
  +
X02bf: pop dph ; 02bf d0 83 P.
  +
pop dpl ; 02c1 d0 82 P.
  +
pop b ; 02c3 d0 f0 Pp
  +
pop acc ; 02c5 d0 e0 P`
  +
pop psw ; 02c7 d0 d0 PP
  +
reti ; 02c9 32 2
  +
;
  +
X02ca: push psw ; 02ca c0 d0 @P
  +
push acc ; 02cc c0 e0 @`
  +
push b ; 02ce c0 f0 @p
  +
push dpl ; 02d0 c0 82 @.
  +
push dph ; 02d2 c0 83 @.
  +
mov psw,#8 ; 02d4 75 d0 08 uP.
  +
jnb ti,X02e0 ; 02d7 30 99 06 0..
  +
clr ti ; 02da c2 99 B.
  +
setb 2fh.7 ; 02dc d2 7f R.
  +
sjmp X02eb ; 02de 80 0b ..
  +
;
  +
X02e0: clr ri ; 02e0 c2 98 B.
  +
mov a,sbuf ; 02e2 e5 99 e.
  +
mov @r1,a ; 02e4 f7 w
  +
inc r1 ; 02e5 09 .
  +
cjne r1,#74h,X02eb ; 02e6 b9 74 02 9t.
  +
mov r1,#30h ; 02e9 79 30 y0
  +
X02eb: pop dph ; 02eb d0 83 P.
  +
pop dpl ; 02ed d0 82 P.
  +
pop b ; 02ef d0 f0 Pp
  +
pop acc ; 02f1 d0 e0 P`
  +
pop psw ; 02f3 d0 d0 PP
  +
reti ; 02f5 32 2
  +
;
  +
org 300h
  +
;
  +
page3: mov r7,a ; 0300 ff . ; data truncated
  +
;
  +
org 400h
  +
;
  +
page4: mov r7,a ; 0400 ff . ; data truncated
  +
;
  +
org 500h
  +
;
  +
page5: mov r7,a ; 0500 ff . ; data truncated
  +
;
  +
org 800h
  +
;
  +
inc r5 ; 0800 0d .
  +
;
  +
; SFR Equates
  +
;
  +
newsfr: equ 94h
  +
;
  +
; SFR bit Equates
  +
;
  +
port2_2: equ 0a2h
  +
;
  +
; Memory bit Equates
  +
;
  +
bitflag: equ 12h
  +
;
  +
; Symbol Equates
  +
;
  +
; These are symbols from the control
  +
; file that are referenced in the code.
  +
;
  +
data1: equ 12h
  +
;
  +
; Miscellaneous Equates
  +
;
  +
; These are addresses referenced in the code but
  +
; which are in the middle of a multibyte instruction
  +
; or are addresses outside the initialized space.
  +
;
  +
X2000: equ 2000h
  +
X4000: equ 4000h
  +
;
  +
end
  +
;
  +
</pre>
  +
  +
  +
== 17/Mar/2014 ==
  +
  +
Durante uma Oficina de Retroprogramação, o Juca fez o dump de duas outras EPROMs utilizadas neste equipamento.
  +
  +
  +
Uma delas contém os gráficos da "fonte" correspondente a 256 caracteres para um chip [http://pdf1.alldatasheet.com/datasheet-pdf/view/117293/ETC1/R6545EAP/+017_-5VwSwJbTvvvClpZ+/datasheet.pdf gerador de sinal CRT da Rockwell].
  +
  +
  +
A outra parece ser o firmware de um processador M6803.
  +
  +
  +
Os checksums dos dois dumps foram verificados e estão OK (de acordo com os checksums impressos nas etiquetas das EPROMs).
  +
  +
  +
'''TO-DO:''' publicar as ROMs em algum lugar.
  +
  +
  +
Foi também criado um script em python para visualizar os gráficos contidos na EPROM do gerador de caracteres.
  +
  +
  +
'''TO-DO:''' publicar em algum lugar o script python
  +
  +
== 17/JAN/2015 ==
  +
  +
Inspecionando o painel, foram descobertos alguns defeitos nos conectores do tubo do display. Alguns contatos estão rompidos e terão que ser reparados se quisermos colocar para funcionar esse display.
  +
  +
Foi feito um rascunho de driver para emular esse display no MESS (projeto irmão do MAME) e o código foi postado no github: https://github.com/mamedev/mame/pull/106
  +
  +
[[categoria:projetos]]
 
[[categoria:engenharia reversa]]
 
[[categoria:engenharia reversa]]

Edição atual tal como às 15h21min de 18 de janeiro de 2015

O Garoa recebeu como doação o Painel de operação de uma classificadora de cheques, marca Banctec modelo 91690, que foi aposentada em 2011.

Pretendemos reutilizar o Painel no Garoa e para isso vamos fazer engenharia reversa no equipamento.

PAINEL 91690.JPG


O Painel

É composto por um display de 7 linhas por 40 colunas, com dois botões (FEED, STOP) e um teclado numérico com algumas teclas adicionais (A,B,C,D,E,F,DO,CHG,CLR,EX).

Fotos do equipamento no qual o painel era utilizado:


Documentação

Temos também boa parte da documentação de manutenção da máquina na qual o painel era utilizado. Documentação do Painel Banctec 91690

Quando

A idéia é trabalhar no painel durante o evento Eletrônica com Carinho Retroprogramação que acontece às segundas-feiras, às 19h 30min.


Objetivos

  • Fazer dump da EPROM para tentar entender como o painel processa e exibe os dados. - OK em 21/Set/2012
  • Preparar uma fonte com saídas DC de 5v e 185v para alimentar o painel; (semelhante às fontes para nixie tube)
  • Localizar o canal de comunicação entre a placa principal e a placa que controla o display;
  • Usar um microcontrolador para enviar caracteres diretamente para a placa que controla o display. (deve funcionar de acordo com a documentação)
  • Analisar o código assembly na tentaiva de entender o funcionamento da placa principal.
    • De acordo com a documentação a placa principal recebe o texto compactado (3 linhas) e transmite para a placa que controla o display (7 linhas)


Interessados


Histórico de Atividades

Esta página será utilizada para registrar o progresso das atividades.

27/Ago/2012

Documentação

Documentação do equipamento: Arquivo:PAINEL BANCTEC 91690.PDF

Fotos (ToDo)

O painel foi desmontado e tiramos fotos de todas as placas.

Revisamos a documentação e localizamos o esquemático das placas que compõem o painel.

Próximo passo: Fazer dump da EPROM para tentar entender como o painel processa e exibe os dados.

06/Set/2012

Tentando descobrir qual o modelo de EPROM usado.

Documentação menciona TTL PROM 2048 x8. Etiqueta do que parece ser a EPROM tem escrito o código 0111-004.

No esquemático o chip está identificado como dm87s191

Datasheet DM87s191

Datasheet DM87s191 - 2K x 8 TTL PROM Memory - DIP 24 pinos Arquivo:DM87S191.pdf

Pinagem DM87s191

  • 24 - Vcc
  • 23 - A8
  • 22 - A9
  • 21 - A10 (MSB)
  • 20 - !CE1
  • 19 - CE2
  • 18 - CE3
  • 17 - DO7 (MSB)
  • 16 - DO6
  • 15 - DO5
  • 14 - DO4
  • 13 - DO3
  • 12 - GND
  • 11 - DO2
  • 10 - DO1
  • 09 - DO0 (LSB)
  • 08 - A0 (LSB)
  • 07 - A1
  • 06 - A2
  • 05 - A3
  • 04 - A4
  • 03 - A5
  • 02 - A6
  • 01 - A7

Próximos passos: Fazer dump da EPROM, rodar um disassembler e analisar o código para tentar entender como o painel processa e exibe os dados.

21/Set/2012

Dump da EPROM efetuado

Foram utilizados dois CI SN74393N - Dual 4-bit counter para passar os endereços para a EPROM (11 bits) e um arduino para ler os dados (8 bits por endereço).

DUMP da EPROM (dm87s191)

0      02 00 26 FF FF FF FF FF FF FF FF 02 01 80 FF FF
10     FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
20     FF FF FF 02 02 CA 75 D0 00 75 90 D4 78 01 76 AA
30     B6 AA FD 08 B8 80 F7 78 01 76 55 B6 55 FD 08 B8
40     50 F7 78 00 76 00 08 B8 80 FA 75 81 10 75 2C 01
50     75 2D FE 79 74 78 74 75 D0 08 79 30 78 30 D2 7F
60     90 40 00 E0 F5 2E 75 89 21 75 8D FD 75 8B FD 75
70     8C F0 75 8A 00 75 B8 02 00 00 00 75 98 70 75 88
80     50 75 A8 92 D2 95 D2 94 C2 94 12 00 92 12 01 6A
90     80 F8 30 B3 6E 75 D0 08 E9 98 60 67 E6 08 B8 74
A0     02 78 30 B4 0D 02 80 65 B4 0A 02 80 5C B4 0E 02
B0     80 7E B4 0C 02 80 5B B4 11 02 80 7E B4 13 02 80
C0     77 B4 14 02 80 62 B4 15 02 80 61 B4 08 02 80 35
D0     B4 17 02 80 14 B4 87 13 C0 D0 75 D0 00 F7 09 B9
E0     80 02 79 74 D0 D0 02 01 68 74 87 AD 2B BD 20 02
F0     80 76 05 2B 90 20 00 F0 7F 50 DF FE D2 91 20 B3
100    FD C2 91 80 63 15 2B 80 47 05 2A 80 43 75 2B 00
110    80 3E 75 2B 00 75 2A 00 D2 93 7F 50 DF FE C2 93
120    20 B3 FD 30 B3 FD 80 40 D2 92 80 3C C2 92 80 38
130    75 2B 00 75 2A 00 80 18 D2 7D E9 98 60 FC E6 30
140    7D 06 F5 2A C2 7D 80 02 F5 2B 08 B8 74 02 78 30
150    75 F0 20 E5 2A A4 25 2B 90 20 00 F0 7F 50 DF FE
160    D2 90 7F 50 DF FE C2 90 00 22 30 7F 12 75 D0 00
170    E9 98 60 0B E6 F5 99 C2 7F 08 B8 80 02 78 74 22
180    C0 D0 C0 E0 C0 F0 C0 82 C0 83 75 D0 00 D2 94 C2
190    94 75 8C F0 75 8A 00 75 83 10 E5 2C FE F5 82 E0
1A0    54 07 B4 07 2A 20 7E 02 80 1F 05 2D AD 2D BD 00
1B0    66 C2 7E 75 2D FE 20 7B 06 20 7C 0B 02 02 A6 C2
1C0    7B 75 28 88 02 02 A6 C2 7C 75 2D FE 02 02 B5 30
1D0    7E 37 75 2D FE C0 82 75 82 01 E0 D0 82 54 07 B4
1E0    00 06 74 84 F5 28 C2 7C E5 28 B4 80 03 02 02 58
1F0    B4 84 08 20 7B 10 D2 7B 02 02 A6 B4 85 08 20 7C
200    05 D2 7C 02 02 A6 02 02 BF 05 2D AD 2D BD 00 3D
210    BE 01 07 24 02 80 13 02 02 B5 BE 02 04 24 0A 80
220    09 BE 04 04 24 12 80 02 24 1A 83 80 26 84 85 31
230    34 37 30 80 00 00 00 32 35 38 46 81 00 00 00 33
240    36 39 45 82 00 00 00 41 42 43 44 83 00 02 02 BF
250    02 01 9C D2 7E 02 02 A2 C0 82 75 82 08 E0 D0 82
260    54 07 B4 06 5A C0 82 C0 83 C0 D0 75 D0 08 12 01
270    12 74 FE 12 00 F4 D2 94 C2 94 D5 29 F6 30 8D FD
280    C2 8D D2 94 C2 94 75 8C F0 75 8A 00 05 29 E5 29
290    B4 00 EA 12 01 12 74 86 D0 D0 D0 83 D0 82 80 02
2A0    74 80 F5 28 80 19 E5 28 F7 09 B9 80 02 79 74 20
2B0    7B 0D 20 7C 0A EE 23 F5 2C BE 10 94 75 2C 01 D0
2C0    83 D0 82 D0 F0 D0 E0 D0 D0 32 C0 D0 C0 E0 C0 F0
2D0    C0 82 C0 83 75 D0 08 30 99 06 C2 99 D2 7F 80 0B
2E0    C2 98 E5 99 F7 09 B9 74 02 79 30 D0 83 D0 82 D0
2F0    F0 D0 E0 D0 D0 32 FF FF FF FF FF FF FF FF FF FF
300    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
310    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
320    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
330    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
340    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
350    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
360    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
370    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
380    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
390    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
3A0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
3B0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
3C0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
3D0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
3E0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
3F0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
400    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
410    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
420    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
430    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
440    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
450    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
460    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
470    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
480    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
490    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4A0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4B0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4C0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4D0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4E0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
4F0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
500    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
510    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
520    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
530    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
540    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
550    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
560    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
570    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
580    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
590    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
5A0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
5B0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
5C0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
5D0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
5E0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
5F0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
600    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
610    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
620    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
630    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
640    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
650    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
660    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
670    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
680    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
690    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
6A0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
6B0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
6C0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
6D0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
6E0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
6F0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
700    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
710    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
720    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
730    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
740    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
750    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
760    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
770    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
780    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
790    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
7A0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
7B0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
7C0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
7D0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
7E0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
7F0    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF


Sketch arduino usado para fazer o dump

Adaptado do que foi usado no projeto IntelbrasOP4114

//counter ICs = 2x SN74393N (total of 16 bits of which we use 11 to address the 16k of ROM mem)
int counter_reset = 2; //pin 2 & 12 of both counter ICs
int counter_increment = 3; //pin 1 of the first counter IC

//eprom IC = dm87s191
int eprom_data[8] = {6,7,8,9,10,11,12,13}; // pins 09, 10, 11, 13, 14, 15, 16, 17 of the eprom IC
//CE - CHIP ENABLE PINS
int oe=4; //pin 18 (CE2) of the eprom IC
int ce=5; //pin 19 (CE3) of the eprom IC
			// PIN 20 (!CE1) connected to ground directly

long int address;
int data;

void reset_counter(){
  digitalWrite(counter_increment, HIGH);

  digitalWrite(counter_reset, HIGH);
  delay(10);
  digitalWrite(counter_reset, LOW);
}

void increment_counter(){
  digitalWrite(counter_increment, LOW);
  delay(10);//do we need it?
  digitalWrite(counter_increment, HIGH);
}

void setup(){
  address=0x0;
  int i;

  for (i=0;i<8;i++){
    pinMode(eprom_data[i], INPUT);
  }
  
  pinMode(counter_reset, OUTPUT);
  pinMode(counter_increment, OUTPUT);
  pinMode(oe, OUTPUT);
  pinMode(ce, OUTPUT);

    digitalWrite(oe, LOW);
    digitalWrite(ce, LOW);
  
  reset_counter();
  Serial.begin(38400);
}

int readDm87s191_counter(){
  int i,j;

    digitalWrite(oe, HIGH);
    digitalWrite(ce, HIGH);

    data=0;
    for (i=0, j=1; i<8; i++,j*=2){
      if (digitalRead(eprom_data[i])==HIGH){
         data+=j;
      }
    }
  
    digitalWrite(oe, LOW);
    digitalWrite(ce, LOW);

    increment_counter();
  return data;
}

long int MAXADDR=0x7ff;
int chunk_size = 16;
void loop(){
  reset_counter();
  
  while(address<=MAXADDR){
    
      Serial.print(address, HEX);
      Serial.print("\t");
      for (int i=0; i<chunk_size; i++){
        Serial.print(readDm87s191_counter(), HEX);
        Serial.print(" ");
      }
      Serial.println();
    
    address+=chunk_size;
  }
  while(true){}
}

Disassembly do binário

Possível disassembly - não confirmado se está correto

Efetuado com a ferramenta d51v26

;
;  D51 V2.6 8051 Disassembly of .\rom_painel_banctec.bin
;  9/21/2012 22:48
;
	org	0
;
reset:	ljmp	X0026		; 0000   02 00 26   ..&
;
ie0vec:	mov	r7,a		; 0003   ff         .	; data truncated
;
	org	0bh
;
tf0vec:	ljmp	X0180		; 000b   02 01 80   ...
;
	org	12h
;
here:	mov	r7,a		; 0012   ff         .
ie1vec:	mov	r7,a		; 0013   ff         .	; data truncated
;
	org	1bh
;
tf1vec:	mov	r7,a		; 001b   ff         .	; data truncated
;
	org	23h
;
servec:	ljmp	X02ca		; 0023   02 02 ca   ..J
;
X0026:	mov	psw,#0		; 0026   75 d0 00   uP.
	mov	p1,#0d4h	; 0029   75 90 d4   u.T
	mov	r0,#1		; 002c   78 01      x.
X002e:	mov	@r0,#0aah	; 002e   76 aa      v*
X0030:	cjne	@r0,#0aah,X0030	; 0030   b6 aa fd   6*}
	inc	r0		; 0033   08         .
	cjne	r0,#80h,X002e	; 0034   b8 80 f7   8.w
	mov	r0,#1		; 0037   78 01      x.
X0039:	mov	@r0,#55h	; 0039   76 55      vU
X003b:	cjne	@r0,#55h,X003b	; 003b   b6 55 fd   6U}
	inc	r0		; 003e   08         .
	cjne	r0,#50h,X0039	; 003f   b8 50 f7   8Pw
	mov	r0,#0		; 0042   78 00      x.
X0044:	mov	@r0,#0		; 0044   76 00      v.
	inc	r0		; 0046   08         .
	cjne	r0,#80h,X0044	; 0047   b8 80 fa   8.z
	mov	sp,#10h		; 004a   75 81 10   u..
	mov	2ch,#1		; 004d   75 2c 01   u,.
	mov	2dh,#0feh	; 0050   75 2d fe   u-~
	mov	r1,#74h		; 0053   79 74      yt
	mov	r0,#74h		; 0055   78 74      xt
	mov	psw,#8		; 0057   75 d0 08   uP.
	mov	r1,#30h		; 005a   79 30      y0
	mov	r0,#30h		; 005c   78 30      x0
	setb	2fh.7		; 005e   d2 7f      R.
	mov	dptr,#X4000	; 0060   90 40 00   .@.
	movx	a,@dptr		; 0063   e0         `
	mov	2eh,a		; 0064   f5 2e      u.
	mov	tmod,#21h	; 0066   75 89 21   u.!
	mov	th1,#0fdh	; 0069   75 8d fd   u.}
	mov	tl1,#0fdh	; 006c   75 8b fd   u.}
	mov	th0,#0f0h	; 006f   75 8c f0   u.p
	mov	tl0,#0		; 0072   75 8a 00   u..
	mov	ip,#2		; 0075   75 b8 02   u8.
	nop			; 0078   00         .	; data truncated
;
	org	7bh
;
	mov	scon,#70h	; 007b   75 98 70   u.p
	mov	tcon,#50h	; 007e   75 88 50   u.P
	mov	ie,#92h		; 0081   75 a8 92   u(.
	setb	p1.5		; 0084   d2 95      R.
	setb	p1.4		; 0086   d2 94      R.
	clr	p1.4		; 0088   c2 94      B.
X008a:	lcall	X0092		; 008a   12 00 92   ...
	lcall	X016a		; 008d   12 01 6a   ..j
	sjmp	X008a		; 0090   80 f8      .x
;
X0092:	jnb	int1,X0103	; 0092   30 b3 6e   03n
	mov	psw,#8		; 0095   75 d0 08   uP.
	mov	a,r1		; 0098   e9         i
	subb	a,r0		; 0099   98         .
	jz	X0103		; 009a   60 67      `g
	mov	a,@r0		; 009c   e6         f
	inc	r0		; 009d   08         .
	cjne	r0,#74h,X00a3	; 009e   b8 74 02   8t.
	mov	r0,#30h		; 00a1   78 30      x0
X00a3:	cjne	a,#0dh,X00a8	; 00a3   b4 0d 02   4..
	sjmp	X010d		; 00a6   80 65      .e
;
X00a8:	cjne	a,#0ah,X00ad	; 00a8   b4 0a 02   4..
	sjmp	X0109		; 00ab   80 5c      .\
;
X00ad:	cjne	a,#0eh,X00b2	; 00ad   b4 0e 02   4..
	sjmp	X0130		; 00b0   80 7e      .~
;
X00b2:	cjne	a,#0ch,X00b7	; 00b2   b4 0c 02   4..
	sjmp	X0112		; 00b5   80 5b      .[
;
X00b7:	cjne	a,#11h,X00bc	; 00b7   b4 11 02   4..
	sjmp	X013a		; 00ba   80 7e      .~
;
X00bc:	cjne	a,#13h,X00c1	; 00bc   b4 13 02   4..
	sjmp	X0138		; 00bf   80 77      .w
;
X00c1:	cjne	a,#14h,X00c6	; 00c1   b4 14 02   4..
	sjmp	X0128		; 00c4   80 62      .b
;
X00c6:	cjne	a,#15h,X00cb	; 00c6   b4 15 02   4..
	sjmp	X012c		; 00c9   80 61      .a
;
X00cb:	cjne	a,#8,X00d0	; 00cb   b4 08 02   4..
	sjmp	X0105		; 00ce   80 35      .5
;
X00d0:	cjne	a,#17h,X00d5	; 00d0   b4 17 02   4..
	sjmp	X00e9		; 00d3   80 14      ..
;
X00d5:	cjne	a,#87h,X00eb	; 00d5   b4 87 13   4..
	push	psw		; 00d8   c0 d0      @P
	mov	psw,#0		; 00da   75 d0 00   uP.
	mov	@r1,a		; 00dd   f7         w
	inc	r1		; 00de   09         .
	cjne	r1,#80h,X00e4	; 00df   b9 80 02   9..
	mov	r1,#74h		; 00e2   79 74      yt
X00e4:	pop	psw		; 00e4   d0 d0      PP
	ljmp	X0168		; 00e6   02 01 68   ..h
;
X00e9:	mov	a,#87h		; 00e9   74 87      t.
X00eb:	mov	r5,2bh		; 00eb   ad 2b      -+
	cjne	r5,#20h,X00f2	; 00ed   bd 20 02   = .
	sjmp	X0168		; 00f0   80 76      .v
;
X00f2:	inc	2bh		; 00f2   05 2b      .+
X00f4:	mov	dptr,#X2000	; 00f4   90 20 00   . .
	movx	@dptr,a		; 00f7   f0         p
	mov	r7,#50h		; 00f8   7f 50      .P
X00fa:	djnz	r7,X00fa	; 00fa   df fe      _~
	setb	p1.1		; 00fc   d2 91      R.
X00fe:	jb	int1,X00fe	; 00fe   20 b3 fd    3}
	clr	p1.1		; 0101   c2 91      B.
X0103:	sjmp	X0168		; 0103   80 63      .c
;
X0105:	dec	2bh		; 0105   15 2b      .+
	sjmp	X0150		; 0107   80 47      .G
;
X0109:	inc	2ah		; 0109   05 2a      .*
	sjmp	X0150		; 010b   80 43      .C
;
X010d:	mov	2bh,#0		; 010d   75 2b 00   u+.
	sjmp	X0150		; 0110   80 3e      .>
;
X0112:	mov	2bh,#0		; 0112   75 2b 00   u+.
	mov	2ah,#0		; 0115   75 2a 00   u*.
	setb	p1.3		; 0118   d2 93      R.
	mov	r7,#50h		; 011a   7f 50      .P
X011c:	djnz	r7,X011c	; 011c   df fe      _~
	clr	p1.3		; 011e   c2 93      B.
X0120:	jb	int1,X0120	; 0120   20 b3 fd    3}
X0123:	jnb	int1,X0123	; 0123   30 b3 fd   03}
	sjmp	X0168		; 0126   80 40      .@
;
X0128:	setb	p1.2		; 0128   d2 92      R.
	sjmp	X0168		; 012a   80 3c      .<
;
X012c:	clr	p1.2		; 012c   c2 92      B.
	sjmp	X0168		; 012e   80 38      .8
;
X0130:	mov	2bh,#0		; 0130   75 2b 00   u+.
	mov	2ah,#0		; 0133   75 2a 00   u*.
	sjmp	X0150		; 0136   80 18      ..
;
X0138:	setb	2fh.5		; 0138   d2 7d      R}
X013a:	mov	a,r1		; 013a   e9         i
	subb	a,r0		; 013b   98         .
	jz	X013a		; 013c   60 fc      `|
	mov	a,@r0		; 013e   e6         f
	jnb	2fh.5,X0148	; 013f   30 7d 06   0}.
	mov	2ah,a		; 0142   f5 2a      u*
	clr	2fh.5		; 0144   c2 7d      B}
	sjmp	X014a		; 0146   80 02      ..
;
X0148:	mov	2bh,a		; 0148   f5 2b      u+
X014a:	inc	r0		; 014a   08         .
	cjne	r0,#74h,X0150	; 014b   b8 74 02   8t.
	mov	r0,#30h		; 014e   78 30      x0
X0150:	mov	b,#20h		; 0150   75 f0 20   up 
	mov	a,2ah		; 0153   e5 2a      e*
	mul	ab		; 0155   a4         $
	add	a,2bh		; 0156   25 2b      %+
	mov	dptr,#X2000	; 0158   90 20 00   . .
	movx	@dptr,a		; 015b   f0         p
	mov	r7,#50h		; 015c   7f 50      .P
X015e:	djnz	r7,X015e	; 015e   df fe      _~
	setb	p1.0		; 0160   d2 90      R.
	mov	r7,#50h		; 0162   7f 50      .P
X0164:	djnz	r7,X0164	; 0164   df fe      _~
	clr	p1.0		; 0166   c2 90      B.
X0168:	nop			; 0168   00         .
	ret			; 0169   22         "
;
X016a:	jnb	2fh.7,X017f	; 016a   30 7f 12   0..
	mov	psw,#0		; 016d   75 d0 00   uP.
	mov	a,r1		; 0170   e9         i
	subb	a,r0		; 0171   98         .
	jz	X017f		; 0172   60 0b      `.
	mov	a,@r0		; 0174   e6         f
	mov	sbuf,a		; 0175   f5 99      u.
	clr	2fh.7		; 0177   c2 7f      B.
	inc	r0		; 0179   08         .
	cjne	r0,#80h,X017f	; 017a   b8 80 02   8..
	mov	r0,#74h		; 017d   78 74      xt
X017f:	ret			; 017f   22         "
;
X0180:	push	psw		; 0180   c0 d0      @P
	push	acc		; 0182   c0 e0      @`
	push	b		; 0184   c0 f0      @p
	push	dpl		; 0186   c0 82      @.
	push	dph		; 0188   c0 83      @.
	mov	psw,#0		; 018a   75 d0 00   uP.
	setb	p1.4		; 018d   d2 94      R.
	clr	p1.4		; 018f   c2 94      B.
	mov	th0,#0f0h	; 0191   75 8c f0   u.p
	mov	tl0,#0		; 0194   75 8a 00   u..
	mov	dph,#10h	; 0197   75 83 10   u..
	mov	a,2ch		; 019a   e5 2c      e,
X019c:	mov	r6,a		; 019c   fe         ~
	mov	dpl,a		; 019d   f5 82      u.
	movx	a,@dptr		; 019f   e0         `
	anl	a,#7		; 01a0   54 07      T.
	cjne	a,#7,X01cf	; 01a2   b4 07 2a   4.*
	jb	2fh.6,X01aa	; 01a5   20 7e 02    ~.
	sjmp	X01c9		; 01a8   80 1f      ..
;
X01aa:	inc	2dh		; 01aa   05 2d      .-
	mov	r5,2dh		; 01ac   ad 2d      --
	cjne	r5,#0,X0217	; 01ae   bd 00 66   =.f
	clr	2fh.6		; 01b1   c2 7e      B~
	mov	2dh,#0feh	; 01b3   75 2d fe   u-~
	jb	2fh.3,X01bf	; 01b6   20 7b 06    {.
	jb	2fh.4,X01c7	; 01b9   20 7c 0b    |.
	ljmp	X02a6		; 01bc   02 02 a6   ..&
;
X01bf:	clr	2fh.3		; 01bf   c2 7b      B{
	mov	28h,#88h	; 01c1   75 28 88   u(.
	ljmp	X02a6		; 01c4   02 02 a6   ..&
;
X01c7:	clr	2fh.4		; 01c7   c2 7c      B|
X01c9:	mov	2dh,#0feh	; 01c9   75 2d fe   u-~
	ljmp	X02b5		; 01cc   02 02 b5   ..5
;
X01cf:	jnb	2fh.6,X0209	; 01cf   30 7e 37   0~7
	mov	2dh,#0feh	; 01d2   75 2d fe   u-~
	push	dpl		; 01d5   c0 82      @.
	mov	dpl,#1		; 01d7   75 82 01   u..
	movx	a,@dptr		; 01da   e0         `
	pop	dpl		; 01db   d0 82      P.
	anl	a,#7		; 01dd   54 07      T.
	cjne	a,#0,X01e8	; 01df   b4 00 06   4..
	mov	a,#84h		; 01e2   74 84      t.
	mov	28h,a		; 01e4   f5 28      u(
	clr	2fh.4		; 01e6   c2 7c      B|
X01e8:	mov	a,28h		; 01e8   e5 28      e(
	cjne	a,#80h,X01f0	; 01ea   b4 80 03   4..
	ljmp	X0258		; 01ed   02 02 58   ..X
;
X01f0:	cjne	a,#84h,X01fb	; 01f0   b4 84 08   4..
	jb	2fh.3,X0206	; 01f3   20 7b 10    {.
	setb	2fh.3		; 01f6   d2 7b      R{
	ljmp	X02a6		; 01f8   02 02 a6   ..&
;
X01fb:	cjne	a,#85h,X0206	; 01fb   b4 85 08   4..
	jb	2fh.4,X0206	; 01fe   20 7c 05    |.
	setb	2fh.4		; 0201   d2 7c      R|
	ljmp	X02a6		; 0203   02 02 a6   ..&
;
X0206:	ljmp	X02bf		; 0206   02 02 bf   ..?
;
X0209:	inc	2dh		; 0209   05 2d      .-
	mov	r5,2dh		; 020b   ad 2d      --
	cjne	r5,#0,X024d	; 020d   bd 00 3d   =.=
	cjne	r6,#1,X021a	; 0210   be 01 07   >..
	add	a,#2		; 0213   24 02      $.
	sjmp	X022a		; 0215   80 13      ..
;
X0217:	ljmp	X02b5		; 0217   02 02 b5   ..5
;
X021a:	cjne	r6,#2,X0221	; 021a   be 02 04   >..
	add	a,#0ah		; 021d   24 0a      $.
	sjmp	X022a		; 021f   80 09      ..
;
X0221:	cjne	r6,#4,X0228	; 0221   be 04 04   >..
	add	a,#data1	; 0224   24 12      $.
	sjmp	X022a		; 0226   80 02      ..
;
X0228:	add	a,#1ah		; 0228   24 1a      $.
X022a:	movc	a,@a+pc		; 022a   83         .
	sjmp	X0253		; 022b   80 26      .&
;
	div	ab		; 022d   84         .
	mov	34h,31h		; 022e   85 31 34   .14
	addc	a,@r1		; 0231   37         7
	jnb	p0.0,X0235	; 0232   30 80 00   0..
X0235:	nop			; 0235   00         .	; data truncated
;
	org	237h
;
	reti			; 0237   32         2
;
	addc	a,38h		; 0238   35 38      58
	orl	a,@r0		; 023a   46         F
	ajmp	page4		; 023b   81 00      ..
;
	org	23fh
;
	rlc	a		; 023f   33         3
	addc	a,@r0		; 0240   36         6
	addc	a,r1		; 0241   39         9
X0242:	orl	a,dpl		; 0242   45 82      E.
	nop			; 0244   00         .	; data truncated
;
	org	247h
;
	ajmp	X0242		; 0247   41 42      AB
;
	orl	44h,#83h	; 0249   43 44 83   CD.
	nop			; 024c   00         .
X024d:	ljmp	X02bf		; 024d   02 02 bf   ..?
;
X0250:	ljmp	X019c		; 0250   02 01 9c   ...
;
X0253:	setb	2fh.6		; 0253   d2 7e      R~
	ljmp	X02a2		; 0255   02 02 a2   .."
;
X0258:	push	dpl		; 0258   c0 82      @.
	mov	dpl,#8		; 025a   75 82 08   u..
	movx	a,@dptr		; 025d   e0         `
	pop	dpl		; 025e   d0 82      P.
	anl	a,#7		; 0260   54 07      T.
	cjne	a,#6,X02bf	; 0262   b4 06 5a   4.Z
	push	dpl		; 0265   c0 82      @.
	push	dph		; 0267   c0 83      @.
	push	psw		; 0269   c0 d0      @P
	mov	psw,#8		; 026b   75 d0 08   uP.
	lcall	X0112		; 026e   12 01 12   ...
	mov	a,#0feh		; 0271   74 fe      t~
X0273:	lcall	X00f4		; 0273   12 00 f4   ..t
	setb	p1.4		; 0276   d2 94      R.
	clr	p1.4		; 0278   c2 94      B.
	djnz	29h,X0273	; 027a   d5 29 f6   U)v
X027d:	jnb	tf0,X027d	; 027d   30 8d fd   0.}
	clr	tf0		; 0280   c2 8d      B.
	setb	p1.4		; 0282   d2 94      R.
	clr	p1.4		; 0284   c2 94      B.
	mov	th0,#0f0h	; 0286   75 8c f0   u.p
	mov	tl0,#0		; 0289   75 8a 00   u..
	inc	29h		; 028c   05 29      .)
	mov	a,29h		; 028e   e5 29      e)
	cjne	a,#0,X027d	; 0290   b4 00 ea   4.j
	lcall	X0112		; 0293   12 01 12   ...
	mov	a,#86h		; 0296   74 86      t.
	pop	psw		; 0298   d0 d0      PP
	pop	dph		; 029a   d0 83      P.
	pop	dpl		; 029c   d0 82      P.
	sjmp	X02a2		; 029e   80 02      ..
;
	mov	a,#80h		; 02a0   74 80      t.
X02a2:	mov	28h,a		; 02a2   f5 28      u(
	sjmp	X02bf		; 02a4   80 19      ..
;
X02a6:	mov	a,28h		; 02a6   e5 28      e(
	mov	@r1,a		; 02a8   f7         w
	inc	r1		; 02a9   09         .
	cjne	r1,#80h,X02af	; 02aa   b9 80 02   9..
	mov	r1,#74h		; 02ad   79 74      yt
X02af:	jb	2fh.3,X02bf	; 02af   20 7b 0d    {.
	jb	2fh.4,X02bf	; 02b2   20 7c 0a    |.
X02b5:	mov	a,r6		; 02b5   ee         n
	rl	a		; 02b6   23         #
	mov	2ch,a		; 02b7   f5 2c      u,
	cjne	r6,#10h,X0250	; 02b9   be 10 94   >..
	mov	2ch,#1		; 02bc   75 2c 01   u,.
X02bf:	pop	dph		; 02bf   d0 83      P.
	pop	dpl		; 02c1   d0 82      P.
	pop	b		; 02c3   d0 f0      Pp
	pop	acc		; 02c5   d0 e0      P`
	pop	psw		; 02c7   d0 d0      PP
	reti			; 02c9   32         2
;
X02ca:	push	psw		; 02ca   c0 d0      @P
	push	acc		; 02cc   c0 e0      @`
	push	b		; 02ce   c0 f0      @p
	push	dpl		; 02d0   c0 82      @.
	push	dph		; 02d2   c0 83      @.
	mov	psw,#8		; 02d4   75 d0 08   uP.
	jnb	ti,X02e0	; 02d7   30 99 06   0..
	clr	ti		; 02da   c2 99      B.
	setb	2fh.7		; 02dc   d2 7f      R.
	sjmp	X02eb		; 02de   80 0b      ..
;
X02e0:	clr	ri		; 02e0   c2 98      B.
	mov	a,sbuf		; 02e2   e5 99      e.
	mov	@r1,a		; 02e4   f7         w
	inc	r1		; 02e5   09         .
	cjne	r1,#74h,X02eb	; 02e6   b9 74 02   9t.
	mov	r1,#30h		; 02e9   79 30      y0
X02eb:	pop	dph		; 02eb   d0 83      P.
	pop	dpl		; 02ed   d0 82      P.
	pop	b		; 02ef   d0 f0      Pp
	pop	acc		; 02f1   d0 e0      P`
	pop	psw		; 02f3   d0 d0      PP
	reti			; 02f5   32         2
;
	org	300h
;
page3:	mov	r7,a		; 0300   ff         .	; data truncated
;
	org	400h
;
page4:	mov	r7,a		; 0400   ff         .	; data truncated
;
	org	500h
;
page5:	mov	r7,a		; 0500   ff         .	; data truncated
;
	org	800h
;
	inc	r5		; 0800   0d         .
;
;	SFR Equates
;
newsfr:	equ	94h
;
;	SFR bit Equates
;
port2_2:	equ	0a2h
;
;	Memory bit Equates
;
bitflag:	equ	12h
;
;	Symbol Equates
;
;  These are symbols from the control
;  file that are referenced in the code.
;
data1:	equ	12h
;
;	Miscellaneous Equates
;
;  These are addresses referenced in the code but
;  which are in the middle of a multibyte instruction
;  or are addresses outside the initialized space.
;
X2000:	equ	2000h
X4000:	equ	4000h
;
	end
;


17/Mar/2014

Durante uma Oficina de Retroprogramação, o Juca fez o dump de duas outras EPROMs utilizadas neste equipamento.


Uma delas contém os gráficos da "fonte" correspondente a 256 caracteres para um chip gerador de sinal CRT da Rockwell.


A outra parece ser o firmware de um processador M6803.


Os checksums dos dois dumps foram verificados e estão OK (de acordo com os checksums impressos nas etiquetas das EPROMs).


TO-DO: publicar as ROMs em algum lugar.


Foi também criado um script em python para visualizar os gráficos contidos na EPROM do gerador de caracteres.


TO-DO: publicar em algum lugar o script python

17/JAN/2015

Inspecionando o painel, foram descobertos alguns defeitos nos conectores do tubo do display. Alguns contatos estão rompidos e terão que ser reparados se quisermos colocar para funcionar esse display.

Foi feito um rascunho de driver para emular esse display no MESS (projeto irmão do MAME) e o código foi postado no github: https://github.com/mamedev/mame/pull/106