Forum: Mikrocontroller und Digitale Elektronik wie war das noch mit den 8080.


von Matthias W. (laserbrenner)


Angehängte Dateien:

Lesenswert?

Ahoi,
hier mal eine Frage an die alten Hasen :-) Von meiner Arbeit aus habe 
ich eine alte 19" Regelungsbaugruppe mit einen Intel 8080 und zwei 
Eproms mit seinen Programm darauf. Das Programm ist eigendlich nur ein 
PID-Regler mit grenzwert erkennung. Da ich mich mit naja sagen wir mal 
den Grundlagen/ anfängen der µC nicht wirklich gut auskenne hier mal die 
frage was es für Programme gibt "Disassenmber" oder vielleicht auch 
andere möglichkeiten die Eprom inhalte in Assembler zurüch zu übersetzen 
und vielleicht auch noch weiter bis hin zu einen Struktogramm, damit ich 
die möglichkeit habe das Programm zu verstehen und mir einen überblick 
über die Funktionsweise dieser baugruppe zu verschaffen. Hab natürlich 
auch schon ein wenig gegoogelt und ausprobiert aber noch nicht so 
richtig ans Ziel gekommen und da das mal wieder alles ziemlich 
Zeitkritisch ist hoffe ich auf eure Hilfe um ein wenig schneller zum 
Ziel zu kommen :-)

Anbei mal den Eprom inhalt...

Gruß
Matthias

von MaWin (Gast)


Lesenswert?

IDA (Pro) ist eigentlich der übliche Disassembler für Hacker und kennt 
auch den 8080, aber es gibt natürlich viele andere die man mit '8080 
Disassembler' findet, nicht alle mit so bequemer Oberfläche.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Matthias W. schrieb:
> Da ich mich mit naja sagen wir mal den Grundlagen/ anfängen der µC
> nicht wirklich gut auskenne hier mal die frage was es für Programme gibt
> "Disassenmber" oder vielleicht auch andere möglichkeiten die Eprom
> inhalte in Assembler zurüch zu übersetzen
Das ist nicht so schwer.
Nur: wenn du dann den Assembler hast fangen die Probleme an. Denn die 
Sprungmarken und die Variablen haben allesamt irgendwelche sinnlose 
Namen. Eine Wertetabelle oder Zeichenketten werden gnadenlos in sehr 
seltsame Assemblerbefehle "zurückübersetzt". Du müsstest also schon sehr 
genau wissen, warum da wo was und wie angesteuert ist
> und vielleicht auch noch weiter bis hin zu einen Struktogramm,
Vergiss es.
> damit ich die möglichkeit habe das Programm zu verstehen
Glaub mir: ohne herausragende Kenntnisse der Prozessorarchitektur und 
der Hardware wird das nichts.

> einen überblick über die Funktionsweise dieser baugruppe zu verschaffen.
Du weißt doch schon, was sie tut:
> Das Programm ist eigendlich nur ein PID-Regler mit grenzwert erkennung.

Was ist denn dein eigentliches Problem? Willst du die Funktion der 
Baugruppe ändern?

: Bearbeitet durch Moderator
von Detlef K. (adenin)


Lesenswert?

Lothar Miller schrieb:
> Was ist denn dein eigentliches Problem? Willst du die Funktion der
> Baugruppe ändern?

Ist doch mal wieder alles ganz klar: Er will ans Ziel kommen. :)

von Udo S. (urschmitt)


Lesenswert?

Wie Lothar schon geschrieben hat.
Du brauchst zumindest die Infos welche Peripherie an welchen Adressen 
steckt und wie diese Peripherie angesteuert wird.
Damals gabs für alles und jedes noch externe ICs.

Disassemblieren geht noch aber von da an brauchst du ganz viel Brain 
2.0.

Ich würde zum Spielen oder lernen einen modernen µC nehmen, da ist in 
dem Chip mehr drin an Rechenleistung und Peripherie als auf der ganzen 
19" Karte.

: Bearbeitet durch User
von Matthias W. (laserbrenner)


Lesenswert?

moin,
erstmal schön das schon so viele wach sind hier ;-)
Ja na klar über mein eigenliches Ziel habe ich mich noch nicht so 
richtig ausgelassen.
Ja ich weiss die Funktion der baugruppe. Und ich kenne auch ziemlich 
genau die Baugruppe und dessen aufbau. Und habe auch eine vorstellung 
von ablauf des Programms - das z.B. die regelbarameter über einen 
Multiblexer eingelesen werden, bezihungsweise durchgeschaltet werden und 
die anliegene Spannung über einen D/A-Wandler und einen OP ausgelotet 
wird usw. der eigenliche hintergrund ist das die Baugruppe einen defekt 
hat und ich diese wieder in schuß bringen soll/muss. Da es alles nicht 
einfach ist bei laufenner Baugruppe einen fehler zu finden gibt es jetzt 
mehrere ansätze um ans Ziel zu kommen. Einer an diesen ansätzen währe 
natürlich ein eigenes Prüfprogramm zu schreiben welches mehr oder 
weniger statische zustände auf der Baugruppe schaft um ordendlich 
einzelne bereiche durchzumessen - da ich aber nicht wirklich Assembler 
kann und auch nicht mit der 8080 technologie vertraut bin brauche ich 
hier viel Zeit und Forschung. Ein anderer weg wäre das bestehende 
Programm zu modiefizieren um eine art zwischen lösung von der ersten 
möglichkeit zu erhalten und etwas weniger forschung/zeit zu brauchen.

gruß

von Matthias W. (laserbrenner)


Lesenswert?

auf IDA bin ich auch schon gestoßen (Demo), aber irgendwie noch keine 
richtigen ergebnisse erhalten :-(

von Matthias W. (laserbrenner)


Lesenswert?

@udo: aktuelle µC sind mir vertraut - bin kein Profi aber komme mit C 
mitlerweile an ganz brauchbare Ergenisse.

von spontan (Gast)


Lesenswert?

>Da es alles nicht  einfach ist bei laufenner Baugruppe einen fehler zu >finden 
gibt es jetzt mehrere ansätze um ans Ziel zu kommen.


Das Programm zu disassemblieren ist aber der komplizierteste und auch 
unsinnigste Ansatz.

Nach so vielen Jahren im Betrieb ist sicher kein Softwarefehler 
vorhanden, und wenn, dann ist der längst akzeptiert.

Da ist die Hardware defekt.

Spannungen (Versorgungsspannungen) messen ist schon mal ein netter, 
einfacher Anfang.
Ein/Ausgänge kontrollieren der nächste Schritt...

von MaWin (Gast)


Lesenswert?

Na ja, nach so vielen Jahren kann auch mal ein bit im EPROM kippen und 
zu Kauderwelsch im code führen. Ein Regler, der ständig sbstürzt und 
resettet regelt vestimmt nicht gut.

von Detlef K. (adenin)


Lesenswert?

Das wird wieder mal ein Spiel der Art: Ich sehe was, was du nicht 
siehst.

Matthias W. schrieb:
> Ja ich weiss die Funktion der baugruppe. Und ich kenne auch ziemlich
> genau die Baugruppe und dessen aufbau. Und habe auch eine vorstellung
> von ablauf des Programms

von Tock (Gast)


Lesenswert?

Detlef Kunz schrieb:
> Das wird wieder mal ein Spiel der Art: Ich sehe was, was du nicht
> siehst.

quatsch, ist doch völlig klar, R42 ist zu groß.

von Dieter Werner (Gast)


Lesenswert?

Tock schrieb:
> quatsch, ist doch völlig klar, R42 ist zu groß.

Das wissen aber auch nur Leute, die "hitchhikers guide to the galaxy" 
gelesen haben.

von Matthias W. (laserbrenner)


Lesenswert?

Ach Leute, ich frage hier doch nur nach ansätzen und möglichkeiten, soll 
ich echt zwei dich DIN A4 ordner einscannen und hochladen? Es geht doch 
nicht darum das Ihr die Baugruppe Repariert sondern nur ob dieser ansatz 
prinziebel sinnig ist ihn weiter zu verfolgen.
Wir reden hier auch nicht über 0815 Fehler wie Interne Spannung weg oder 
Eprom defekten oder einer fehlenden Adressleitung - mit sowas würde ich 
euch nicht nerven.

Gruß

von Karl H. (kbuchegg)


Lesenswert?

Matthias W. schrieb:
> Ach Leute, ich frage hier doch nur nach ansätzen und möglichkeiten,

Ansatz:
Eproms erst mal in Sicherheit bringen.

Dann neue besorgen und da Prüfprogramme dafür entwickeln.
Da die Hardwareschaltung bekannt ist, sollte das eigentlich nicht so 
schwer sein, die richtigen Pins zu setzen.

8080 lernen musst du sowieso. Wenn du auf Disassemblieren und verstehen 
von komplexem vorhandenem Code setzt, dann noch viel mehr, als wenn du 
in aller Ruhe erst mal mit kleinen Brötchen anfängst.

von Matthias W. (laserbrenner)


Lesenswert?

Ja, so wird wohl mein weg aussehen :-|

erstmal vielen Dank euch allen

gruß

von Georg G. (df2au)


Lesenswert?

Aus dem klassischen Disassembler kommt im ersten Durchlauf etwas wie
1
L0000:  C3 74 01                JP      L0174
2
L0003:  F3                      DI
3
L0004:  C3 04 00                JP      L0004
4
L0007:  00                      NOP
5
L0008:  C9                      RET
6
L0009:  00                      NOP
7
L000A:  00                      NOP
8
L000B:  00                      NOP
9
L000C:  00                      NOP
10
L000D:  00                      NOP
11
L000E:  00                      NOP
12
L000F:  00                      NOP
13
L0010:  C3 AE 0F                JP      L0FAE
14
L0013:  F3                      DI
15
L0014:  C3 14 00                JP      L0014
oder
1
L0174:  16 32                   LD      D,'2'
2
L0176:  21 00 00                LD      HL,L0000
3
L0179:  AF                      XOR     A
4
L017A:  32 74 3B                LD      (L3B74),A
5
L017D:  31 00 3C                LD      SP,L3C00
6
L0180:  D5                      PUSH    DE
7
L0181:  11 02 20                LD      DE,L2002
8
L0184:  CD 5F 0F                CALL    L0F5F
9
L0187:  F3                      DI
10
L0188:  21 33 03                LD      HL,L0333
11
L018B:  11 01 20                LD      DE,L2001
12
L018E:  CD 5F 0F                CALL    L0F5F
13
L0191:  F3                      DI
14
L0192:  D1                      POP     DE
15
L0193:  21 00 3B                LD      HL,L3B00
16
L0196:  01 AA 55                LD      BC,L55AA
17
L0199:  70                      LD      (HL),B
18
L019A:  7E                      LD      A,(HL)
19
L019B:  71                      LD      (HL),C
20
L019C:  B8                      CP      B
21
L019D:  C2 13 00                JP      NZ,L0013
Das ist aus deinem ersten Eprom, der Anfang des Programms. Nun musst du 
aus diesen kryptischen Zeilen wieder einen Sinn heraus konstruieren. Für 
einen Anfänger ist das sehr frustrierend und zeitraubend. Es gibt aber 
Spezialisten, die deine 4kBytes in ein, zwei Tagen abarbeiten. Dazu 
müssen dann aber genaue Angaben zur Hardware und zum Zweck des Programms 
vorliegen. Und diese Spezialisten kosten Geld.

: Bearbeitet durch User
von Matthias W. (laserbrenner)


Lesenswert?

Georg G. schrieb:
> Und diese Spezialisten kosten Geld.

Kennst du jemanden der sowas macht?

von Karl H. (kbuchegg)


Lesenswert?

Georg G. schrieb:

> Das ist aus deinem ersten Eprom, der Anfang des Programms. Nun musst du
> aus diesen kryptischen Zeilen wieder einen Sinn heraus konstruieren.

Wobei eines der Probleme darin besteht, für Dinge wie L0174 sinnvolle 
Namen zu finden. Was wiederrum meistens dazu führt, dass man erst mal 
den Code im Detail analysieren muss und (manchmal auch mit ein wenig 
Glück) errät, was wohl die ursprüngliche Absicht an dieser Stelle war. 
Das geht wiederrum oft nur dann, wenn man genug Erfahrung hat, dass man 
typische Konstrukte wiedererkennt und auch eine ungefähre Vorstellung 
davon hat, was wohl (algorithmisch gesehen) an dieser Stelle im Code 
höchst wahrscheinlich passieren wird.
Das ganz ist also ein Ping-Pong Spiel aus Code lesen, eine 
Erwartungshaltung bilden, die Erwartungshaltung mit dem Code überprüfen 
und die Hypothese gegebenenfalls modifizieren.

Obiger Anfang ist nicht so schwer zu lesen. Denn was wird am Anfang 
passieren? Erst mal wird alles initialisiert. D.h. da muss der 
Stackpointer auf irgendeinen Bereich im Speicher gesetzt werden 
(üblicherweise ans hintere Ende), und die restliche Hardware 
initialisiert.
Was finden wir
1
L017D:  31 00 3C                LD      SP,L3C00

d.h. die Chance stehen nicht schlecht, dass das Label L3C00 eigentlich 
RAMEND heissen sollte.

Der Teil hier ist interessant
1
L0188:  21 33 03                LD      HL,L0333
2
L018B:  11 01 20                LD      DE,L2001
3
L018E:  CD 5F 0F                CALL    L0F5F
wenn HL geladen wird UND DE geladen wird, dann sind da oft 
Kopieraktionen im Spiel. Das könnte man mal prüfen, indem man nachsieht, 
was der Code an 0F5F macht.

Hier
1
L0193:  21 00 3B                LD      HL,L3B00
2
L0196:  01 AA 55                LD      BC,L55AA
3
L0199:  70                      LD      (HL),B
4
L019A:  7E                      LD      A,(HL)
5
L019B:  71                      LD      (HL),C
6
L019C:  B8                      CP      B
7
L019D:  C2 13 00                JP      NZ,L0013
liegt einer der Schüssel zum Verständnis im Jump-not-zero an L0013. 
Sieht man dort nach, dann passier dort ein
1
L0013:  F3                      DI
2
L0014:  C3 14 00                JP      L0014
Interrupts disablen und eine Endlosschleife? Das kann nur ein 
Fehlereinsprung sein, in dem der Prozessor zum Nichtstun verdammt wird.
D.h wenn ich das mal als ERROR bezeichne, dann ergibt der vorhergehende 
Code den Sinn, dass das ein Speichertest ist.
Über HL wird ein Muster in den Speicher geschrieben und dann 
nachgesehen, ob der geschriebene Wert auch im Speicher steht. Wenn 
nicht, dann Fehler.


Und so geht das dahin bei der Codeanalyse. Identifizierte Dinge führen 
zu Namen von Labels, die einen dann wieder bei der weiteren Codeanalyse 
helfen. Und so vervollständigt sich das Assemblerlisting immer mehr, 
auch mit Kommentaren. Viele Assembler Programme haben auch gewisse 
Schemata, wie die Register eingesetzt werden. Auch das wäre vernünftig 
zu dokumentieren bzw. rauszukriegen. Denn mit einem vergessenen Push/Pop 
kann man sich ganz schnell den Tag versauen.
Und erst dann kann man anfangen darüber nachzudenken, im Code 
Modifikationen vorzunehmen

: Bearbeitet durch User
von MaWin (Gast)


Lesenswert?

Georg G. schrieb:
> Das ist aus deinem ersten Eprom

Es muss ja nicht sein, dass A0, A1, A2, mit A0, A1, A2 verbunden sind , 
auch die Datenleitungen liessen sich vielleicht D7, D3, D6, D4, D5, D2, 
D1, D0 besser routen...

von Georg G. (df2au)


Lesenswert?

MaWin schrieb:
> Es muss ja nicht sein

Das ist richtig. Aber da man auf den ersten Blick sinnvollen Code 
erkennt, ist die Wahrscheinlichkeit hoch.

von Uwe (Gast)


Lesenswert?

Für einen wie mich der vor 22 Jahren im alter von 12 auf nem 80286 
angefangen hat sicherlich machbar aber sehr aufwändig. Da ich seit ich 
16 Bin elktronische Schaltungen entwickle und repariere wirst du mit 
Oszilloskop und Logcanalizer sehr viel schneller ans Ziel kommen.
Wenn du kein Assembler Crack bist lass es sein (das Disassemblieren).

von Uwe (Gast)


Lesenswert?

Bin noch nicht ganz wach, wollte damit sagen, daß es der bessere Ansatz 
für dich wäre den Fehler in der Hardware zu finden. Und selbst Jemand 
der schon lange mit Assembler zu tun hat einen Bitdreher per 
Disassemblierung zu finden keinen Spaß macht.
Wenns natürlich wirklich an einem gedrehtem Bit im EEPROM liegt ist das 
natürlich... Aber eventuell kannst du ja den Adressbus und Datenbus 
abhorchen und so die Fehleradresse lokalisieren.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Matthias W. schrieb:
> Georg G. schrieb:
>> Und diese Spezialisten kosten Geld.
>
> Kennst du jemanden der sowas macht?

Ja, ich mache so etwas. Vor ewiger Zeit, d.h. Mitte der achtziger Jahre, 
hatte ich das z.B. das ROM des Sharp MZ-80K per Disassembler von vorne 
bis hinten analysiert. Glücklicherweise hatte ich auch das Service 
Manual inklusive Schaltplan zur Hand und konnte daher auch stets die 
Hardware bzw. Peripherieregister nachverfolgen. Das ganze hat mich so 
geprägt, dass wenn ich heutzutage auf einen beliebigen Hexdump schaue, 
anfange, ihn automatisch in Z80-Assembler zurückzuübersetzen; so wie 
einige Funker/Funkamateure Vogelgezwitscher als Morsecode dekodieren.

Der Sharp MZ-80K besitzt einen Z80, welcher Deinem 8080 sehr ähnlich 
ist.

Wie schon von einigen Vorredner angedeutet, würde eine Analyse und 
Kommentierung eines 4KB-EPROMs einige Tage benötigen. Wenn Du ernsthaft 
interessiert bist, kann ich Dir/Euch gerne ein Angebot dafür 
unterbreiten.
Schicke ggf. eine E-Mail an andreas@schweigstill.de .

Gruß,
Andreas

von Michael_ (Gast)


Lesenswert?

Falls man doch einen Bitfehler vermutet, sollte man den EPROM im 
Programmiergerät auslesen und neu programmieren.
Oft sind schwache Bit da noch lesbar. Vor allem wenn man die 
Auslesegeschwindigkeit reduzieren kann. Evtl. auch die 
Spannungsversorgung bis an die Maximalgrenze erhöhen.

von Holm T. (Gast)


Lesenswert?

@Michael_ (Gast): "Evtl. auch die Spannungsversorgung bis an die 
Maximalgrenze erhöhen."

Damit sorgst Du eher dafür das Du die gekippten Bits nicht mehr lesen 
kannst.

Ein Epromer liest programmierte Roms bei 6V Vcc um sicher zu sein, das 
die Bits stabil programmiert sind, die hohe VCC hebt die 
Thresholdspannung der FET Zellen an. Wenn Du das mit einem wackeligen 
Eprom machst, erreichst Du
das sich der Fehler manifestiert, also genau der entgegengesetzte Weg 
ist richtig.

Gruß,

Holm

von voltwide (Gast)


Lesenswert?

Es ist wohl nicht nicht erwiesen dass ein EPROM-bit-Dreher die wirkliche 
Fehlerquelle ist. Und da erscheint mir der Aufwand des Disassemblierens 
doch recht hoch.

So manche dieser alten Schaltungen hatten da ihre Hardwareprobleme, z.B. 
unzureichende Abblockung der chips.

Aus meiner eigenen Erfahrung kann ich sagen, dass ein 64kbit CMOS EPROM 
seit 1989 seinen Dienst tut in meinem Z80180 basierten arbiträren 
Funktionsgenerator. Wenn da mal ein bit kippt, kann ich das Gerät 
wegschmeißen, da ich schon lange keinen EPROMMER mehr besitze und die 
CP/M Entwicklungsentwicklung natürlich auch perdu ist.

von Georg G. (df2au)


Lesenswert?

voltwide schrieb:
> Wenn da mal ein bit kippt, kann ich das Gerät
> wegschmeißen, da ich schon lange keinen EPROMMER mehr besitze und die
> CP/M Entwicklungsentwicklung natürlich auch perdu ist.

Es gibt genug Leute, die dir da helfen können. CP/M kannst du notfalls 
auch in einer VM auf deinem PC laufen lassen. Es gibt freie Emulatoren, 
die sogar recht fix sind.

von Georg G. (df2au)


Lesenswert?

An den TO:
Ein gutes Foto der Platine wäre auch hilfreich gewesen. Denn der 8080 
ist ja vermutlich kein Autist und muss irgendwie mit der Welt 
kommunizieren. In deinen Binärfiles ist aber nur recht obskurer Kram 
diesbezüglich zu sehen.

An einer Stelle sieht das Eprom gepatcht aus, einen Bitdreher kann man 
mit guter Wahrscheinlichkeit dort ausschließen, das Muster passt nicht 
dazu.

Was mich wundert: Im Eprom ist kein Versions oder Copyright String zu 
sehen, eher ungewöhnlich für ein kommerzielles Produkt.

von Bostel (Gast)


Lesenswert?

voltwide schrieb:
> CP/M Entwicklungsentwicklung

PL/M-80 (und ASM80) gibt es doch auf DOS

von Michael_ (Gast)


Lesenswert?

Holm Tiffe schrieb:
> Damit sorgst Du eher dafür das Du die gekippten Bits nicht mehr lesen
> kannst.

Jedenfalls hat das damals mit 2K Russentypen funktioniert.
Das waren N-MOS.
Die haben oft mal ein Bit vergessen.
Und vor allem mit der Standard Routine 20ns auslesen.
Versuchen würde ich das trotzdem mal.

von egal² (Gast)


Lesenswert?

Michael_ schrieb:
> Falls man doch einen Bitfehler vermutet, sollte man den EPROM im
> Programmiergerät auslesen und neu programmieren.
> Oft sind schwache Bit da noch lesbar. Vor allem wenn man die
> Auslesegeschwindigkeit reduzieren kann. Evtl. auch die
> Spannungsversorgung bis an die Maximalgrenze erhöhen.



Müsste es nicht genau andersrum sein - sprich, dass ich eher bei 
besonders niedriger Versorgungsspannung die Chance habe, den richtigen 
Inhalt einer Speicherzelle aus dem EPROM auszulesen?
Ich beziehe mich dabei auf den Programmieralgorhytmus, da wird während 
des programmierens bei erhöhter Versorgungsspannung (VCC = 6.5 
±0.25V)getestet ob das BIT richtig gesetzt ist, bevor zur nächsten Zelle 
übergangen wird. Ich wäre jetzt davon ausgegangen, dass die VCC=6.5V den 
worst case Zustand für die Erkennung darstellt.

von egal² (Gast)


Lesenswert?

Holm Tiffe schrieb:
> Damit sorgst Du eher dafür das Du die gekippten Bits nicht mehr lesen
> kannst.
>
> Ein Epromer liest programmierte Roms bei 6V Vcc um sicher zu sein, das
> die Bits stabil programmiert sind, die hohe VCC hebt die
> Thresholdspannung der FET Zellen an. Wenn Du das mit einem wackeligen
> Eprom machst, erreichst Du
> das sich der Fehler manifestiert, also genau der entgegengesetzte Weg
> ist richtig.
>
> Gruß,
>
> Holm

Sorry, hatte ich überlesen!

von egal² (Gast)


Lesenswert?

Jetzt aber doch noch mal ne Frage dazu:

@Holm

Holm Tiffe schrieb:
> Wenn Du das mit einem wackeligen
> Eprom machst, erreichst Du
> das sich der Fehler manifestiert, also genau der entgegengesetzte Weg
> ist richtig.

Der Vorgang ist doch reversibel, oder? Sprich wenn ich die 
Versorgungsspannung wieder herunterdrehe, erkenne ich wieder den 
richtigen Zustand bei "grenzwertigen" Speicherzellen?

Ich Frage deshalb ob man die Methode dazu nutzen kann (im Falle eines 
Defektes eines Gerätes) zu testen, ob der Inhalt eines EPROMs eh schon 
"grenzwertig" ist oder nicht, ohne den Inhalt dabei zu zerstören.

von Wolfgang H. (Firma: AknF) (wolfgang_horn)


Lesenswert?

Schon klar, Matthias: (schrieb:)

> Ach Leute, ich frage hier doch nur nach ansätzen und möglichkeiten,

Ich mag aber keine Antwort geben, deren wirtschaftlichen Erfolg ich 
selbst nicht sehen kann.

Entweder willst Du ein kommerziell genutztes System verbessern / von 
einem Mangel befreien, oder eines, das nicht kommerziell genutzt wird.

Im ersten Fall erwartet Dein Kunde Qualität und eine lohnende 
Nutzungsdauer.

Dissassemblieren eines 8080-Progamms lohnt nur, um eine Konstante zu 
finden, zu verbessern - und alles andere zu lassen, wie es war. Gibt es 
die Entwicklungsumgebung überhaupt noch? Oder verlangt die bei Neustart 
einen Treiber, der gegen 1982 entsorgt wurde?

Denn je mehr Du änderst, desto schlimmer wird die Verschlimmbesserung.
Da greif besser die Spannung an dem Multiplexer ab, den Du beschrieben 
hast, bilde das Ganze mit einer Karte von National Instruments und Lab 
View nach, spendiere einen eigenen PC und speise das Regelsignal wieder 
in die alte Platine ein.

Ich möchte vermuten, selbst ein Raspberri Pi als Huckepqack-Reiter auf 
der vorliegenden Regelkarte könnte letzlich günstiger sein als 
Disassemblierung und neue KKodierung.

Ciao
Wolfgang Horn

von Soul E. (Gast)


Lesenswert?

egal² schrieb:

> Ich Frage deshalb ob man die Methode dazu nutzen kann (im Falle eines
> Defektes eines Gerätes) zu testen, ob der Inhalt eines EPROMs eh schon
> "grenzwertig" ist oder nicht, ohne den Inhalt dabei zu zerstören.

Genau deshalb verifizieren manche Programmiergeräte je einmal an der 
oberen und an der unteren Grenze der Versorgungsspannung. Ob jetzt oben 
kritischer ist als unten oder umgekehrt hängt vom Design der Sense Amps 
ab. Dazu muss man den inneren Aufbau des jeweiligen EPROM-Typs kennen.

Matschige EPROMs haben aber eigentlich immer verlängerte Zugriffszeiten. 
Daher lassen sie sich im EPROMmer mit 250 kHz noch auslesen, während sie 
in der Applikation mit 1-2 MHz schon ausfallen.

von Holm T. (Gast)


Lesenswert?

egal² schrieb:
> Jetzt aber doch noch mal ne Frage dazu:
>
> @Holm
>
> Holm Tiffe schrieb:
>> Wenn Du das mit einem wackeligen
>> Eprom machst, erreichst Du
>> das sich der Fehler manifestiert, also genau der entgegengesetzte Weg
>> ist richtig.
>
> Der Vorgang ist doch reversibel, oder? Sprich wenn ich die
> Versorgungsspannung wieder herunterdrehe, erkenne ich wieder den
> richtigen Zustand bei "grenzwertigen" Speicherzellen?
>
> Ich Frage deshalb ob man die Methode dazu nutzen kann (im Falle eines
> Defektes eines Gerätes) zu testen, ob der Inhalt eines EPROMs eh schon
> "grenzwertig" ist oder nicht, ohne den Inhalt dabei zu zerstören.

Ja, klar ist das reversibel, Du kannst das bei jedem Lesevorgang 
umschalten.

So eine EPROM Zelle ist ja ein FET mit 2 Gates, wovon Eines praktisch 
vollisoliert ist un die Ladung durch einen ominösen Tunnelvorgang 
erhalten hat. Mit diesem Gate stellst Du praktisch den Grundarbeitspunkt 
der Zelle ein und mit dem Restlichen FET und seiner Betreibsspannung 
kannst Du dann den Effekt auslesen. Wenn die Eproms halb leer sind, sind 
die beim Lesen auch lichtempfindlich.. logisch, die Schaltschwelle wird 
auch dadurch beeinflußt.


Gruß,

Holm

von Georg G. (df2au)


Lesenswert?

Holm Tiffe schrieb:
> beim Lesen auch lichtempfindlich

Manche sind auch nach richtigem Programmieren lichtempfindlich. Es gab 
mal einen Bauvorschlag für eine Kamera, die als Sensor ein Eprom hatte. 
Mit den ersten dynamischen RAMs ging das auch, war nur schwieriger, das 
Gehäuse zu öffnen.

von Häsch Define (Gast)


Lesenswert?

soul eye schrieb:
> Genau deshalb verifizieren manche Programmiergeräte je einmal an der
> oberen und an der unteren Grenze der Versorgungsspannung.

Viele Programmer haben neben der Typenwahl auch noch separate 
Einstellmöglichkeiten der Programmierspannung und der Betriebsspannung, 
sogar mein Uraltgerät. Dafür schickt man einen am Terminal eingegebenen 
Code über RS232, das Gerät wird an der RS232 einfach wie ein Modem 
bedient.

An meinem Gerät lassen sich Abstufungen von je 0,25V einstellen.

In der Anfangszeit stellte ich einfach nur den nächstbesten Typ für 
Fabrikate verschiedener Hersteller ein, und das tat es auch. Oft liegt 
die Schrittweite von 0,25V sogar in der angegebenen Toleranz, und falls 
die Spannungen am Programmer sowieso präzise sind.

Ich werde die Sache mal im Auge behalten, und beim nächsten Auspacken 
des Programmers mal EPROMs unter verschiedenen Spannungseinstellungen 
testen. Allerdings lassen sich nicht alle Spannungen grenzenlos 
einstellen, sondern nur von 5 bis 25V in den 0,25V-Schritten. Parallele 
EEPROMs wie der 28C16A werden mit nur 5V gebrannt. Aber z.B. 18V oder 
22V kann man schon mal für einen 21V-Typ einstellen. Der Programmer 
merkt das sofort, und bricht beim ersten fehlerhaften Byte ab, beim 
Totalschaden natürlich auch.

Wobei die CMOS-Typen allerdings garantiert nicht die Spannungen alter 
NMOS-Typen vertragen, da verabschiedete sich durch Verwechselung schon 
mal ein CMOS-Stein.

Uralte 2516 von 1979 hielten die Daten mal erstaunlich gut, ich bekam 
sie kaum gelöscht. Mindestens fünf Durchläufe im Löschgerät, ca. zwei 
Stunden. Diese könnte ich aber zu Datenerhaltstests verwenden, z.B. ein 
mal löschen, und wieder testen, usw.. Modernere natürlich auch, dann 
nach einer Minute das Löschgerät abschalten.

Beim 8080 hätte ich jetzt geglaubt, daß er noch PMOS-EPROM mit drei 
Spannungen hatte.

von Thomas E. (thomase)


Lesenswert?

MaWin schrieb:
> Georg G. schrieb:
>> Das ist aus deinem ersten Eprom
>
> Es muss ja nicht sein, dass A0, A1, A2, mit A0, A1, A2 verbunden sind ,
> auch die Datenleitungen liessen sich vielleicht D7, D3, D6, D4, D5, D2,
> D1, D0 besser routen...
Doch. Das muß sein. Sonst müssten die Leitungen beim EPROM-Brenner 
genauso verlegt sein oder der Hexcode müsste entsprechend verdreht 
werden. Sowas kann man mit einem RAM machen. Da ist es egal.

mfg.

von Häsch Define (Gast)


Lesenswert?

Thomas Eckmann schrieb:
> Doch. Das muß sein. Sonst müssten die Leitungen beim EPROM-Brenner
> genauso verlegt sein oder der Hexcode müsste entsprechend verdreht
> werden. Sowas kann man mit einem RAM machen.

Man könnte ja aber doch vor dem Brennen die Brenndaten mit einem kleinen 
selbst geschriebenen Progrämmchen verdrehen, was bits in einem Byte 
einfach vertauscht. Zumindest für die acht Datenleitungen. Bei Adressen 
wird es bestimmt aufwändiger.

Aber das ist Nonsens, selbst auf einer einlagigen Platine bekommt man 
die Leitungen noch gut hin, z.B. 8051 mit dem Daten-/Adreßmultiplexer 
und externem EPROM, selbst schon gemacht. Vielleicht vor dem 
PC-Zeitalter, als man Layouts noch von Hand klebte bzw. zeichnete.

von Falk S. (falkschilling)


Lesenswert?

Über den Aufwand die komplette Funktionalität zu extrahieren wurde ja 
schon einiges gesagt, daher klemme ich mir das.

Aber angeblich gibt es wohl ein IDA-Plugin namens SmartDec, das ein 
wenig C approximieren kann:

http://decompilation.info/

Hab ich aber selber auch noch nicht getestet.

von Georg G. (df2au)


Lesenswert?

Falk Schilling schrieb:
> C approximieren

Das Programm stammt aus keinem der gängigen 8080 C-Compiler. Es fehlen 
die typischen Funktionsprologe/Epiloge. 8080 und C ist auch eher selten. 
Als C modern wurde, war der 8080 schon out.
Die Konstrukte sind eher Assembler typisch. IIRC gab es nur einen 
Compiler, der auf die RST-Befehle optimierte (Quality Computers mit AO). 
Und der ist es definitiv nicht.
Bei einem Compiler wäre auch die Runtime Lib in einem Stück dazu 
gelinkt, typisch am Ende. Die erkennt man schnell.

Ohne Schaltbild sehe ich aber keine Chance, da viel sinnvolles zu 
erkennen. Diverse Peripherie ist Memory mapped. Da muss man schon 
wissen, was sich dahinter verbirgt.

Ansonsten sieht es nett gemacht aus, keine Bastelarbeit. Das RAM wird im 
Betrieb zyklisch auf defekte Zellen untersucht. Da war jemand echt 
feige. Es würde mich nicht wundern, wenn auch das Eprom mit einem CRC 
gesichert wäre.

von Häsch Define (Gast)


Lesenswert?

Georg G. schrieb:
> Das Programm stammt aus keinem der gängigen 8080 C-Compiler.

Du meinst wahrscheinlich einen Assembler.

In Unternehmen wurde z.B. 8048 um das Jahr 1978 herum noch rein in 
Assembler programmiert, mit einer speziellen teueren 
Intel-Programmierstation, als es noch keinen PC gab.

Die Dinger waren teurer als ein PC, und konnten aber sonst weiter 
nichts.

von Georg G. (df2au)


Lesenswert?

Häsch Define schrieb:
> Du meinst wahrscheinlich einen Assembler.

Ich weiß schon, was ich schreibe :-)
Der Beitrag war als Antwort auf den Hinweis von Frank gedacht, der einen 
"de-C-her" gefunden hat.

Mit MDS800, 8" Floppies und ISIS als "Betriebssystem" habe ich 
seinerzeit auch gearbeitet. Meinen schönen S100 CP/M Kasten, der 
deutlich schneller und bequemer war, wollte der Kunde nicht.

von Detlef K. (adenin)


Lesenswert?

Georg G. schrieb:
> Es würde mich nicht wundern, wenn auch das Eprom mit einem CRC
> gesichert wäre.

Nö, genau das gib es wohl nicht, dann wäre das leidige Thema "Bitfehler" 
aus der Welt (naja, aus dem Thread).
Also ich hab jetzt nicht explizit danach gesucht, aber das wäre ja mit 
eine der ersten Sachen, die nach dem Reset erfolgen sollten, und da war 
nichts auffälliges, außer dieser zyklich gepulsten Sache, die 
unverständlich ist, wenn man nicht weiß was drausen dran hängt.
Wahrscheinlich handelt es sich hier um die Abfrage von 
"Kommunikationslaser 17" und dies hier ist die Steuerung von "Bombe 20". 
;)

Und dann zitier ich mich mal selbst:

Detlef Kunz schrieb:
> Das wird wieder mal ein Spiel der Art: Ich sehe was, was du nicht
> siehst.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Georg G. schrieb:
> Mit MDS800, 8" Floppies und ISIS als "Betriebssystem" habe ich
> seinerzeit auch gearbeitet. Meinen schönen S100 CP/M Kasten, der
> deutlich schneller und bequemer war, wollte der Kunde nicht.

Das waren doch beides vergleichsweise traumhafte Arbeitsumgebungen im 
Vergleich zu meinem damaligen Ablauf:
- Programm auf Papier erstellen
- per Hand in (Z80-)Maschinencode übersetzen, dabei tausendmal 
kontrollieren, ob die Branches korrekt berechnet waren
- in der Schule am PET2001 oder CBM30xx eintippen
- mit anderen Anwesenden um den Zugriff auf DAS gemeinsam genutzte 
Diskettenlaufwerk streiten
- auf Diskette speichern
- Diskette und EPROM und DM5,- einem Mitschüler (zwei Jahrgangstufen 
über mir) geben
- den Mitschüler dazu bringen, obige Teile seinem Kumpel, der einen 
EPROM-Brenner besaß, geben zu lassen
- ein bis zwei Wochen auf Rücklieferung des programmierten EPROMs warten
- Programm ausprobieren

Das war also ziemlich wenig praktikabel. Bei meinem SC/MP II konnte ich 
wenigstens den RAM-Inhalt per DIP-Schalter programmieren. Aber als ich 
dann meinen Sharp MZ-80K bekam, strickte ich mir dann auch gleich den 
EPROM-Brenner des NDR-Klein-Computers dran. Allerdings musste ich die 
Adressdekodierung etwas umbauen und natürlich eine Programmierroutine 
schreiben.

Waren das die "guten alten Zeiten"? Nein. Ich habe dabei zwar sehr viel 
gelernt, aber wirklich produktiv war das nicht, selbst für Bastler.

Einen Riesendurchbruch brachte dann der Hi-Lo Systems ALL-03, den ich 
mir um 1989 herum kaufte. Den Brenner habe ich immer noch, aber leider 
ist die Schnittstellenkarte irgendwann abhandengekommen. :-(

: Bearbeitet durch User
von Falk S. (falkschilling)


Lesenswert?

Georg G. schrieb:
> Das Programm stammt aus keinem der gängigen 8080 C-Compiler. Es fehlen
> die typischen Funktionsprologe/Epiloge. 8080 und C ist auch eher selten.
> Als C modern wurde, war der 8080 schon out.

Danke dir, wieder was gelernt! Ist immer wieder interessant, 
Rechnerarchitektur in der Historie zu betrachten.

Und zu meiner Verteidigung: zu der Zeit Ende 70er/Anfang 80er war ich 
auch noch Quark im Schaufenster...  :)

von oszi40 (Gast)


Lesenswert?

WENN wie oben
>L0000:  C3 74 01                JP      L0174
>L0003:  F3                      DI usw.

... noch lesbar sein sollte, dann ist dieser EPROM noch zu 90% gesund 
und hat höchstens Einzelbits, die gekippt sein könnTEN. Das kam aber 
seltener vor. Von der Wahtscheinlichkeit her sollte TS Mattias erst mal 
Spannungen prüfen und mit dem Komponententester kranke Verbindungen nach 
außen kontrollieren. Die SW ist von der Häufigkeit her gesehen seltener 
das Problem. Ich tippe eher auf äußere Einflüsse wie Überspannungsfolgen 
oder kaputte Eingänge, gerissene Leiterzüge ....

von Detlef K. (adenin)


Lesenswert?

oszi40 schrieb:
> WENN wie oben
>>L0000:  C3 74 01                JP      L0174
>>L0003:  F3                      DI usw.
>
> ... noch lesbar sein sollte, dann ist dieser EPROM noch zu 90% gesund
> und hat höchstens Einzelbits, die gekippt sein könnTEN.

Hmm, das "usw." fehlt bei mir.
Bedeutet das nun das der EPROM jetzt nur zu 89% gesund ist?
;)
Ich versteh die Diskussion sowieso nicht.
Man liest den EPROM aus und lässt den Brenner die Daten verifizieren.
Wenn man ein guter Brenner hat, dann macht er es mit mindestens 2 
Spannungen.
Der Labtool48 machte das so.
Ok, wie ich eben feststellen musste gehört mein Galep5 nicht zu den 
"gute" Programmern :(

von Michael_ (Gast)


Lesenswert?

Häsch Define schrieb:
> Viele Programmer haben neben der Typenwahl auch noch separate
> Einstellmöglichkeiten der Programmierspannung und der Betriebsspannung,
> sogar mein Uraltgerät.
Es geht hier nicht um die Programmierspannung, sondern um die 
Betriebsspannung beim auslesen.
soul eye schrieb:
> Matschige EPROMs haben aber eigentlich immer verlängerte Zugriffszeiten.
> Daher lassen sie sich im EPROMmer mit 250 kHz noch auslesen, während sie
> in der Applikation mit 1-2 MHz schon ausfallen.

Sag ich doch auch. Schön gemächlich und mit der 20ns Routine.
Und nicht mit den optimierten.

Andreas Schweigstill schrieb:
> Das waren doch beides vergleichsweise traumhafte Arbeitsumgebungen im
> Vergleich zu meinem damaligen Ablauf:
> - Programm auf Papier erstellen
> - per Hand in (Z80-)Maschinencode übersetzen, dabei tausendmal
> kontrollieren, ob die Branches korrekt berechnet waren
> - in der Schule am PET2001 oder CBM30xx eintippen

Welches Jahr war das etwa?

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Michael_ schrieb:
> Welches Jahr war das etwa?

Hmmm, da muss ich überlegen... Das müsste so um 1982-1983 herum gewesen 
sein.

von Georg G. (df2au)


Lesenswert?

Andreas Schweigstill schrieb:
> Das müsste so um 1982-1983 herum gewesen

Ohje... wo war das denn? Ich durfte 1969 schon mit Lochstreifen (5 
Kanal) an der Zuse arbeiten. Das waren hier dann ja paradiesische 
Zustände :-)

1982 gab es schon die ersten 5.25" Festplatten mit sagenhaften 5MBytes 
Kapazität, alternativ die 17" Laufwerke mit 14Mbytes fest und 7MBytes 
Wechselplatte.

Einen Prozessor für den SC/MP-II habe ich hier noch, falls du was 
aufbauen möchtest, auch das dazu passende Eprom (5204) mit 512Bytes und 
60V Programmierspannung. Der Programmer mit Kälberzähnen zur 
Dateneingabe ist leider schon verschrottet.

von Thomas (kosmos)


Lesenswert?

Bei Altersschwäche würde ich mir als erstes die Elkos ansehen bzw. 
ausmessen ist nicht selten das diese austrocknen und dann nur noch 
optisch vorhanden sind.

von Michael_ (Gast)


Lesenswert?

Andreas Schweigstill schrieb:
> Hmmm, da muss ich überlegen... Das müsste so um 1982-1983 herum gewesen
> sein.

So "programmiert" habe ich wenig später etwa 84/85.
Mit dem Robotron LC-80, da konnte man nur die Adresse und den Code als 
Hex sehen.
Auf dem Papier mit Farbstiften die Sprünge und Unterprogramme markiert 
und dabei die Takte gezählt.
Den Programmer aus der Doku hatte ich mir nachgebaut. Und für die alten 
2708/U555 erweitert.
Bei Bedarf würde der sicher noch funktionieren.

Die Elkos werden es nicht sein. Auf der Platine waren selten welche, 
meist Keramik oder Tantal. Höchstens im Netzteil, das merkt man, wenn 
die Spannungen nicht stimmen.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Georg G. schrieb:
> Andreas Schweigstill schrieb:
>> Das müsste so um 1982-1983 herum gewesen
>
> Ohje... wo war das denn?

Das war am Trave-Gymnasium in Lübeck, welches in Sachen 
Naturwissenschaften sogar ausgesprochen gut ausgestattet war. Wir hatten 
immerhin ca. zehn PET und CBM, die per IEEE-488 vernetzt waren und sich 
den Drucker und das CBM-4040-Doppeldiskettenlaufwerk teilten. Später 
kamen noch zwei CBM-8096 hinzu, deren über 32KB hinausgehenden Speicher 
jedoch keine Anwendung nutzen konnte. Um den Computerraum betreten zu 
dürfen, musste man formal schon den Informatikunterricht in der 
Oberstufe oder einen Computerkurz besucht haben. Ich war damals der 
einzige Mittelstufenschüler, der eine Ausnahmegenehmigung hatte. Das 
Problem war nämlich, dass es kaum qualifizierte Lehrer gab, die den 
Computerunterricht leiten durften. Dafür mussten sie selbst irgendeinen 
Kurs des Kultusministeriums besucht haben.

Der mit Abstand fähigste Lehrer in Sachen Computer war jedoch mein 
Kunstlehrer. Wir bastelten in der Freizeit ziemlich viel an seinen 
Video-Genies (Tandy TRS-80-Clones) herum.

> Ich durfte 1969 schon mit Lochstreifen (5
> Kanal) an der Zuse arbeiten. Das waren hier dann ja paradiesische
> Zustände :-)

Das war aber mit Sicherheit nicht an einem normalen Gymnasium. Eine der 
Lübecker Berufsschulen hatte damals aber auch schon einen Großrechner 
von Wang, an dem irgendwelche kaufmännische Software und COBOL gelehrt 
wurden.

> 1982 gab es schon die ersten 5.25" Festplatten mit sagenhaften 5MBytes
> Kapazität, alternativ die 17" Laufwerke mit 14Mbytes fest und 7MBytes
> Wechselplatte.

Ich kenne noch aus dem "Computerclub", den ein Lübecker Fachhändler 
wöchentlich veranstaltete und in dessen Rahmen man alle möglichen 
Systeme (Apple II, MZ-80K, TI-99/4(A), Exidy Sourcerer, Atari 400/800, 
usw.) bestaunen und ausprobieren konnte, auch noch eine gigantische 
Fest-/Wechselplatte mit 5+5MB von Cameo, die an einem Apple II hing. 
Kostenpunkt: 20kDM.

> Einen Prozessor für den SC/MP-II habe ich hier noch, falls du was
> aufbauen möchtest, auch das dazu passende Eprom (5204) mit 512Bytes und
> 60V Programmierspannung. Der Programmer mit Kälberzähnen zur
> Dateneingabe ist leider schon verschrottet.

Hmmm, vielen Dank für das Angebot, aber so groß ist mein Interesse am 
SC/MP-II auch nicht mehr. Apropos 5204: solch ein EPROM ist mir zuletzt 
1997 in einem damals nagelneuen(!) HF-Leistungsmeskopf von R&S über den 
Weg gelaufen.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.