[Vincenzo] Je voulais lire quelque 82s129 Bipolar Proms, et pourquoi pas, ils étaient très courants dans la scène d’arcade de 1980. Le problème est que c’est son genre de balle étrange maintenant, et typiquement seulement (même) les programmeurs EPROM plus coûteux peuvent les lire. Un arduino, une planche à pain et des scripts rapides s’occupent rapidement de ce problème avec ce lecteur d’arcade rom.

Vous collez le bal de bal dans votre plan de pain et cédez-le jusqu’aux ports et goupilles appropriés de l’Arduino, qui franchit le bal de bal et retourne les résultats, bien que la connexion série de l’Arduino. À l’aide d’un programme terminal sur le côté PC, vous capturez le texte et utilisez un script pour convertir les valeurs ASCII en format Binary Nibble et économisez en tant qu’hex.

Cela nous facilite beaucoup plus facilement les roms des anciens planches d’arcade, car vous ne savez jamais lorsque vous pourriez rencontrer une ancienne planche d’arcade de Polybius sur votre prochaine sortie au sauvetage ou au chantier.

Rejoignez-nous après la pause pour tous les détails et comme toujours Commentaires!

82S129 Les promès bipolaires sont très courants dans les planches Jamma Arcade ’80. Malheureusement, seuls les programmeurs EPROM plus coûteux peuvent les lire. J’ai utilisé une Duemilanove Arduino pour vider 82s129 Contenu sur PC pour une utilisation de la sauvegarde.
J’ai utilisé une planche à pain pour connecter 82s129 pins à Arduino. Veuillez suivre ce schéma:

Arduino Pins ——> 82S129 broche (fonction)
+ 5V 16 VCC
GND 8 GND
Digital 2 5 A0
Digital 3 6 A1
Numérique 4 7 A2
Digital 5 4 A3
Numérique 6 3 A4
Numérique 7 2 A5
Numérique 8 1 A6
Numérique 9 15 A7
Numérique 10 12 O1
Numérique 11 11 O2
Numérique 12 10 O3
Numérique 13 9 O4
GND 13 CE1
GND 14 CE2

Voici le programme PDE à envoyer à Arduino:

1
2
3
4
5
6
7
8
9
dix
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 ans
71
72
73
74
75
76
77
78
79
80 ans
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
Commencer le programme PDE
———————————————————————————————————————————————————————————————————————————————————————————————–
/ *
82S129 Arduino Reader
Par Vincenzo Femia (Enzofémia@gmail.com)
* /
octet indirizzo = 0; // & quot; indirizzo ” est italien pour & quot; adresse ” 🙂
Boolean A0 = 0; // Adresse Bits
booléen a1 = 0;
Boolean A2 = 0;
boolean a3 = 0;
boolean a4 = 0;
boolean a5 = 0;
boolean a6 = 0;
boolean a7 = 0;
//
Boolean O0 = 0; // Bits de données
booléen o1 = 0;
booléen o2 = 0;
booléen o3 = 0;
Sortie d’octet = 0;
void setup()
{
// pin0 & amp; PIN1 réservé à la communication série
Pinmode (2, sortie); // Définir des épingles pour l’adresse
Pinmode (3, sortie);
Pinmode (4, sortie);
Pinmode (5, sortie);
Pinmode (6, sortie);
Pinmode (7, sortie);
Pinmode (8, sortie);
Pinmode (9, sortie);
Pinmode (10, entrée); // Définir des épingles pour les données (c’est un grignotage)
Pinmode (11, entrée);
Pinmode (12, entrée);
Pinmode (13, entrée);

}

boucle vide ()
{

Pour (indirizzo = 0; indirizzo & lt; 256; indirizzo ++) // à partir de 00 à la FF Adresse
{
A0 = Bitdread (indirizzo, 0); // Lire le bit d’état d’adresse …
A1 = Bitdread (indirizzo, 1);
A2 = Bitdread (indirizzo, 2);
A3 = bitdread (indirizzo, 3);
A4 = bitdread (indirizzo, 4);
A5 = Bitdread (indirizzo, 5);
A6 = Bitdread (indirizzo, 6);
a7 = bitdread (indirizzo, 7);

//… et définit la sortie
if (a0 == 1) {denadewrite (2, élevé);}
else {denadewrite (2, faible);}

if (A1 == 1) {denaillewrite (3, élevé);}
else {denadewrite (3, faible);}

if (a2 == 1) {denadewrite (4, élevé);}
else {denadewrite (4, faible);}

if (a3 == 1) {denadewrite (5, élevé);}
else {denadewrite (5, faible);}

if (a4 == 1) {denaillewrite (6, élevé);}
else {denadewrite (6, faible);}

if (a5 == 1) {denaillewrite (7, élevé);}
else {denadewrite (7, faible);}

if (a6 == 1) {denaillewrite (8, élevé);}
else {denadewrite (8, faible);}

if (a7 == 1) {denadewrite (9, élevé);}
else {denadewrite (9, faible);}

// attente afin que les sorties puissent être définies par 82S129
retard (50);

O0 = DigitalRead (10); // Lire le bit des sorties de données
o1 = digitalRead (11);
O2 = DigitalRead (12);
o3 = digitalRead (13);
Serial.begin (9600); // Réglage de la communication série
// Ecrire une adresse ASCII binaire Lire et “- & gt;”
if (a7 == 0) {Serial.Print (& quot; 0 “);}
else {série.print (& quot; 1 & quot;);}
if (a6 == 0) {Serial.Print (& quot; 0 & quot;);}
else {série.print (& quot; 1 & quot;);}
if (A5 == 0) {Serial.Print (& quot; 0 & quot;);}
else {série.print (& quot; 1 & quot;);}
if (a4 == 0) {série.Print (& quot; 0 & quot;);}
else {série.print (& quot; 1 & quot;);}
if (a3 == 0) {Serial.Print (“& quot; 0”);}
else {série.print (& quot; 1 & quot;);}
if (a2 == 0) {Serial.Print (“0”);}
else {série.print (& quot; 1 & quot;);}
     if (a1==0) {Serial.print(“0”);}
else {série.print (& quot; 1 & quot;);}
     if (a0==0) {Serial.print(“0 -> “);}
     else {Serial.print(“1 -> “);}  

//Write in binary ASCII output nibble

    if (o3==0) {Serial.print(“0”);}
else {série.print (& quot; 1 & quot;);}

    if (o2==0) {Serial.print(“0”);}
else {série.print (& quot; 1 & quot;);}

    if (o1==0) {Serial.print(“0”);}
else {série.print (& quot; 1 & quot;);}

    if (o0==0) {Serial.println(“0”);}
      else {Serial.println(“1”);}

    if (indirizzo==255) {Serial.println(“ROM has been read”);}
    Serial.end();
}
}
———————————————–
END pde program

Using Minicom or similar program you can log serial data on PC.
Using an editor now correct log file so that first line is:
00000000 -> XXXX

and last line is:
11111111 -> XXXX

Please verify that file contains only 1 cicle of reads (256 lines).

Now we have to convert this ASCII .txt file in binary file.
Since I use Linux I write in Gambas programming language () a little program to do this conversion.
However Windows user can port it in visual basic or other languages.
Simply it read nibble bits, build nibble value (00-0F), write binary value in output .hex file.
Here’s the source:

1
2
3
4
5
6
7
8
9
dix
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Begin of Gambas program
————————————————–
PUBLIC SUB Main()
DIM ingresso AS Stream
DIM uscita AS Stream
DIM stringa AS String
DIM o0 AS String
DIM o1 AS String
DIM o2 AS String
DIM o3 AS String
DIM valore AS Byte
ingresso = open “/home/enzo/temp/datafile.txt” FOR INPUT
uscita = open “/home/enzo/temp/datafile.hex” FOR OUTPUT CREATE
WHILE NOT Eof(ingresso)
LINE INPUT #ingresso, stringa
o3 = Mid$(stringa, 13, 1)
o2 = Mid$(stringa, 14, 1)
o1 = Mid$(stringa, 15, 1)
o0 = Mid$(stringa, 16, 1)
valore = 1 * Val(o0) + 2 * Val(o1) + 4 * Val(o2) + 8 * Val(o3)
PRINT #uscita, Chr$(valore);
WEND
CLOSE ingresso
CLOSE uscita
FINIR
————————————————————-
End of Gambas program

For questions can contact me:
Vincenzo Femia
enzofemia@gmail.com
Reggio Calabria, ITALY.

Leave A Comment

Recommended Posts

Automatisation Home Automatisation

[Brian] Envoyé dans cette écriture sur son système de domicile géré de la voix. En commençant par Microsoft Sapi, un système de reconnaissance vocale, il programma une autre automatisation de base. Dans un mouvement qui rend ce projet décidément plus génial, il […]

ybokm

Arbre liquide

L’arbre liquide est décoratif, fonctionnel et vert. C’est un affichage de retour de liquide créé par [Jia Yi Lin] qui est développé pour vous dire exactement combien d’eau vous gaspillez dans la douche. Derrière les jolis tubes est un quincaillerie intéressant. [Lin] […]

ybokm