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?
Ojeh. Ich glaube, dir fehlt elementares Grundlagenwissen.
:
Bearbeitet durch User
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
Am besten klartext, so wie man am besten auch mit Frauen spricht! Ne, das Ding fängt am Reset Vector an, beim Z80 ist das 0x0000 und macht dann von da aus weiter, bis er sich aufhängt oder auch nicht.
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)
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.
Mal sehen, ob er hier: https://www.eevblog.com/forum/microcontrollers/copy-program-to-eprom-and-run-what-form/msg4747775/#msg4747775 bessere Antworten bekommt =;-)
@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
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
Peter K. schrieb: > Also wunderbar, dann ist es ja richtig, wie ich es ganz zu Anfang schon > sagte. Das ist alles völlig unsinniges Geschreibsel, bei den die Wahrscheinlichkeit sehr gering ist, dass Du damit das Richtige meinst.
Peter K. schrieb: > 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. Der Satz macht überhaupt keinen Sinn.
:
Bearbeitet durch User
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
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.
Peter K. schrieb: > Ich habe meine Gründe weshalb ich das mache und nein, die gehen > dich so gar nichts an....nur falls Du fragst Immer öfter geheime Projekte, und ein liebenswerter TO dazu. Was will man mehr?
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.
Klare Antwort: das, was du dir vorstellst, geht nicht. Punkt
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
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.
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.
Peter K. schrieb: > Die Antwort ist daher leider total unvollständig auf meine am Anfang > gestellte Frage.. Deine Frage ist auch total unvollständig.
Und der Umgangston ist unter aller Sau...
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:-)
Das kann nicht sein. Basic Quellcodes haben die Endung .bas. Maschinencode hat meistens die Endung .bin.
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.
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
Wolfgang R. schrieb: > 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. Ich bin davon ausgegangen ich nutze hierzu einfach einen bas2asm Konverter. Hatte gedacht, das wäre so einfach:-(
Ein weiteres Problem wird dich bei der Nutzung von Programmvariablen treffen. Wenn von Diskette geladen wird, dann stehen sowohl Programmcode als auch Variablen im RAM. Wenn du das alles in ein EPROM brennst, dann werden die Variablen plötzlich sehr unvariabel.
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.
Peter K. schrieb: > Wolfgang R. schrieb: >> 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. > > Ich bin davon ausgegangen ich nutze hierzu einfach einen bas2asm > Konverter. > > Hatte gedacht, das wäre so einfach:-( Was ist ein bas2asm Konverter?
Peter K. schrieb: > ich nutze hierzu einfach einen bas2asm Konverter. Kenne ich nicht, was soll das sein? Gibt es auch einen Kuchen zu Pommes Konverter?
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
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
Selbst wenn es einen bas2asm Konverter gäbe, wäre das keine Lösung, denn kein Z80 kann Assembler Quelltexte ausführen. Das ist nämlich Text, kein Maschinencode.
Nein, es war wohl eine Art GAgprogramm;-) Maja, ich ging davon aus von asm zum Maschinencode wäre es eher ein Witz nur eben von Basic 2 asm nicht
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.
ja, vermutlich ein verspäteter Aprilscherz, hatte mich nur daran erinnert vor Jahren mal auf diesen Link gestoßen zu sein, daher vermutlich meine irrige Annahme
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)
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
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.
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.
Stefan F. schrieb: > Und du müsstest den Assembler Code immer noch mit einer Toolchain in > Maschinencode übersetzen. Wieso braucht man immer gleich eine Toolchain? Man braucht einfach nur einen Assembler (also das Tool). Unter DOS war es einfach nur debug.com ;-)
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?
Moin, Harald K. schrieb: > Hast Du eine vage Vorstellung davon, wie EPROMs an Prozessorsysteme > angeschlossen werden? Offensichtlich mit Klemmen. scnr, WK
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.
Jens G. schrieb: > Wieso braucht man immer gleich eine Toolchain? Weil die Pakete mit den Entwicklungstools halt normalerweise so heißen.
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.
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 ...
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...
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.
Es gab beim KC85 auch Module mit leerer Leiterplatte, da konnte man sich dann selbst was konstruieren. http://www.ddr-rechentechnik.de/html/kc85_mod.html
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
Peter, vielleicht hilft die diese Dokumentation, die Funktionsweise deines Schneider Computers besser zu verstehen: https://k1.spdns.de/Vintage/Schneider%20CPC/Das%20Scheider%20CPC%20Systembuch.pdf Da werden all die Sachen detailliert erklärt, die hier in der Diskussion angesprochen wurde.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.