Program auf Eprom kopieren und ausführen, welche Form?

Gast #7368406
Lesenswert?

Wenn ich ein Programm für einen z.B. Z80 Prozessor auf einem Sram oder Eprom ablegen möchte, dass aus mehreren Dateien bestellt, also z.B. .bin Files. Wenn ich die direkt auf dem Z80 ausführen möchte, muss ich die vermutlich vorher in asm konvertieren? Und dann? ist es dann nur noch eine Datei? Und wenn nicht, wie überführt man es dann in eine "Datei"? ODer muss man es wie bei einem Disk Image in ein .DSK Format konvertieren, was ja nur noch eine Datei wäre und diesen Inhalt dann auf das Eprom übertragen?

Gast #7368441
Lesenswert?

Ausgesprochen scharfsinnig, du muss hochbegabt sein haha Jepp, deshalb frage ich... Ein Wunder....

Und Deine Antwort war eine unfassbare Hilfe. Vielen Dank:-) Wirklich, erstaunlich über welch Wissen zu zu verfügen scheint und wie einfach du es vermitteln kannst. Bist ein richtiger Held

#7368445
Lesenswert?

Peter K. schrieb:

[...] vermutlich vorher in asm konvertieren?

Ich nehme an, der Z80 soll das Programm im EPROM direkt ausführen können und nicht in einer RAM/EPROM-DISK o.ä. verwalten. --> Ist das so?

Dann muss das EPROM den direkt ausführbaren binären Maschinencode enthalten.

Den erhält man als Ergebnis eines Assembler- oder Compiler/Linker-Laufs der .asm- ode .c-Datei. Dieses Ergebnis ist üblicherweise ein .hex-File oder auch ein .bin-File.

Und zwar ein einziges, nicht mehrere. Wenn Du mehrere BIN-Files hast, hast Du irgendetwas falshc verstanden.

[...] auf einem Sram [...] ablegen möchte [...]

Ich vermute da geht einiges durcheinander. Magst Du etwas mehr zum Hintergrund der Frage erzählen?

(re)

(Firma: Schweigstill IT) Persönliche Seite #7368453
Lesenswert?

Re schrieb:

Und zwar ein einziges, nicht mehrere. Wenn Du mehrere BIN-Files hast, hast Du irgendetwas falshc verstanden.

Naja, wenn das Programm inklusive der konstanten Daten auf mehrere EPROMs aufgeteilt werden muss, dann benötigt man hierfür im Allgemeinen auch mehrere separate Dateien. Je nach Konstellation zerlegt man entweder die bzw. eine der Ausgabedateien des Linkers oder zerlegt sie anschließend. Die Programmiersoftware für viele EPROM-Brenner unterstützt ebenfalls das Zerlegen, was aber meist bedeutet, z.B. separate EPROMs für gerade und ungerade Adressen zu brennen. Das der Z80 aber nur einen externen 8-Bit-Datenbus hat, ist das hier nicht so relevant.

Und wenn man der Programmiersoftware eine Binärdatei (.bin o.ä.) vorsetzt, kann man diese meist nur ab der Startadresse des EPROMs programmieren. Bei Motorola- oder Intel-Hexdateien sind wiederum die Adressen enthalten, was andererseits auch bedeutet, dass man ggf. Adressoffsets angeben muss, welcher Bereich nun im EPROM landen soll.

Aber wenn man ohnehin das Programm selbstgeschrieben hat, weiß man ja eh, in welchem Speichertyp und an welcher Adresse was landen soll. Spätestens beim Erstellen der Linkerdatei bzw. dem Aufruf des Linkers sollte man ja auch die konkreten Adressbereiche für ROM und RAM angeben. Und meist erhält man ja auch noch vom Linker ein entsprechendes Mapfile.

Wer es richtig hardcore mag, assembliert per Hand und schreibt gleich die Hex- oder Binärwerte hin. Natürlich muss man auch darauf achten, dass die EPROM-Brennsoftware nicht die Datei als ASCII-Repräsentation brennt, sondern eben in die Binärform umsetzt.

Gast #7368457
Lesenswert?

@Re (r42) Also wunderbar, dann ist es ja richtig, wie ich es ganz zu Anfang schon sagte. Also als .asm. Ich denke das mit dem .BIN ist ein Missverständniss, ich bin jetzt bei -BIN Files auf einem Schneider CPC 8128, dasist das BASIC Quellcode und nicht BIN wie ASM:-)

Nur kann dieser BASIC Quellcode eben aus mehren BIN(Basic Instruction what weiß ich was) bestehen:-) Wenn man so ein Programm dann in ASM konvertiert, ist es dann automatisch eine datei?

Mein Gedanke war einfach diese ASM Datei bzw deren Inhalt direkt ins Flash zu packen

(Firma: Schweigstill IT) Persönliche Seite #7368458
Lesenswert?

Peter K. schrieb:

Wenn ich die direkt auf dem Z80 ausführen möchte, muss ich die vermutlich vorher in asm konvertieren?

Nein, man kann doch auch im Kopf assemblieren und die Hexwerte direkt hinschreiben. Gerade beim Z80 ist das doch so einfach, dass ich das selbst nach zig Jahren Unterbrechung noch teilweise hinbekäme. Für die ersten Versuche mit ein paar Bitmustern, die auf einem Port ausgegeben werden und z.B. mit einem Oszilloskop beobachtet werden können, wäre das etwas in der Art von:

0000 3E 00 D3 xx 3C C3 02 00

mit xx = Portadresse

Gast #7368461
Lesenswert?

Und nein, es geht mir nicht darum selber direkt einzelne Asm Anweisungen ins Eprom zu schreiben, das ist für eine andere eigentlich frühere Versuchsreihe gedacht.

Es geht mir einfach darum testweise ein Programm das ich auf Diskette habe für den CPC; dieses als asm? aufs Eeprom zu kopieren an den Port zu klemmen und dann mit dem asm Befehl von der entsprechenden Adresse zu starten. Einfach nur so, um zu sehen wie es funktioniert, also gewissermaßen den zweiten Schritt vor dem ersten

@Thomas V. (tomv)10.03.2023 21:49 welche Probleme hast Du? Inwiefern hilft diese Antwort jetzt bei der Beantwortrung der Frage?! Hast Du irgendwie Langeweile? Ich habe meine Gründe weshalb ich das mache und nein, die gehen dich so gar nichts an....nur falls Du fragst

Gast #7368465
Lesenswert?

Das ist kein PRoblem, den Assembler habe ich sowohl auf dem CPC6128 als auch für den PC bzw ein Konverter Es geht mir halt wirklich darum, ob es so gehen würde, ist halt nur so eine nebenbei Bastelei, die ich irgendwann mal antesten wollte

Rainer W. schrieb:

Peter K. schrieb:

Wenn ich die direkt auf dem Z80 ausführen möchte, muss ich die vermutlich vorher in asm konvertieren?

Mit asm wird dein Z80 nichts anfangen können, falls du nicht einen Assembler auf deinem Z80 laufen hast, der das asm in Maschinencode übersetzt.

Gast #7368486
Lesenswert?

aha, und wie geht es und warum geht es so nicht? Die Antwort ist daher leider total unvollständig auf meine am Anfang gestellte Frage.. Etwas weiter oben klang es so, als ob genau so funktioniert.... Jetzt steht Deine Antwort der vorherigen irgendwie genau im Gegensatz zur vorherigen...

Daher sind Antworten wie "geht nicht" etwas sinnlos und noch viel weniger hilfreich.....also eigentlich, naja, überflüssig..etwas..

Das es mit dem .dsk Format nicht gehen würde ist ja klar und zu erwarten, aber der andere Ansatz der eigentliche...sollte gehen..dachte ich und das scheint ja nach der Aussage etwas weiter oben auch zu stimmen. Also wäre das "geht nicht" klar falsch..PUNKT

Gast #7368492
Lesenswert?

Normalerweise schreibt man Programme in einer Programmiersprache, zum Beispiel C oder Assembler. Die Toolchain übersetzt das in ausführbaren Maschinencode. Diesen musst du ins Eprom speichern.

Gast #7368498
Lesenswert?

Wolfgang R. schrieb:

Selbst ausführbare Dateien auf einer Diskette sind in einer Form gespeichert, die beim Laden in das System die Adresszuordnung organisiert. Ein Kopieren von Diskettendateien in Programm EPROMS läuft nicht.

Wie gesagt, sin es auf der Diskette .bin Files, was Basic Quellcode ist den ich dann in Z80 asm konvertieren würde

"Und der Umgangston ist unter aller Sau..." Nicht bei freundlichen bzw. hilfreichen,sachdienlichen Antworten, dann reagiere ich ebenfalls freundlich:-)

(Firma: www.wolfgangrobel.de) #7368501
Lesenswert?

Peter K. schrieb:

Wolfgang R. schrieb:

Selbst ausführbare Dateien auf einer Diskette sind in einer Form gespeichert, die beim Laden in das System die Adresszuordnung organisiert. Ein Kopieren von Diskettendateien in Programm EPROMS läuft nicht.

Wie gesagt, sin es auf der Diskette .bin Files, was Basic Quellcode ist den ich dann in Z80 asm konvertieren würde

Was hat BASIC Quellcode mit ausführbarem Z80 Code zu tun? BASIC wird in den meisten Fällen interpretiert... Ich verstehe deine Ausführungen nicht.

Gast #7368503
Lesenswert?

Stefan F. schrieb:

Das kann nicht sein. Basic Quellcodes haben die Endung .bas.

Maschinencode hat meistens die Endung .bin.

Ja, stimmt, bas und bak, das war ein Fehler. Also beziehen sich alle Aussagen auf bas, aber im Eingangstext sprach ich glaube ich von Basic Quellcode, dachte daher wäre es klar, wie die Datei aufgebaut ist, ansonsten sorgte das evtl für Irritationen

Gast #7368510
Lesenswert?

Basic Programme werden üblicherweise von einem Basic Interpreter ausgeführt. Wenn dein Z80 mit einem Basic Interpreter ausgestattet ist, dann bestimmt dieser wo und wie die Basic Dateien abgelegt sein müssen. Schau in dessen Doku nach.

Wenn dein Z80 System noch keinen Basic Interpreter hat, dann kaufe einen, der zur Hardware passt, und lies dessen Doku.

Gast #7368513
Lesenswert?

haha, das weiß ich nicht. Ich hatte gehofft sowas gibt es, aber das wäre wohl zu einfach gedacht. Naja, danke, schade, dann geht es halt wirklich nicht so einfach wie ich es mir erhofft hatte

Danke, das es dann doch noch eine Sachliche Diskussion gab aus der man auch was lernen konnte

(Firma: www.wolfgangrobel.de) #7368520
Lesenswert?

Peter K. schrieb:

Finally a working version of BASIC to Assembler. Convert BASIC files to ASM. Should be clear enough. Suggestions, remarks, comments, questions, death threats? All are welcome.

https://www.ticalc.org/archives/files/fileinfo/178/17882.html

Hab ich noch nie gesehen... aber der Kommentar klingt nicht vielversprechend. Das Programm könnte ggf. dein Übersetzen von Basic in Z80 Maschinencode erledigen, löst aber nicht das Problem der Speicherverwaltung mit RAM und ROM.

#7368548
Lesenswert?

Andreas S. schrieb:

Naja, wenn das Programm inklusive der konstanten Daten auf mehrere EPROMs aufgeteilt werden muss, dann benötigt man hierfür im Allgemeinen auch mehrere separate Dateien

D'accord - allerdings war im Eröffnungspost die Rede von nur einem EPROM.

Wolfgang R. schrieb:

Was ist ein bas2asm Konverter?

Heißt heutzutage "Compiler". Nichts Unübliches eigentlich.

Peter K. schrieb:

Also wunderbar, dann ist es ja richtig, wie ich es ganz zu Anfang schon sagte. Also als .asm.

Äh, nein, ganz im Gegenteil:

Peter K. schrieb:

Wenn ich die direkt auf dem Z80 ausführen möchte [...]

... dann brauchst Du eben den binären Maschinencode und keinen Assemblercode. Der Maschinencode (Binär) ist das, was herauskommt, wenn man den Assemblercode (Mnemonics) durch einen Assembler verarbeiten lässt.

Peter K. schrieb:

Ich denke das mit dem .BIN ist ein Missverständniss, ich bin jetzt bei -BIN Files auf einem Schneider CPC 8128, dasist das BASIC Quellcode und nicht BIN wie ASM:-)

Achso, nicht mehr direkt... in dem Fall müsstest Du den Inhalt des BAS erst direkt in das EPROM schreiben, damit es persistent wird und für die Ausführung dann ins RAM umkopieren an die Adresse, wo das BASIC-Programm erwartet wird.

https://k1.spdns.de/Vintage/Schneider%20CPC/Das%20Scheider%20CPC%20Systembuch.pdf Seite 276.

HTH (re)

#7368646
Lesenswert?

Hallo,

Wolfgang R. schrieb:

Ich bin davon ausgegangen ich nutze hierzu einfach einen bas2asm Konverter.

Hatte gedacht, das wäre so einfach:-(

Was ist ein bas2asm Konverter?

ein Basic-Compiler... ;-)

Der Thread erinnert mich an alte C64-Zeiten. Mit den CPC hatte ich nie wirklich zu tun, den Z80 kenne ich aber noch ganz gut.

Peter K. schrieb:

Wenn ich die direkt auf dem Z80 ausführen möchte, muss ich die vermutlich vorher in asm konvertieren?

Wie willst Du es auf welchem Z80 ausführen? Ein C80 der auf dem Tisch neben einem Eprom liegt macht alleine garnichts. Wenn Du den CPC meinst: der hat eine Art Betriebssytem, daß sich darum kümmert, was alles in der Kiste drinsteckt. Vermutlich kann der CPC auch externe Erweiterungen (Module) wie der C64. Da konnte man durchaus auch extern direkt ein Programm komplett ohne den Rest starten, machte für eigene Experimente aber nur Sinn, wenn man sich gut auskannte, sonst hat man ja weder was gesehen noch machen können.

Also was hast Du wirklich vor?

Gruß aus Berlin Michael

Gast #7368651
Lesenswert?

Peter K. schrieb:

ja, vermutlich ein verspäteter Aprilscherz,

Auf jeden Fall müsste dieser Konverter ganz speziell für deine Hardware ausgelegt sein. Nur die Z80 CPU alleine reicht nicht, schließlich gibt es Basic Befehle für Ein-Aufgabe auf der Hardware drumherum.

Und du müsstest den Assembler Code immer noch mit einer Toolchain in Maschinencode übersetzen.

Gast #7368657
Lesenswert?

Thomas V. schrieb:

Mal sehen, ob er hier:

https://www.eevblog.com/forum/microcontrollers/copy-program-to-eprom-and-run-what-form/msg4747775/#msg4747775

bessere Antworten bekommt =;-)

Ausm forum:

"So @beginner_max please be more specific when asking a question, and if English is a problem for you post both the original text and the translated text. Maybe someone can grasp the intent from it then."

Wenigstens kann er auf Englisch nicht doof herum blaffen wie hier.

#7368857
Lesenswert?

Peter K. schrieb:

Es geht mir einfach darum testweise ein Programm das ich auf Diskette habe für den CPC; dieses als asm? aufs Eeprom zu kopieren an den Port zu klemmen und dann mit dem asm Befehl von der entsprechenden Adresse zu starten.

Wie willst Du ein EPROM an "den" Port klemmen?

Hast Du eine vage Vorstellung davon, wie EPROMs an Prozessorsysteme angeschlossen werden?

(Firma: Privat) #7368905
Lesenswert?

Hier wird ausfürlich erklärt wie der Z80 arbeitet:

https://www.mathematik.uni-ulm.de/users/ag/yaze-ag/devel/Programmierung_des_Z80.pdf

Hast du ein Z80-Computer mit Betriebssystem? Dann mußt du dem Computer mit einem Systembefehl sagen ab welcher Adresse er ein Programm ausführen soll. Wir kennen aber dein Betriebssystem nicht, damit mußt du dich auseinandersetzen.

Oder ist das ein Z80-Einplatinencomputer ohne Betriebssystem? Da gibt es dann nur ein einziges Programm das sich im Eprom befindet, daß startet automatisch mit dem einschalten der Betriebsspannung. Das Programm mußt du dann vorher mit einen Eprombrenner ins Eprom schreiben und dann den Eprom auf dein Einplatinencomputer stecken.

#7369015
Lesenswert?

Jens G. schrieb:

Wieso braucht man immer gleich eine Toolchain? Man braucht einfach nur einen Assembler (also das Tool).

Ob man eine Kette, die nur aus einem einzigen Glied besteht, immer noch als Kette betrachtet, ist wohl eine Frage der persönlichen Philosophie. Nach den abstrakten Massstäben der Informatik ist das natürlich immer noch eine Kette, den nda kann eine solche natürlich aus nur einem Glied oder sogar auch aus null Gliedern bestehen.

Das ist Wohl der Fall bei diesem offensichtlichen Troll-TO, der schon die Art der "Quellen" absichtlich vernebelt. Erst sollen es angeblich mehrere *.bin sein, dann irgendwelche *.asm. Klarer Fall: Voll-Troll.

#7369033
Lesenswert?

C-hater schrieb:

Ob man eine Kette, die nur aus einem einzigen Glied besteht, immer noch als Kette betrachtet, ist wohl eine Frage der persönlichen Philosophie. Nach den abstrakten Massstäben der Informatik ist das natürlich immer noch eine Kette, den nda kann eine solche natürlich aus nur einem Glied oder sogar auch aus null Gliedern bestehen.

Jaja, abstrahiere Dir Deine Welt schön zurecht ...

#7369037
Lesenswert?

Jens G. schrieb:

Jaja, abstrahiere Dir Deine Welt schön zurecht ...

Das ist nicht meine Sicht, sondern die Sicht der Informatik als Wissenschaft.

Allerdings sollte man als Programmierer den akademischen Ergüssen der Informatiker zumindest eine gewisse Relevanz einräumen.

Du bist wohl noch längst nicht so weit, zu erkennen, das diese Betrachtungsweise durchaus nützlich sein kann...

(Firma: Privat) #7369155
Lesenswert?

von Dergute W. schrieb:

Harald K. schrieb:

Hast Du eine vage Vorstellung davon, wie EPROMs an Prozessorsysteme angeschlossen werden?

Offensichtlich mit Klemmen.

Eine Möglichkeit ist vielleicht so.

Es gab mal den KC85, da konnte man Programme auf Eprom-Module austauschen. Die Module waren Steckkassetten.

https://www.sax.de/~zander/kc85/kc85_hw.html

https://de.wikipedia.org/wiki/Kleincomputer_KC_85/2-4

Der KC85 war ein Z80-Computer.

#7369388
Lesenswert?

Hallo,

Peter K. schrieb:

-BIN Files auf einem Schneider CPC 8128, dasist das BASIC Quellcode und nicht BIN wie ASM:-)

ich hoffe jetzt mal es soll CPC6128 heißen... Der hat auch noch 128kB Ram und damit eine Bank-Switching-Logic. Ich werde mir aber das Handbuch nicht anschauen, ob man es da sowas wie Modulerweiterungen gibt. Ein KC85 ist mir vor Zeiten mal zugeflogen, habe den aber bis heute nicht angeworfen, ob der noch lebt.

Gruß aus Berlin Michael

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren