8052 ROM auslesen?

Apr 11, 2009 50 Replies

Ja, nach ein paar Dutzend Assemblerbefehlen, mit denen die Stackpointer, und der IP gesetzt werden, geht das in den Inner-Interpreter, der anfängt, den Faden abzuwickeln. Er rennt nur in einer (praktisch Endlos)Schleife und hangelt sich an den gefädelten Addressen weiter und findet dort wieder gefädelte Listen von gefädelten Listen, die gefädelte Listen usw. sind. Das geht solange, wie kein aktuelle Listeneintrag mehr auf andere Listen verweist, sondern etwas nützliches tun kann (ein sog. primitiv) zB. auf einem DROP landet.

DROP verwirft das oberste Element des Parameter Stack, also bei einem PC wären das die Befehle INC SP und JP [next] (oder so ähnlich). Next hangelt sich nun wieder anhand des Returnstack zurück und weiter geht's mit dem nächsten Listeneintrag.

Alle HLL definitionen sind im Prinzip nur Listen und zucken nur mit der Schulter (wie in einer grossen Firma/Behörde) und verweisen auf eine andere Liste usw. bis der Inner-Interpreter an jemanden gerät, der die Arbeit nicht mehr abwimmeln kann und sie erledigen muss.

Das hört sich jetzt furchtbar umständlich an, geht aber in Wirklichkeit für jedes NEST und NEXT (so heissen die HLL Routinen), ziemlich schnell, teilweise 1-3 Maschinenbefehle plus einem indirekten JP

Man hätte auch jede Liste aus ellenlangen Folgen von CALL addr ausführen können (wird je nach Forth Compiler auch gemacht), dann sparste zwar etwas overhead, ist auch etwas schneller, dafür braucht es 50% mehr Speicherplatz. Aber fürs Veständnis etwas leichter. Der Inner- Interpreter simuliert also praktisch einen CALL and die addr in der Liste. So ganz allgemein ausgedrückt.

BTW Forth auf einem hp2100 muss eigentlich genial schnell gewesen sein, denn der hatte in seinen 16bit das oberste bit als indirekt bit benutzt und automatisch mehrere Level indirekt in einem Befehl abgehandelt, bis er auf eine addr. mit bit2^15=0 kam und dann dort die Aktion des Befehls ausgeführt. Habs leider nie gesehen oder benutzt.

Die Zeit, die der IP verballert, bis er auf ein Wort stößt, was die Arbeit erledigt wird i.a. locker dadurch wettgemacht, dass die Daten nicht zwischen Stack in Variablen samt Rückgabewerten geschaufelt werden müssen.

Und die Worte in niedrigen Ebenen stossen halt sehr schnell auf ein primitive. So aus dem Gefühl raus, würde ich bei meinen Applikationen von höchsten

10-20 Ebenen ausgehen. Ich hab selten mehr als 8-10 Einträge auf dem Returnstack gesehen. Aber das ist nicht wirklich interessant.

Das Feueralarm Beispiel (anderer Thread) definiert vielleicht 2-3 zusätzliche Verschachtelungs Ebenen oberhalb der Kernel Funktionen.

Aber wie gesagt, das soll nur ein Gefühl geben, was da so abläuft und was der ICE und der LA sieht und was nicht. Die primitives wissen halt, was der Stack gerade enthält, der LA/ICE haben keinen Schimmer.

Das DROP interessiert sich garnicht und wirft was weg. Das DUP verdoppelt den TOS, also ein PUSH TOS, wobei es ihm auch egal ist.

Ein @ (fetch) tauscht den TOS mit dem Inhalt der addr die auf dem TOS liegt. Es weis auch nicht, was es ist. Braucht es auch nicht. Beim reengineering muss Du aber sehr genau wissen, was das primitive macht.

Das ! (store) schreibt den Wert von NOS nach der Stelle, auf die TOS zeigt. Das sollte eine Variable oder ein Buffer oder array sein, könnte aber während dem boot eine dynamisch angelegte Liste sein, die erst später interpretiert wird. Typisch bei Open-Boot und ähnliche Loadern. Viele Programme kompilieren beim Start irgendwas dynamisch zusammen, was in irgendwelchen 'USERconfig' Dateien steht. Wo der user (dann ohne es typischerweise zu wissen) mit Forth Befehlen irgendwas ändert.

Da steht evtl. "5 kADCgain !" was die Verstärkung des ADC auf 5 setzt.

Oder ein patch

: newMAXtemp 5 ADC@ 5 17 */ nTEMPmax ! ; \ das wird kompiliert

...

newMAXtemp \ und so ausgeführt

...

Bei einem @ *kann* der Datentyp wechseln, ist dem Forth egal, also Addresse gegen Inhalt = Addr gegen Daten vertauscht. Du musst es aber genau wissen, sonst stehste beim nächsten primitive schon auf dem Schlauch.

So das sollte erst mal reichen um zu verdeutlichen, das reverse eng. mit Forth ohne Quellen ein Alptraum ist. Und das ist gut so (Wowereit).

Mit den Quellen ist es recht einfach und wenn die ordentlich dokumentiert sind und der Programmierer einen ordentlichen Stil hatte, macht es Spass.

Saludos Wolfgang

Meine 7 Sinne: Unsinn, Schwachsinn, Blödsinn, Wahnsinn, Stumpfsinn, Irrsinn, Lötzinn. Wolfgang Allinger Paraguay reply Adresse gesetzt ! ca. 15h00..21h00 MEZ SKYPE:wolfgang.allinger

So sehe ich das auch. Und wenn der Drecksack von Programmierer ein Forthler war, der dem Hacker das Leben vermiesen wollte, dann brauchste 'ne Gummizelle.

Saludos Wolfgang

Meine 7 Sinne: Unsinn, Schwachsinn, Blödsinn, Wahnsinn, Stumpfsinn, Irrsinn, Lötzinn. Wolfgang Allinger Paraguay reply Adresse gesetzt ! ca. 15h00..21h00 MEZ SKYPE:wolfgang.allinger

Gleichfalls. Einer hatte 2 Prototypen ohne Bezahlung haben wollen und wollte erst bezahlen, wenn alles funzte. Nach ein paar Wochen rief er an: die Prototypen laufen prima, aber ich kann die Eproms tauschen und dann geht es nicht mehr, irgendwann kommt ein Fehler EPROM data failure.... Ich hab ihn dann gefragt, wie lange er schon rumprobiert hat das Problem zu lösen... Nö, hamwa nur durch Zufall festgestellt.

Watten Zufall aber auch :-))))

Er hat dann bezahlt und ich hab ihm das Progrämmchen geschickt, was die EPROMS frei schaltet. Ein DALLAS OneWire Seriennummer in einem TO92 Gehäuse mit abgeschliffener Bezeichnung und als BC337 in der Stückliste war auch noch dran beteiligt. C B und E an jeweils einem anderen Portpin, sonst nix weiter.

Er hat dann wohl diverse BC337 nicht mehr aus dem Lager hohlen müssen und ich hab ihm gesagt, er brauch die zukünfig auch nicht mehr zu bestücken.

Ich hab dann irgendwann mal gehört, dass da etliche Zeit mit ICE und LA draufgegangen ist, um das Eprom Problem zu lösen. Irgendwann wars wohl billiger, mich anzurufen und zu bezahlen :-)

Saludos Wolfgang

Meine 7 Sinne: Unsinn, Schwachsinn, Blödsinn, Wahnsinn, Stumpfsinn, Irrsinn, Lötzinn. Wolfgang Allinger Paraguay reply Adresse gesetzt ! ca. 15h00..21h00 MEZ SKYPE:wolfgang.allinger

...

...

Im Context von zeitgenössischen CPUs liest sich das wie vorsätzliche Sabotage. Jeder branch flusht die Pipeline und dann ist erst mal einige Takte Pause (anstelle von multiple issue).

Gruß, Gerhard

(der gerade seinen alten HP-35 wieder ausgegraben hat, weil er demnächst eine Prüfung machen muss bei der keine programmierbaren Rechner zugelassen sind :-)

Keine Ahnung, wie das bei Forthen für PC & Co erledigt wird, sicher gibts da einige Tricks. Ich kenne mich nur mit uC aus, da gibbet den ganzen Pipeline Käse kaum. Macht bei Echtzeitsystemen mit hoher IR Last IMHO keinen Sinn. Und für Maschinensteuerungen sind Pipelines IMHO auch wenig von Nutzen.

Ich weiss nur, dass die PC Forth (Kerne) locker in den CPU-Cache passen. Wie gesagt, die kleinsten Forthe funzen ab 2kB, 8kB ist schon recht umfangreich, ab 16kB fängt schon der Luxus an.

Es gibt 3 Implementierungen, DTC Direct Threaded Code, ITC Indirekt Threaded Code (wohl die klassische Variante, kenne ich von uC) und STC Subroutine Threaded Code (IIRC hab ich die auch schon mal auf uC gehabt).

Der Unterschied hat mich nie wirklich interessiert, ausser das ITC wohl die kompakteste Variante ist. Was ich oben beschrieben habe, ist ITC.

Ich benutze Forth nur auf uC und als Host auf den PC. Auf den heutigen PC ist mir persönlich egal, wie das genau gemacht wird, schnell sind mir alle genug für meine Anwendungen. Aber wenns Dich wirklich interessiert comp.lang.forth ist da sehr aktiv.

Saludos Wolfgang

Meine 7 Sinne: Unsinn, Schwachsinn, Blödsinn, Wahnsinn, Stumpfsinn, Irrsinn, Lötzinn. Wolfgang Allinger Paraguay reply Adresse gesetzt ! ca. 15h00..21h00 MEZ SKYPE:wolfgang.allinger

Gerrit Heitsch schrieb:

Hallo,

ja, den hatte ich vor etlichen Jahren bei seiner Diplomarbeit etwas beraten als er dafür eine Testplatine brauchte. Schon in der Diplomarbeit konnte er zeigen das solcher Schutz durchaus zu durchbrechen ist.

Bye

Harald Wilhelms schrieb:

Es ist nicht trivial, aber doch verhältnismäßig einfach. Vgl.

formatting link

Hanno

Vielen Dank an alle für die Antworten, die interessanten Links und die ebenso interessanten Diskussionen. Ich werde mir das mal in Ruhe durchlesen.

Zunächst geht's nur darum, den Code auszulesen. Ob er dann verschlüsselt ist, wird man sehen. Bei einem anderen Gerät des selben Herstellers mit externem EPROM ist jedenfalls nix verschlüsselt :)

Viele Grüße!

Patrick

Funktioniert das Akku-Pack noch? Mein geliebter HP-45 braucht ein Neues. Was kann man für Akkus in das Pack einsetzen? Ni-Cd, Ni-Mh, oder was für welche gehören da hinein?

Viel Spass weiterhin Rolf

-- Wo Frauen geehrt werden, sind die Götter zufrieden.

formatting link

M.W. sind NiCd bei Euch inzwischen weitgehend verboten und NiMH mag das Trickle Charge nicht besonders. D.h. Du muesstest u.U. die Ladeseite umstricken.

Es gibt aber nur einen :-)

Gruesse, Joerg http://www.analogconsultants.com/ "gmail" domain blocked because of excessive spam. Use another domain or send PM.

Joerg schrieb:

Naja, man bekommt schon noch NiCd - nur nichtmehr an jeder Ecke.

Gruesse Stephan

Hallo Jörg,

man bekommt die NiCd-Akkus noch, sogar die Quecksilber-Zellen sind noch zu haben, wenn gleich nur noch an ein oder zwei Stellen. Ich habe noch ein Mikro von Sennheiser, das benötigt so eine Batterie mit 12V und wegwerfen will ich nicht. Hat viel Geld gekostet.

Gruß Manfred

Quecksilberzellen?

Die sind echt giftig, gibt es in Nordamerika gar nicht mehr. Deshalb musste ich letztens meine alte Minolta auf Silberzelle umbauen. Gut dass ich Germaniumdioden gehortet hatte, eine OA90 passte wie die Faust auf's Auge.

Fuer das Sennheiser boete sich eventuell der Bau eines kleinen Wandlers

2-3 mal AA auf 12V an. Es gibt ja inzwischen Chips mit Ruhestroemen im einstelligen uA Bereich. Solange dessen Frequenz gut ueber der hoechsten Sampling Rate liegt muesste das fluppen.
Gruesse, Joerg http://www.analogconsultants.com/ "gmail" domain blocked because of excessive spam. Use another domain or send PM.

In article , Joerg writes: |> eine OA90 passte wie die Faust auf's Auge.

Also gar nicht?

Für alle, die dieses Sprichwort in ähnlicher Weise sinnentstellt verwenden, empfehle ich den Selbsttest mit beschleunigter Faust ;)

Und nein, Kloßbrühe ist auch nicht klar...

Rainer

Ist wohl beides gebräuchlich:

formatting link

Obwohl ich persönlich auch eher zu der ursprünglichen Bedeutung tendieren würde. Als jemand der mit Mode eher nichts am Hut hat, könnte ich allerdings nicht sagen, wie eine lachsfarbene Bluse und ein grellroter Schal zusammenpassen :-)

Frank Buss, fb@frank-buss.de http://www.frank-buss.de, http://www.it4-systems.de

In article , Frank Buss writes: |> Rainer Buchty wrote: |> |> > Für alle, die dieses Sprichwort in ähnlicher Weise sinnentstellt verwenden, |> > empfehle ich den Selbsttest mit beschleunigter Faust ;) |> |> Ist wohl beides gebräuchlich: |> |>

formatting link

Klar, wenn's nur genügend viele in der anderen Bedeutung verwenden.

Wobei ich bei den Sprichwörtern dann doch weniger geneigt bin, hier dem Punkt "Sprache wandelt sich" stattzugeben, denn schließlich handelt es sich in diesem Fall um grundsätzliche Logik.

Und so wenig wie Kloßbrühe klar ist, paßt die Faust eben aufs Auge.

|> Obwohl ich persönlich auch eher zu der ursprünglichen Bedeutung tendieren |> würde. Als jemand der mit Mode eher nichts am Hut hat, könnte ich |> allerdings nicht sagen, wie eine lachsfarbene Bluse und ein grellroter |> Schal zusammenpassen :-)

Sagen wir so: Ich hätte bereits bezüglich der lachsfarbenen Bluse so meine Vorbehalte.

Aber auch ich habe mit "Mode" nicht unbedingt viel am Hut, sondern beschränke mich in der Farbwahl auf das eher gedeckte Spektrum bzw. solche, die sich über farbtypische Adjektive und ohne Zuhilfenahme von Nahrungsmitteln beschreiben lassen.

Wie war das doch gleich: Pfirsich ist eine Frucht, keine Farbe :)

Rainer

Huch? Bin ich doch schon zu lange in Auslandia?

Kommt drauf an, wieviele Leute unangemeldet zum Essen erscheinen :-)

Gruesse, Joerg http://www.analogconsultants.com/ "gmail" domain blocked because of excessive spam. Use another domain or send PM.

Dafuer muss man heiraten :-)

Im Ernst, als ich mich fuer eines unserer ersten Abendessen ausser Haus anzog und meine Allerliebste (damals noch Freundin) das Ergebnis sah: "Das darf doch wohl nicht wahr sein!"

Gruesse, Joerg http://www.analogconsultants.com/ "gmail" domain blocked because of excessive spam. Use another domain or send PM.

verwenden,

Wie war das noch mit lindtgruen, obwohl Schokolade nicht gruen ist?

Gruesse, Joerg http://www.analogconsultants.com/ "gmail" domain blocked because of excessive spam. Use another domain or send PM.

Joerg schrieb:

Nö, den Quantensprung hört man auch dauernd.

"Ah die physikalisch kleinstmögliche Verbesserung"

Butzo

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required