Herrlich, was heute machbar ist. Fuer relativ wenig Geld.
Und relativ wenig Sinn. Wenn man mit einem 68k rumspielen will, sollte man einen Amiga nehmen. Denn dann hat man tonnenweise Software dazu und auch Hardware, mit der man was anstellen kann. Ein olles Minimalsystem mit 68k um ein paar IOs klimpern zu lassen und ein olles grünes Terminal mit ein paar Buchstaben zu füllen ist an Langweile kaum zu überbieten.
Mir kommen auch erhebliche Zweifel ob weitere Diskussionen mir Dir zielführend sind.
Du scheinst in einer Endlosschleife aus hektischer Aktivität ohne klare Zielstellung und ohne Aufgabensplitting festuhängen und nicht in der Lage zu sein zwei Schritte zurückzugehen und mal ganz grundlegend EINE ENZIGE Sache zu definieren die Du verstehen willst.
Im Übertragenen Sinn:
Du willst mit dem Auto nach Paris und fragst Dich jetzt wie eigentlich Alu Verhüttet wird um die Motorblöcke zu giessen und wie dann die Verbrennung gesteuert wird, Vergaser oder Direkteinspritzer und wie Vulkanisiert man eigentlich Gummi für die Reifen und wie bohrt man eigentlich die Löcher um an das Öl dafür zu kommen, weil man muss ja auch die Generatoren für die Halbleiterwerke bauen für die Steuerchips fürs Auto ...
Und egal was man sagt, Du sagts freundlich danke und fragst dann wie das doch gleich mit der Gasdruckfeder funktioniert für das Auto und das Du noch französisch lernen musst.
Meine Güte!
Lern doch erstmal Auto FAHREN, bevor Du dich im irgendwas sonst kümmerst!
Paris ist weit weg und die erste Fahrt sollte wohl erstmal Sonntags um den Block gehen.
So wie Du da rangehst, mit einem verkrusteten Christianiverlag, dem Lernmedium von vor 30J, mit CPUs von vor 30J, mit Software und Rechnern und Programmierequipment von vor 30J um damit interne Halbleitervorgänge sehen zu wollen...
Mein letzter Versuch:
Nehme Dir eine einfache CPU die fast jeder kennt, mit einer Programmierumgebung die aktuell ist und gut unterstützt und für die Du ganz viel Hilfe überall bekommen kannst.
Damit machst Du etwas das wir 'hello, World!' Programm nennen.
Ein einfaches Programm, das beweist das man ein programm auf der CPU ausführen kann.
Die absolute Basis für jede weitere Arbeit.
Das wird Dich ein eWeile in Aktion halten.
Ohne das Du E-Schrott Container und Flohmärkte nach längst ausgestorbenen Equipment durchsuchen musst und von Silberfischen angenagten Floppy Drive Hüllen nachjagts.
Ergo:
Kaufe Dir für ganz kleines Geld einen Arduino, installiere die IDE, stecke das USB Kabel an und leg los.
WENN Du dann die allergrundlegensten Sachen hinbekommst, schnappst du dir das Datemblatt zum AVR Controller der darauf verbaut ist und sprichst mal die Hardware im Controller direkt an.
WENN Du das geschafft hast, kannst Du Dir ja mal den übersetzten Assemblercode ansehen oder auch selbst einzelne ASM Passagen im Programm verwenden.
Und wenn Du bis dahin noch nicht verzweifelt bist und noch rüstig genug, kannst Du ja mal die grundlegenden Hardwareinheiten verstehen wollen.
Aber das liegt noch sehr weit weg für Dich.
Assembler sind einfach nur Merkwörter für Opcodes.
Ja, ganz einfach weil sich normale Menschen Wörter deutlich besser
merken können als reine Zahlen. Erst recht, wenn sie sich an natürlicher
Sprache orientieren, denn die behrrscht der Mensch schon.
Bei Autisten ist das anders.
Man versteht das ganze auch viel besser, wenn man vorher schon mal ein
paar komplexere Platinen hergestellt oder verlötet hatte.
Unsinn! Um Digitaltechnik zu lernen und zu verstehen muss man nicht
VORHER Hardwerker werden. Man wird es bestenfalls HINTERHER.
Hallo Leute,
ich denke es wird ganz verschieden sein, je nach dem wie der Mensch
veranlagt ist, wie Rbx zB. über Autisten schrieb. Es wird auch damit
zusammenhängen welche Möglichkeiten zur Entwicklung da waren.
Ich denke es gibt Leute, die sind wie fürs Handwerk geboren. Eine Frage fürs Forum hätte ich bitte noch gerne. Wie macht man die Buchstaben farbig um besser zu unterscheiden, wer was sagt?
Ja ich sehe gerade, die Forumsoftware macht das automatisch.
Heute habe ich Haushalts-Tag, in der Zeit sitze ich dann nicht am Rechner.
Die guten Vorschläge, nehme ich mir zu Herzen.
Außer, dass ich mit dem Z80 weiter machen möchte, dort das Uhren-Programm mit Disassembler analysiern und verstehen lernen; denn wenn es disassembelt ist, werde ich es noch nicht verstanden haben. Das da viel incrementiert wird, oder vielleicht auch viel decrementier um das Zero-Flag abzufragen, kann ich mir schon vorstellen. Es gibt ICs die können selber das Nibbel-Bitmuster in 7-Segment umwandeln. Bei dem MPF-1, sieht es aber nicht so aus. Man kann sich vorstellen, was die Hardware selber macht, braucht nicht programmiert zu werden. Ich wundere mich aber, dass das Prg, so kurz ist.
Also jetzt steht erst einmal die Haushalts-Arbeit an.
Vielen Dank nochmal für Eure guten Tipps.
Auch dem für Bleistift u. Radiergummi.
Dem Tipp für die kleinen µCs, und
Dem Disassembler für LINUX.
Ich melde mich wieder.
LG. Enk
PS.:
Die anderen E-Mails muss ich noch Lesen.
Herrlich, was heute machbar ist. Fuer relativ wenig Geld.
Und relativ wenig Sinn. Wenn man mit einem 68k rumspielen will, sollte
man einen Amiga nehmen.
Dann moechte ich nicht wissen, was Du von meinen Vaxen (Plural von VAX) haelst.
Aber ich gebe Dir ein bischen Recht: Meine VAX ist mittlerweile voll emuliert, eine virtuelle Maschine mit Gigabit-Ethernet, Platten-IO-Leistung zum Abwinken, 512MB RAM, CPU-Leistung mehr als genug (zwar nur ein Kern, aber das war im Orginal auch so).
Nur die schoene Abwaerme im Herbst und das Rauschen der acht Luefter, das fehlt mir (ich habe mir die Terminal-Farbe bei Putty auf Amber und gruen gesetzt...)
Das liegt daran, dass Routinen aus dem Monitor (=Betriebssystem) des Mikroprofessors mit benutzt werden. Das wären die Tonausgabe, das Wandeln in Siebensegmentcode und die Anzeige auf dem Diplay. Allerdings dürfte die Uhr alles andere als genau gehen, da der Sekundentakt nur grob aus Programmlaufzeiten abgeleitet wird.
Eine VAX der späteren Generation könnte man als Höhepunkt einer
Fehlentwicklung betrachten. Aber all Ding hat seine Zeit.
Die ganze Menschheitsgeschichte ist voll von Fehlentwicklungen! Und auch die GEGENWART, nicht nur was Computer angeht! Aus den meisten lernt man was, wenn oft leider erst spät und mit einem hohen Preis!
Eine VAX der späteren Generation könnte man als Höhepunkt einer
Fehlentwicklung betrachten. Aber all Ding hat seine Zeit.
Die ganze Menschheitsgeschichte ist voll von Fehlentwicklungen! Und auch
die GEGENWART, nicht nur was Computer angeht! Aus den meisten lernt man
was, wenn oft leider erst spät und mit einem hohen Preis!
Experience is a hard teacher. First comes the test, then the lesson.
Die ganze Menschheitsgeschichte ist voll von Fehlentwicklungen! Und auch
die GEGENWART, nicht nur was Computer angeht! Aus den meisten lernt man
was, wenn oft leider erst spät und mit einem hohen Preis!
Experience is a hard teacher. First comes the test, then the lesson.
Es gibt drei Wege zur Erkenntnis.
Durch Nachmachen, das ist der Einfachste.
Durch Nachdenken, das ist der Edelste.
Durch Erfahrung, das ist der Bitterste.
Meine These: alle 3, in dieser Reihenfolge. Erst macht man nach, kapiert aber nichts. Dann denkt man drüber nach, kommt dabei auf großartige Ideen und realisiert sie. Anschließend wird man auf den Boden der Tatsachen zurück geholt.
Unsinn! Um Digitaltechnik zu lernen und zu verstehen muss man nicht
VORHER Hardwerker werden. Man wird es bestenfalls HINTERHER.
Digitaltechnik an sich ist einfach nur Abzählerei. Darüber hinaus geht es aber um Grundtechnik von Schaltungen und Zusammenhängen zu verstehen.
Analogtechnik heißt ja auch Analog, weil sie so anschaulich ist. Analog kann man
kontinuierliche Verläufe verfolgen, also stufenlos verfolgen, digital eben nur abgezählte, die allenfalls stufenlos imitieren, inklusive der Verzerrung wegen den nötigen Abstufungen.
(http://studio96.de/artikel/art010609%20analog%20digital%20wandlung.html)
Außerdem kam früher alles bezüglich Computerzusammenhängen mit guten Erklärungen daher.
Wenn also jemand etwas von Grund auf verstehen möchte, kommt man auch schlecht an der Analogtechnik vorbei.
Ist doch so ähnlich, wie bei einem Apfel und Birne Vergleich: Vergleicht man beide, erkennt man die Unterschiede viel besser und so auch den Apfel und die Birne.
Derzeit bin ich hin und hergerissen, ob ich ein System mit 68000
aufbaue. Tatsächlich habe ich aber keine wirkliche Verwendung dafür.
Aber wollen würd' ich schon gerne.
Mach doch was praktisches. Drumcomputer/Samper z.B.,.. naja, Atari Falcon mit DSP war wohl damals ein bisschen viel auf einmal, und Kompatibilität und Fertigung war wohl auch ziemlich schwierig.
Aber wenn man selber was versucht, warum nicht 68000 mit DSP oder mit Cell oder irgendwie sowas?
Die Filtertabellen vom Yamaha TX16W Sampler hatten auch etwas für sich - waren aber nur rudimentär angedeutet implementiert, und so kaum nutzbar. Aber mit DSP oder ähnlichem ginge das schon viel besser.
Aber wenn man selber was versucht, warum nicht 68000 mit DSP oder mit
Cell oder irgendwie sowas?
Totaler Käse, Zeitverschwendung.
Für Signalverarbeitung ist viel Rechenleistung immer gut. Das geht zwar auch mit einem Attiny, aber 96kHz Stereo 16Bit ist da nicht drinn.
Das kleinste, was man heute nehmen würde ist ein ESP32, PiPico, STM32H7 und dann die RasperiPi Liga und dann mit richtig Leistung CUDA und Grafikkarte.
Aber wenn man selber was versucht, warum nicht 68000 mit DSP oder mit
Cell oder irgendwie sowas?
Totaler Käse, Zeitverschwendung.
Für Signalverarbeitung ist viel Rechenleistung immer gut. Das geht zwar
auch mit einem Attiny, aber 96kHz Stereo 16Bit ist da nicht drinn.
Das kleinste, was man heute nehmen würde ist ein ESP32, PiPico, STM32H7
und dann die RasperiPi Liga und dann mit richtig Leistung CUDA und
Grafikkarte.
Hallo Leute, grüßt Euch,
wie sieht es mit RasperiPi aus?
Es geht mir ja darum, etwas -einfaches- zu haben.
Also fast zurück, bis nach ELISA
von Professor Joseph Weizenbaum.
LG. Enk
Das liegt daran, dass Routinen aus dem Monitor (=Betriebssystem) des
Mikroprofessors mit benutzt werden. Das wären die Tonausgabe, das
Wandeln in Siebensegmentcode und die Anzeige auf dem Diplay. Allerdings
dürfte die Uhr alles andere als genau gehen, da der Sekundentakt nur
grob aus Programmlaufzeiten abgeleitet wird.
Naja, es gibt auch Mikrocontroller von Raspberry Pi, den RP2040 oder
RP2350.
Nein. Der "Raspberry Pi" ist ein Computer und die Firma heißt "Raspberry Foundation". Das "Raspberry Pi Pico" Board ist ein Mikrocontroller Board. Das ist nicht der "Raspberry Pi" um den es hier ging. Ich habe mir diese verwirrenden Namen nicht ausgedacht.
Aber die sind auch nicht sehr "einfach" wie hier gewünscht.
Raspberry Pi Holdings
Raspberry Pi Ltd
Raspberry Foundation
Was auch immer. Profit!
Ist zwar besonders von Linksextremen als Teufelszeug verschrien, aber eher der Normalfall unternehmerischer Tätigkeit. Natürlich kann und sollte man zwischen "normalem" und pervers hohem Profit unterscheiden. Drogenhandel, Kunstmarkt und Crypto rangieren her im letzgenannten Bereich. ;-)
Das Gegenstück dazu heißt Sozialismus. Wird auch von Linksextremen sehr stark propagiert. Aber kaum von welchen, die in diesem leben.
Hallo Leute, grüßt Euch,
wie sieht es mit RasperiPi aus?
Jetzt ist es vorbei. Der Raspberry Pi ist ein PC!
Bitte, - ich widerspreche hier nicht.
Ich stellte mir vor, dass man ihn leeren kann,
jedoch es stimmt schon, es würde wahrscheinlich zu kompliziert werden.
Denn Mario M. schrieb ja,
Weil
Günter K. schrieb:
Ich wundere
mich aber, dass das Prg, so kurz ist.
Das liegt daran, dass Routinen aus dem Monitor (=Betriebssystem) ...
... und bin mit der Antwort sehr zufrieden.
Und ich bin auch damit zufrieden weil
Klaus schrieb:
Günter K. schrieb:
wie sieht es mit RasperiPi aus?
Weder alt noch einfach.
Ist klar, ich wollte es ja -einfach- haben.
Jedoch, ich bin kein Troll - (!) Ich bin zwar alt,
aber nicht uninteressiert.
Ich kann aber mittlerweile erkennen, dass wenn
Progamme im Hintergrund laufen, dass ich in dem Moment nicht weiß,
was sich eigentlich abspielt. Das sagen mir die Bücher bisher nicht.
Und auch beim Z80 ist die Programmierung viel komlexer, weil er mehr kann.
Vielleicht könnte ich das Uhren-Prg. von Christiani in eine Eieruhr umschreiben.
Sobald ich aber CPU-Emulator und dazu das Laufende Programm sehe,
würde ich es sehr wahrscheinlich verstehen können.
(Was ein Schwingkreis ist und andere Sachen weiß ich auch.)
Erstaunlich ist auch, dass der MPF-1 mit seinem "Monitor" noch läuft,
dass das E-PROM sich nicht (Radioaktiv) gelöscht hat.
Als ich die Uhr laufen sah, war ich begeistert. :-)) ;-)
In dem Christiani-Lehrgang ist auch kein kompletter Befehlssatz.
Und der von Zaks, gibt für einen Befehl mehrere Op-Codes an.
Es ist wirklich nicht einfach beschrieben.
Ich suche gleich im Internet. Letztendlich sollte man auch ein
Monitor, am Besten mit RGB-Signal betrieben werden können.
Nun ja, - vielleicht mache ich weiter mit dem 6502.
Mal sehen was ich im Internet noch finde,
habt Ihr noch Internet-Adressen dazu?
Letztendlich sollte man auch ein
Monitor, am Besten mit RGB-Signal betrieben werden können.
Damit bist du weit weg von "einfach". Lass die Idee mal ruhen bis du das Gefühl hast den Mikrocontroller, eine Menge Peripherie und die Software dazu zu beherrschen.
Für dich sind erst mal LEDs und später eine serielle Konsole als Ausgabeschnittstellen angemessen.
Letztendlich sollte man auch ein
Monitor, am Besten mit RGB-Signal betrieben werden können.
Für dich sind erst mal LEDs und später eine serielle Konsole als
Ausgabeschnittstellen angemessen.
Mein erster Z80 war "stand-alone". Da gab es keine serielle Konsole.
Allerdings war er vollstaendig selbst entwickelt und gebaut.
Da war der Anschluss einer einfachen(!) Videoschnittstelle einfacher.
Die "klaute" per BUSRQ dem Z80 den Speicher, und konnte 32 Zeichen
auf 32 Zeilen darstellen. Immerhin monochromatisch. :)
Das ist leider bei einem "Fertigsystem" nicht so einfach moeglich.
RGB in Pixelform kam dann einige Jahre spaeter.
Bitte, - ich widerspreche hier nicht.
Ich stellte mir vor, dass man ihn leeren kann,
In der Tat. Leeren ist deine Kernkompetenz!
jedoch es stimmt schon, es würde wahrscheinlich zu kompliziert werden.
Aber nicht doch!
Günter K. schrieb:
wie sieht es mit RasperiPi aus?
Weder alt noch einfach.
Ist klar, ich wollte es ja -einfach- haben.
Jedoch, ich bin kein Troll - (!) Ich bin zwar alt,
aber nicht uninteressiert.
Für Psychiologen. Und Neurologen. Und Antropologen.
Sie haben alle gelogen! ;-)
Ich kann aber mittlerweile erkennen, dass wenn
Progamme im Hintergrund laufen, dass ich in dem Moment nicht weiß,
was sich eigentlich abspielt.
Das merkt man.
Das sagen mir die Bücher bisher nicht.
Ist halt nur toter Baum! Der spricht seine eigene Sprache!
Und auch beim Z80 ist die Programmierung viel komlexer, weil er mehr
kann.
Kann sein!
Vielleicht könnte ich das Uhren-Prg. von Christiani in eine Eieruhr
umschreiben.
Na rumeiern kannst du doch schon ganz gut!
Sobald ich aber CPU-Emulator und dazu das Laufende Programm sehe,
würde ich es sehr wahrscheinlich verstehen können.
Oder auch nicht.
(Was ein Schwingkreis ist und andere Sachen weiß ich auch.)
Erstaunlich ist auch, dass der MPF-1 mit seinem "Monitor" noch läuft,
dass das E-PROM sich nicht (Radioaktiv) gelöscht hat.
Lieber fernsehmüde als radioaktiv!
Als ich die Uhr laufen sah, war ich begeistert. :-)) ;-)
Trommelwirbel
In dem Christiani-Lehrgang ist auch kein kompletter Befehlssatz.
Links-Zwo-Drei-Vier reicht doch!
Und der von Zaks, gibt für einen Befehl mehrere Op-Codes an.
Es ist wirklich nicht einfach beschrieben.
Oder einfach zu verstehen? Oder einfach sinnlos?
Ich suche gleich im Internet. Letztendlich sollte man auch ein
Monitor, am Besten mit RGB-Signal betrieben werden können.
Wie man das wohl im Jahr 2024 am Besten anstellt? Am Besten erstmal an die Ostsee fahren und Sand (SiO2) schürfen! Alles andere folgt daraus!
Nun ja, - vielleicht mache ich weiter mit dem 6502.
Die MSP430 haben einen schönen Maschinenbefehlssatz und Architektur; darauf zu lernen ist bestimmt kein Fehler. Es gibt freie SW mit Debugger und die günstigen T.I. Launchpad Bords haben minimal alles drauf, was man braucht. Der Debugger erlaubt das Beobachten des Programmablaufs und aller CPU Register. Das wäre halt mein Vorschlag. Da kann man gut damit lernen. Auch Assembler Programmieren ist unterstützt.
Zilog hat da noch die Z-Encore! uC. Da gibts auch ein freies IDE mit Debugger und einfaches Single Wire Debugging, den man sich selber bauen kann. Der Z8 hat auch eine schöne Architektur.
Auch gegen AVR ist wenig einzuwenden. Nur die uralten PICs würde ich mir nicht antun wollen. Wenngleich auch die neueren in der Hinsicht wesentlich günstiger sind. Der F6014 z.B. ist noch ziemlich freundlich und man kann viel damit machen. Auch Microchip hat da freie SW.
Arduino ist auch sehr brauchbar. Man kann ja auch dort auf HW Ebene operieren und muß nicht alles unbedingt mit fertigen Libs machen. Aber da gibt es keinen Debugger.
Auch mit dem 8051 kann man sich gründlich austoben. Keil hat einen begrenzten Compiler dafür. Man kann auch von Silicon Labs einen bekommen. Beim Keil kann man ja auch ohne HW Simulieren. Da brauchst nicht einmal eine Bord. Der Keil uV2 ist da noch am Einfachsten. Wenig Overhead. Bare Metal.
Möglichkeiten, derer, gibt es also sicherlich genug. Mache es Dir nicht unnötig zu kompliziert. Vermeide die lähmende "Analysis-Paralysis". Mach einfach.
In dem Christiani-Lehrgang ist auch kein kompletter Befehlssatz.
Das brauchst Du fuer den Anfang nicht: Ich hatte Dir das Programmiermodell der Z80 gezeigt (siehe Beitrag "Re: Einfache CPU, einfacher Rechner, nur zum Lernen, Erfahrung?"). Die Arbeit wird mit dem Akku gemacht, die anderen Register sind als Hilfsspeicher zu sehen (LD A, H kopiert den Inhalt von A nach H).
Und der von Zaks, gibt für einen Befehl mehrere Op-Codes an.
Es ist wirklich nicht einfach beschrieben.
Wenn Du eine Befehl (z.B. ADD, Abb. 4.7) ausfuehren willst, musst Du natuerlich auch schreiben, was Du addieren kannst: Addiere A, B, C, D, E, H oder L zu dem Akku, das Ergebnis ist im Akku (die Z80 ist sehr primitiv).
Oder einfach eine Konstante (#immediate). Besonders fuer Hochsprachen (Pascal, Fortran, Basic) sind die indirekte Zugriffe (d.h. Du addierst das Byte, das Du im Speicher findest wo der Inhalt des Registers HL zeigt). Die Zugriffe mit IX und IY sind ebenso indiziert.
D.h. es gibt fuer einen Befehl (ADD) 11 verschiedene OPCode, je nachdem, welche die Quelle (was addiert werden soll) ist.
Ich kann aber mittlerweile erkennen, dass wenn
Progamme im Hintergrund laufen, dass ich in dem Moment nicht weiß,
was sich eigentlich abspielt. Das sagen mir die Bücher bisher nicht.
Und auch beim Z80 ist die Programmierung viel komlexer, weil er mehr
kann.
Das kann ich so nicht stehen lassen: Z.B. ADD A,(HL) hat ein schoenes Bild, erklaert den Datenfluss und das Ergebnis.
Und der von Zaks, gibt für einen Befehl mehrere Op-Codes an.
Stichwort: Adressierungsarten.
Ja, ok. das verstehe ich.
Aber da sind oft viel zu viele Hexzeichen, zB. CALL B0
und bei ADD A, B da steht auch B0.
(Nun ja, die andereren gehören zum Beispiel.)
Ich verstehe einfach fast nichts vom Befehlssatz.
rhf
Hallo Roland und alle,
jetzt hab' ich den Zaks nochmal in die Hände genommen.
Ich hatte schon allerhand Zeugs geschrieben, doch so lernt man
sich kurz zu fassen. Ich war aus der Seite ausgestiegen,
um ein Wort in Wikipedia zu suchen, auf einmal war alles weg.
In Zukunft passiert mir das nicht mehr.
... und schon habe ich wieder jede Menge geschrieben.
Jede Menge Tabellen die ich nicht verstehe,
bin im Buch weiter nach vorne gegangen, (will nicht zuviel schreiben).
Da stand zu Exponent und Mantisse,
schrieb man im Buch(bei Gleitkommazahlen, für das Vorzeichen "S");
ich habs nur erraten. Also "nichts","+" oder "-".
Dann steht über BITS, MSD; was heist das?
Ja, für die PIO muss ich das Buch Nr. C201 besorgen.
Hier gibt es nur 6 Flags.
[(Bei den 64-Bit-Prozessoren hat man schon ein 32-Bit-Flagregister.)
Das war nur nebenbei.]
Es erscheint mir alles viel zu viel, aber ich habe den MPF-1 nun mal.
Nur mit LEDs u. Arduino o.ä. anfangen ist gar nicht so schlecht.
Aber bitte nur in Maschinensprache, bzw. Assembler.
Jetzt guck ich mal nach, ob es noch Programme und Bücher
für den Junior-Computer(6502), gibt es da noch was?
Von dem fehlt die Speicherkarte und ebenfalls eine passende Peripherie.
Ich suche mal weiter im Internet.
LG. Enk
Und der von Zaks, gibt für einen Befehl mehrere Op-Codes an.
Stichwort: Adressierungsarten.
Ja, ok. das verstehe ich.
Aber da sind oft viel zu viele Hexzeichen, zB. CALL B0
und bei ADD A, B da steht auch B0.
(Nun ja, die andereren gehören zum Beispiel.)
Ich verstehe einfach fast nichts vom Befehlssatz.
Dann ist es so. Dann wird Dir der Junior auch nicht helfen, weil die Probleme und Nomenklatur identisch ist (OK, Stack und Zero-page).
In dem Christiani-Lehrgang ist auch kein kompletter Befehlssatz.
Das brauchst Du fuer den Anfang nicht: Ich hatte Dir das
Programmiermodell der Z80 gezeigt (siehe
Beitrag "Re: Einfache CPU, einfacher Rechner, nur zum Lernen,
Erfahrung?"). Die Arbeit wird
mit dem Akku gemacht, die anderen Register sind als Hilfsspeicher zu
sehen (LD A, H kopiert den Inhalt von A nach H).
Und der von Zaks, gibt für einen Befehl mehrere Op-Codes an.
Es ist wirklich nicht einfach beschrieben.
Wenn Du eine Befehl (z.B. ADD, Abb. 4.7) ausfuehren willst, musst Du
natuerlich auch schreiben, was Du addieren kannst: Addiere A, B, C, D,
E, H oder L zu dem Akku, das Ergebnis ist im Akku (die Z80 ist sehr
primitiv).
Oder einfach eine Konstante (#immediate). Besonders fuer Hochsprachen
(Pascal, Fortran, Basic) sind die indirekte Zugriffe (d.h. Du addierst
das Byte, das Du im Speicher findest wo der Inhalt des Registers HL
zeigt). Die Zugriffe mit IX und IY sind ebenso indiziert.
D.h. es gibt fuer einen Befehl (ADD) 11 verschiedene OPCode, je nachdem,
welche die Quelle (was addiert werden soll) ist.
Ich kann aber mittlerweile erkennen, dass wenn
Progamme im Hintergrund laufen, dass ich in dem Moment nicht weiß,
was sich eigentlich abspielt. Das sagen mir die Bücher bisher nicht.
Und auch beim Z80 ist die Programmierung viel komlexer, weil er mehr
kann.
Das kann ich so nicht stehen lassen: Z.B. ADD A,(HL) hat ein schoenes
Bild, erklaert den Datenfluss und das Ergebnis.
Deine Beiträge kommen bei mir gut an.
Dein genanntes Beispiel, das Progrämmle,
das, hatte ich vor, noch mal zu lesen, was ich nur überflog.
Das nächste mal, wenn ich soetwas lese,
schreibe ich Deinen Namen, zB.:
"Thomas W. schrieb im Beitrag #7758585:" und Datum u. Zeitpunkt auf.
Das Manual vom MPF-1 habe ich nicht.
LG. Enk
Natuerlich hat der Zaks auch ein Buch ueber die 6502 geschrieben,
"Programmieren des 6502".
Die Junior-Platine ist stand-alone, Speicherkarten braucht man nicht.
Ich verabschiede von diesem Thread (mir fehlt das Ziel und die
Mitarbeit) und wuensche Dir alles Gute.
Gruesse
Ach, das ist aber schade, trotzdem ein ;-) :-)
Das Buch vom Junior, spricht mich schon sehr an.
Und ich bin auch nicht ganz ohne Erfahrung.
Morgen will ich versuchen, das Buch zu bestellen.
Das Buch sieht gut aus, und erscheint mir besser lesbar.
Doch auch das ist sehr viel Lesestoff.
Allerdings, so denke ich, dass er noch Speicherbausteine braucht.
Denn auf anderen Bildern sah ich ihn, mit einer doppelten Platine;
ich habe an ihn nur mit einer Platine. Sicherlich gibt es heute
auch schnellere Lade-Möglichkeiten. Natürlich kann das nicht schneller sein, als der Computer selbst ist - oder doch - wenn nur die Speicherbausteine geladen werden, kann es schneller gehen.
Nur der Computer selbst ist nicht schneller.
Ich hoffe, das ich den anderen hier im Thread nicht lästig gewirkt habe.
Wenn es lästig erscheint, ist es nicht so gemeint.
Danke für die Mitbeteiligung,
für heute erst mal gute Nacht,
LG. Enk Günter K.
Ich finde, es würde auch nichts dagegen sprechen, sich irgend ein Modul mit AVR-uC für ein paar Euro zu holen. Da kann Günter dann problemlos in Assembler programmieren. ESP ist schon deutlich zu komplex, alleine durch das ganze Boot-Procedere beim Start, und der Tensilica Befehlssatz wird ja auch nicht gerade an die große Glocke gehängt (obwohl man nach ein wenig suchen die kompletten technical references findet).
Z80 ist halt wirklich seehr einfach, sehr gut dokumentiert (siehe z.B. das von Dir verlinkte DB).
Aber AVRs habe ich auch schon from scratch in Assembler hochgezogen. Ist ähnlich einfach wie beim Z80. Die einfacheren ARM-Strukturen (z.b. M3) gehen auch noch ganz gut from scratch. Da ist halt der Befehlssatz a bissle komplexer durch die ganzen verschiedenen Befehlssätze (thumb etc).
Wenn Günter Elektriker ist, dann wird er ja wenigstens die logischen Grundstrukturen (Gatter, Flip Flops, Zähler etc.) schon man in der Ausbildung kennen gelernt haben, denke ich.
Günters Idee, das ominöse Uhrenprogramm zu disassemblieren und zu verstehen, halte ich eher für eine blöde Idee, es sei denn, der Weg ist das Ziel. <SCNR>
Ich denke, die geringen Englischkenntnisse von Günter könnten ein größeres Problem sein.
Günter soll doch bitte mal mitteilen, wie er denn jetzt starten wird, dann könnte man auch sagen, ob das eher eine gute oder schlechte Idee ist. Zu den von Günter beschriebenen Lernsystemen (MicroProfessor etc.) kann ich nix sagen. Mein erstes Z80-System habe ich mit Hilfe der Zilog-Doku (die damals gar nicht so leicht zu bekommen war als Schüler), dem TI Logik Datenbuch und dem Klassiker von Rolf Dieter Klein entwickelt... uuups, ich schweife ab...
Also Günter: was sind denn aktuell Deine Pläne?
ciao
Marci
P.S.: natürlich kann man mit einem uC-System eine relativ genaue Uhr basteln, wenn man gut programmiert (Ablaufpfade beachten) und Takte zählt. Denn normalerweise kommt der Takt ja von einem Quarz. Das reicht doch zum experimentieren.
Hallo Marci W.
Euer Interesse freut mich sehr.
Logische Bausteine der Elektronik,
gab es in der Ausbildung noch nicht.
Das waren noch die 60er Jahre.
Die Spannung war noch auf 220 im Dreieck.
Oft mit kassischer Nullung VDE 0100 Ü.
Aber Schalter sind ja auch logisch,
(ebenso wie bei Konrad Zuse)
trotzdem ließ ich mich danach auf
Abendschule darin ausbilden, bekam
sehr gute Zertifikate, die ich noch habe.
Das ist alles sehr, sehr lange her.
Viele meiner Kollegen sind schon gestorben.
Morgen versuche ich etwas über den Junior-Computer zu bekommen.
Denn den habe ich auch noch vom Speicher des Hauses geholt.
Arduinos, habe ich auch. Warum ich das nicht kapiere,
weiß ich auch nicht. Um es aber wirklich zu verstehen,
muss ich ins Eingemachte also den Prozessor selbst, auch beim Arduino.
Den gibt es in den Geschmacksrichtungen Z80, 6502, 68000/08/20, 8080, 8088 und HD64180. Prinzipiell könnte man sich aber auch Karten für 8032, 6800/9, 8086, Z8000 oder NS320xx herstellen.
Ich kann aber mittlerweile erkennen, dass wenn Progamme
im Hintergrund laufen, dass ich in dem Moment nicht weiß,
was sich eigentlich abspielt. Das sagen mir die Bücher
bisher nicht.
Hmm.
Also... ich bin jetzt 55 und nehme seit zwei Jahren
Klavierunterricht. Natürlich hat mich gleich interessiert,
ob es bekannte, charakteristische Unterschiede zwischen
Kindern und Erwachsenen als Instrumentalschülern gibt.
Was ich aus Büchern und einschlägigen Foren zusammengetragen
habe, lässt sich ungefähr so zusammenfassen: "Erwachsene
Instrumentalschüler haben potenziell den Vorteil, dass sie
zeitweilige Durststrecken kraft ihrer Lebenserfahrung besser
überwinden können. Häufig wird das aber geradezu ins Gegenteil
verkehrt, weil Erwachsene in der Regel zielorientierter sind
und fast immer zu schnell zu viel wollen und sich daher von
den Mühen des Übens und dem trotzdem langsamen Fortschritt
abschrecken lassen.
Kinder leben viel mehr im Augenblick; wenn ihnen die Tätigkeit
an sich Spaß macht, haben sie kein Problem damit, denselben
Ablauf hunderte Male zu wiederholen, weil sie sich am konkreten
Tun und am Lernfortschritt erfreuen, aber nicht dauern reflek-
tieren, wie weit das große Ziel noch entfernt ist."
Du erkennst Dich enventuell wieder...?!
Und auch beim Z80 ist die Programmierung viel komlexer,
weil er mehr kann.
Komplexer -- verglichen womit?
In dem Christiani-Lehrgang ist auch kein kompletter
Befehlssatz. Und der von Zaks, gibt für einen Befehl
mehrere Op-Codes an.
Quark.
Es ist wirklich nicht einfach beschrieben.
Doch.
Es ist -- wie so oft -- zum Teil ein rein sprachliches Problem.
"...Wörter [sind] Abkürzungen für alte Denkvorgänge..."
(Tucholsky)
Wenn man über den Aufbau des Prozessors redet, würde ich
den Ausdruck "Befehl" vollkommen vermeiden.
Statt dessen gibt es die"Op-Codes"; sie werden in Form von
Zahlen (häufig Hex-Zahlen, aber auch oktal oder binär)
niedergeschrieben und repräsentieren eindeutig eine bestimmte
Verarbeitungsoperation im Prozessor. (Auch mögliche Präfix-
Bytes durchbrechen die Eindeutigkeit nur scheinbar.)
Außerdem gibt es "Mnemonics"; das sind kurze Buchstabenfolgen
(i.d.r. Abkürzungen englischer Worte), die einen Hinweis auf
den Sinn, den Inhalt des/der Op-Code(s) geben.
Die Mnemonic "LD" (für "load") ist beispielsweise ein Sammel-
becken für Dutzende unterschiedliche OpCodes. Wenn mich mein
Gedächtnis nicht verlassen hat, dann führt "LD A,n" zum
OpCode 0x3E, "LD A,(nnnn)" entspricht 0x3A, und "LD A,(HL)"
ergibt (...Mist. Jetzt muss ich doch nachschlagen...) 0x7E.
Unterschiedliche OpCodes -- unterschiedliche intere Wirkung --
unterschiedliche Operanden und Adressierungsarten -- aber
identische Mnemonic "LD".
Von "Befehlen" würde ich nur sprechen, wenn über den Aufbau
von Programmen diskutiert wird und der kleinste Bestandteil
eines solchen gemeint ist. ("...der letzte Befehl vor dem
relativen Sprung...").
Auch wenn Assembler praktisch 1:1 in Maschinensprache
übersetzt wird, liegen Welten dazwischen.
Für das Verständnis des angehenden Programmierers nicht.
(Für das Erstellen nützlicher Programme allerdings sehr
wohl.)
Auch eben weil das Programm "Assembler" viele nützliche
bzw. notwendige Hilfskonstruktionen bereitstellt, sei
es zur Definition von Variablen oder diverse
Assemblerdirektiven!
Variablentabelle kann man notfalls von Hand führen.
Der wichtigste Fortschritt beim Assembler ist m.E. das
selbsttätige Bestimmen der (absoluten) Speicheradressen
für die Befehle des Programmes: Versuche mal, im Hex-Code
irgendwo drei Befehle einzufügen, wenn Du nicht vorher
in weiser Voraussicht ein paar NOPs eingefügt hattest...
Jede Menge Tabellen die ich nicht verstehe,
bin im Buch weiter nach vorne gegangen, (will nicht zuviel schreiben).
Da stand zu Exponent und Mantisse,
schrieb man im Buch(bei Gleitkommazahlen, für das Vorzeichen "S");
ich habs nur erraten. Also "nichts","+" oder "-".
Dann steht über BITS, MSD; was heist das?
Das erste, was man vielleicht verstehen muss, ist, dass man nicht alles verstehen muss.
Man muss mit kleinen Erfolgen anfangen. Kannst du das Gerät schon einschalten und kennst du schon einige Tasten, die man drücken muss?
Wie gesagt Papier, Bleistift, Radiergummi besorgen und dann Kapitel für
Kapitel im Z80-Buch durcharbeiten.
So habe ich auch angefangen zu assemblieren. Erst die Mnemoniks aufschreiben, dann die Befehle in Hex dahinter, dann die Adressen davor und dann die Sprünge abgezählt und eingetragen.
Und nach jeder Teilfunktion 10 Bytes freigelassen. Dann muß man bei Fehlern nicht alles neu schreiben, sondern fügt einen Sprung zur korrigierten Funktion ein. Die fehlerhafte wird ausge-NOPt. Dann muß man auch den EPROM nicht jedesmal löschen.
Das ist aber schon 40 Jahre her.
an muss mit kleinen Erfolgen anfangen. Kannst du das Gerät schon
einschalten und kennst du schon einige Tasten, die man drücken muss?
Ich glaube so weit ist er noch nicht.
Er befindet sich noch in der Geräteauswahlphase.
Danach kommt die Dokumentationsbeschaffungsphase.
Anfang 2026 wird dann ein erster Einschaltversuch unternommen.
Zu viel gleichzeitig. Du springst wild hin und her zwischen den Fachthemen.
Der Umgang mit der PIO hilft dir nicht, die CPU zu verstehen. Andererseits will man wenigstens eine LED ansteuern, damit es etwas zu sehen gibt. Bei Mikrocontrollern wie den AVR ist das Ansteuern von LEDs ganz einfach, weil es CPU Register gibt, deren Bits 1:1 mit den I/O Pins verbunden sind.
Das Springen zwischen Büchern hilft nicht, dem Lehrpfad eines Autors zu folgen.
CALL B0
ruft die Prozedur auf, die an Adresse B0 im Programmspeicher beginnt.
Eine simplere überschaubarere Hardware kann es nicht geben und du hast dort direkt einen fließenden Übergang zu größeren Arduino Modulen, die ebenfalls mit AVR bestückt sind und genau so programmiert werden.
Das Tutorial zeigt Schritt für Schritt, wie man mit dem Datenblatt und der Doku vom Befehlssatz voran kommt. Am Ende hat man ein kleines Spiel, das man den Enkeln schenken kann.
Wieso? Bei Intels 8080 Mnemotechnik gab es pro Befehl exakt einen Opcode, aber Zilog fasste z.B, alle Varianten der Addition unter ADD zusammen. Weshalb ADD diverse Opcodes hat.
Jede Menge Tabellen die ich nicht verstehe, bin im Buch
weiter nach vorne gegangen, (will nicht zuviel schreiben).
Da stand zu Exponent und Mantisse, [...]
???
Was machst Du denn? Hast Du in der 1. Klasse auch gleich
schon das Lösen partieller Differentialgleichungen gelernt,
oder vielleicht doch erstmal nur das Einmaleins?
schrieb man im Buch(bei Gleitkommazahlen, für das
Vorzeichen "S"); ich habs nur erraten. Also "nichts",
"+" oder "-".
Dann steht über BITS, MSD; was heist das?
Lass' doch um Himmels Willen erstmal den ganzen Krempel
weg, den Du für den Anfang nicht brauchst.
Es erscheint mir alles viel zu viel,
Ja klar -- weil Du planlos von Problem zu Problem springst.
Ich habe vor über 40 Jahren mit einem geliehenen LC80
angefangen, und da ich erstmal kein Programmierhandbuch
dazu hatte, sondern nur die Bedingungsanleitung mit ein
paar Beispielprogrammen, war ich gezwungen, diese Beispiele
zu analysieren und die dort verwendeten Befehle (OpCodes
und Mnemonic) zu verstehen. Das waren wohl ungefähr ein
oder zwei Dutzend; damit musste ich auskommen.
"JMP" (0xC3) gehörte dazu, "JR" (0x18) auch, ebenso
"CALL" (0xCD) und "RET" (0xC9) -- wobei Unterprogrammtechnik
beim allerersten Anfang schon verzichtbarer Luxus ist.
Von "JC" und "JZ" weiss ich den OpCode nicht mehr, aber
bedingte Sprünge will man auch ganz zu Anfang haben --
kann man auch mit relativen Sprüngen machen, das vereinfacht
die Adressrechnerei bei Programmänderungen.
Was braucht man noch? 0x3E und 0x3A sowie die Gegenstücke
(deren OpCodes ich vergessen habe) sowie "INC A" und "DEC A".
"IN" und "OUT" wird man noch haben wollen; vielleicht auch
noch AND und ADD.
Das sind alles in allem vielleicht zwei Dutzend verschiedene
OpCodes -- und damit kann man funktionierende Programme
schreiben!
Ja -- die Programme sind Musterbilder an Umständlichkeit.
Richtig! -- Aber das ist ganz am Anfang, wo es darum geht,
das Prinzip zu begreifen, erstmal SCHEISSEGAL.
Es gibt ICs die
können selber das Nibbel-Bitmuster in 7-Segment umwandeln.
7-Segment Dekoder (SN74LS47) habe ich noch nie an CPUs oder µCs benutzen müssen. Das ist doch ne schöne Aufgabe, die sich bequem in Software erledigen läßt, Stichwort Tabellenzugriff. Der 8051 hat dafür einen eigenen Befehl (MOVC A, @A+DPTR).
So habe ich auch angefangen zu assemblieren. Erst die
Mnemoniks aufschreiben, dann die Befehle in Hex dahinter,
dann die Adressen davor und dann die Sprünge abgezählt
und eingetragen.
Und nach jeder Teilfunktion 10 Bytes freigelassen. Dann
muß man bei Fehlern nicht alles neu schreiben, sondern
fügt einen Sprung zur korrigierten Funktion ein. Die
fehlerhafte wird ausge-NOPt. Dann muß man auch den EPROM
nicht jedesmal löschen.
Kommt mir teilweise sehr vertraut vor... :)
Faszinierend fand ich, dass ich bei der Zettel-und-Stift-
Entwicklung DRASTISCH weniger Fehler mache als beim
sofortigen Eintippen in den Computer.
Das ist aber schon 40 Jahre her.
Das klingt wie eine Kritik...?!
Klavierschüler fangen auch nicht im ersten Jahr mit Rachmaninoff
an, sondern mit Übungen im Fünftonraum...
Hatte ich wenige Zeilen weiter unten erklärt und begründet:
Das Wort "Befehl" hat keine ausreichende Unterscheidungskraft.
"OpCode" ist relativ eindeutig, und "Mnemonic" auch.
Ob "LD A,B" und "LD C,D" derselbe Befehl ist oder nicht, ist
Definitionssache, über die ich keine Lust habe zu streiten.
Die Mnemonic ist eindeutig dieselbe (nämlich "LD"), die OpCodes
sind eindeutig verschieden.
Ich will niemanden beleidigen, aber dieser Gedanke geht mir seit einer Woche nicht aus dem Kopf:
Hat man mit 80 Jahren noch genug Lebenszeit übrig, die gesamte historische Entwicklung der Mikrocomputer nachzuvollziehen, um am Ende ungefähr den aktuellen Stand zu erreichen?
Hat hier eigentlich schon jemand den NDR Kleincomputer erwähnt?
...
Den gibt es in den Geschmacksrichtungen
Z80,
6502,
68000/08/20,
8080,
8088,
HD64180,
8032,
6800/9,
8086,
Z8000,
NS320xx
Bring ihn nicht auf falsche Gedanken, du bist gerade dabei die Büchse der Pandora zu öffnen
Lieber Günter,
Du hast den MPF-1.
Du hast damit bereits erfolgreich ein Uhrenprogramm abgetippt und gestartet.
Vor einigen Tagen hat dir "soul eye" alle Links zu den Manuals hier angegeben, mit dem deutschsprachigen Christiani Lehrgang.
Beitrag "Re: Einfache CPU, einfacher Rechner, nur zum Lernen, Erfahrung?"
Auf was wartest du?
Damit kannst du loslegen, der MPF-1 ist ein Super Lehrsystem.
Bleib erstmal dabei.
Vermischung mit anderen uP, anderen Assemblersprachen und komplizierteren Peripherie-ideen bringt dich momentan nicht weiter.
Mit dem vorhandenen System bist du gut aufgdstellt und hast Tage oder Wochen gute Lehrarbeit vor dir.
Hat man mit 80 Jahren noch genug Lebenszeit übrig, die gesamte
historische Entwicklung der Mikrocomputer nachzuvollziehen, um am Ende
ungefähr den aktuellen Stand zu erreichen?
Man könnte es ja in Relation zu einem Studium der Technische Informatik setzen, welches mit 4.5 a abgefrühstückt sein sollte. Die durchzschnittliche Restlaufzeit für 80 jährigen beschwanzten Deutschen liegt bei 7,88 a (Sterbetafel 2023). Passt also.
Arduinos, habe ich auch. Warum ich das nicht kapiere,
weiß ich auch nicht.
Ich schon . . .
Um es aber wirklich zu verstehen,
muss ich ins Eingemachte also den Prozessor selbst, auch beim Arduino.
Nö, im Gegenteil. Man fängt "ganz oben" an, auf der Arduino-Ebene mit seinen Funktionen. digitalWrite, digitalRead. Damit kannst du alles machen, was du in deiner Situation brauchst und vielleicht auch noch verstehen kannst. OK, ein paar Grundkonstrukte von C braucht es auch, allen voran if(). Damit kannst du dein Uhr bauen und noch viel mehr.
Hat man mit 80 Jahren noch genug Lebenszeit übrig, die gesamte
historische Entwicklung der Mikrocomputer nachzuvollziehen, um am Ende
ungefähr den aktuellen Stand zu erreichen?
Nö, im Gegenteil. Man fängt "ganz oben" an, auf der Arduino-Ebene mit
seinen Funktionen. digitalWrite, digitalRead. Damit kannst du alles
machen, was du in deiner Situation brauchst und vielleicht auch noch
verstehen kannst. OK, ein paar Grundkonstrukte von C braucht es auch,
allen voran if(). Damit kannst du dein Uhr bauen und noch viel mehr.
Naja...
Man kann auch in der Arduinowelt direkt mit ASM starten. Siehe Anhang.
Vorgesehen ist das allerdings nicht, wird aber unterstützt.
Vorgesehen ist C++ für Anwendungen. Wird am breitesten unterstützt.
Auch C geht.
digitalWrite, digitalRead sind z.B. in C geschrieben
Die meisten Libs sind in C++ abgefasst.
Trotzdem ist ASM auf einem AVR keine schlechte Idee die Grundlagen von
Rechnerarchitekturen zu verstehen. Einfach genug ist es dafür.
Stimmt. Dann nimmt man aber nicht die Arduino-IDE sondern das olle Atmelstudio oder das neue Microchip Studio, denn dort ist auch der Simulator schon mit drin. Einfacher geht es kaum. Aber für den OP vermutlich zu viel oder zu "neu", er hat ja eine Vorliebe für CPUs der 1970er . . .
Dann nimmt man aber nicht die Arduino-IDE sondern das olle Atmelstudio
oder das neue Microchip Studio, denn dort ist auch der Simulator schon
mit drin. Einfacher geht es kaum
Eben deswegen habe ich mein Assembler Tutorial ein zweites nal empfohlen.
Wie soll ich denn diese fixe Idee wieder loswerden...?
An solchen Rechnerlein kann man üben, wie man ROM-lose Rechner startet. Startprogramm per Klaviatur ins RAM schreiben und dann Reset.
Die 1802 CPU hatte einen eigens für sowas gebauten Load-Modus. Ich hatte das mal genutzt, um auf ein selbst gebautes ROM-loses 1802 Teil über eine serielle Schnittstelle das Programm vor dem Reset ins RAM schreiben zu können.
Wie soll ich denn diese fixe Idee wieder loswerden...?
An solchen Rechnerlein kann man üben, wie man ROM-lose
Rechner startet. Startprogramm per Klaviatur ins RAM
schreiben und dann Reset.
Genau.
Muss eigentlich auch mit einem Z80 gehen: CPU per
Busrequest in Schockstarre versetzen, SRAM beschreiben
und dann los.
SRAM könnte gern batteriegestützt sein, damit man nicht
jedes Mal von vorn anfängt; vielleicht kann man auch
parallele EEPROMs oder FRAMs dranklöppeln...
Muss eigentlich auch mit einem Z80 gehen: CPU per
Busrequest in Schockstarre versetzen, SRAM beschreiben
und dann los.
Irgendwo oben findet sich ein Link auf ein Platinchen mit einem PIC Mikrocontroller zusätzlich zum eigentlichen Mikroprozessor. Der wird vmtl genau das machen. Ist etwas unzeitgemäss.
Meine 1802 Lösung verwendete dazu den LOAD Modus in Verbindung mit einem per Pins statt Register konfigurierbaren AY-3-1015 als Async-Schnittstelle. Mehr war nicht nötig. Und natürlich CD4000 als Logikbausteine, keine systemfremden TTLs.
Muss eigentlich auch mit einem Z80 gehen: CPU per
Busrequest in Schockstarre versetzen, SRAM beschreiben
und dann los.
Irgendwo oben findet sich ein Link auf ein Platinchen
mit einem PIC Mikrocontroller zusätzlich zum eigentlichen
Mikroprozessor. Der wird vmtl genau das machen. Ist etwas
unzeitgemäss.
Ja.
Der PIC wird wieder einen PC als Entwicklungssystem brauchen,
und das finde ich nicht schön. Kommt mir immer so vor, als
verwende man ein CNC-Bearbeitungszentrum, um eine Zaunlatte
gerade abzuschneiden...
Wer aus Spaß an der Freude handwerkelt, sollte das auch mit
einer ordinären Säge können...
Meine 1802 Lösung verwendete dazu den LOAD Modus in
Verbindung mit einem per Pins statt Register
konfigurierbaren AY-3-1015 als Async-Schnittstelle. Mehr
war nicht nötig. Und natürlich CD4000 als Logikbausteine,
keine systemfremden TTLs.
Setzt halt auch eine serielle Datenquelle für den
Boot-Code voraus.
Setzt halt auch eine serielle Datenquelle für den
Boot-Code voraus.
Ja. Die Zeit, als ich vor meinem AIM65 sass und direkt darauf entwickelte, mit Kassettenrecorder als Massenspeicher, ist glücklicherweise vorbei. Schon damals war etwas wie der KIM-1 zu umständlich.
Wenn ich also schon aus Jux mit Urschleim bastele, dann nicht zu extrem.
Setzt halt auch eine serielle Datenquelle für den
Boot-Code voraus.
Ja. Die Zeit, als ich vor meinem AIM65 sass und direkt darauf
entwickelte, mit Kassettenrecorder als Massenspeicher, ist
glücklicherweise vorbei. Schon damals war etwas wie der KIM-1
zu umständlich.
Wenn ich also schon aus Jux mit Urschleim bastele, dann nicht
zu extrem.
Nix dagegen; jeder, wie er mag.
Ich finde halt den Gedanken faszinierend, ein System zur
Verfügung zu haben, das ohne fremde SOFTWARE auskommt. Die
Hardware darf gern halbwegs zeitgemäß sein...
Kassettenrecorder als Massenspeicher würde ich mir mangels
Kassetten und mangels Recorder auch nicht mehr antun wollen...
Muss eigentlich auch mit einem Z80 gehen: CPU per
Busrequest in Schockstarre versetzen, SRAM beschreiben
und dann los.
SRAM könnte gern batteriegestützt sein, damit man nicht
jedes Mal von vorn anfängt; vielleicht kann man auch
parallele EEPROMs oder FRAMs dranklöppeln...
Hallo Hippelhaxe,
Danke für Deinen Beitrag. Danke für die Tipps.
welche Bauteile kriegt man heute noch dafür?
Gibt es noch EEPROMs oder FRAMs zu kaufen?
Gibt es Tricks um die heutige Schnelligkeit in etwa zu benutzen.
Du hast Dir ja schon die richtigen Gedanken dazu gemacht,
das finde ich sehr gut.
welche Bauteile kriegt man heute noch dafür?
Gibt es noch EEPROMs oder FRAMs zu kaufen?
Gibt es Tricks um die heutige Schnelligkeit in etwa zu benutzen.
Du hast Dir ja schon die richtigen Gedanken dazu gemacht
Für dich sind das die falschen Gedanken, weil sie dich wieder auf den falschen Weg bringen (vom aktuellen Lernsystem ablenken).
EEPROM waren unbezahlbar teuer, als dein Lernsystem aktuell war, also praktisch nicht existent. FRAM wurden erst viel später erfunden, ich glaube um 2005 herum.
Auf die Z80 Architektur zu wechseln macht für dich im Moment nur dann Sinn, wenn sie zu einer erheblich simpleren Schaltung führt, die dich weniger vom Assembler ablenkt, als der aktuelle Lerncomputer. Das sehe ich hier nicht gegeben.
Schau dir Dieses Video an:
https://www.youtube.com/watch?v=kqGNVuqevkY&t
Etwas gewöhnungsbedürftig, aber die Beispiele zeigen wie es geht einen Emulator zu schreiben.
Damit kann man auch die Grundlagen (hoffe ich, ich kenn sie ja schon^^) einigermassen verstehen.
Und danach: machen, einfach machen.
Machen ist wie wollen, nur krasser.
Mal sehen wie lange es dauert, bis die Leute mit Helfersyndrom merken, daß sie mit einem verwirrten Menschen sprechen, der nie und nimmer was sinnvolles mehr zustande bringen wird, egal welche Tips man ihm gibt. Oder sie einfach nur von einem ganz guten Troll veralbert werden.
Mal sehen wie lange es dauert, bis die Leute mit Helfersyndrom
merken,
daß sie mit einem verwirrten Menschen sprechen, der nie und nimmer was
sinnvolles mehr zustande bringen wird, egal welche Tips man ihm gibt.
Oder sie einfach nur von einem ganz guten Troll veralbert werden.
Ob ein Mensch ein Gentleman ist, erkennt man an seinem Benehmen denjenigen Menschen gegenüber, von denen er keinen Nutzen hat.
Quelle: William Lyon Phelps
Vergiss den Satz, der MPF-1 ist ja ein Z80. Jetzt bin ich auch schon durcheinander vor lauter Architekturen.
Der Satz müsste mit "Auf eine andere Architektur zur zu wechseln ..." beginnen, dann wäre er passend
Alles was von dem MPF-1 weg führt, egal wie toll, sollte von jetzt an gemieden werden. Sonst dreht sich der Günter noch länger ihm Kreis, bis ihm so schwindelig ist, dass er umkippt.
Ob ein Mensch ein Gentleman ist, erkennt man an seinem Benehmen
denjenigen Menschen gegenüber, von denen er keinen Nutzen hat.
Quelle: William Lyon Phelps
Wahre Worte sind nicht schön.
Schöne Worte sind nicht wahr.
Nun, ja, das Buch zum 8086 war bzw. ist schon sehr Verheißungsvoll,
und es beginnt damit, ein Zeichen auf den Bildschirm zu bringen.
Leider habe ich nicht das Betriebsystem dazu;
Lustig! Ich nehme an es an es ist ein Scherz. :-))
Die Programme zu diesem Buch werden zwar geladen,
laufen aber nicht, weil das Windows-Betriebsystem zu hoch ist.
Vermutlich unter DOS. Das kann WINDOS 10 nicht mehr.
Das hier muss man doch nochmal aufspießen: Das ist ein eigenständiges, in Assembler (https://flatassembler.net) programmiertes System, das normalerweise auf Diskette geladen werden kann, weil der Code so sparsam ist.
Das heißt, das ist kein Windows Programm, und auch kein DOS Programm. Es ist ein eigenes OS. Für sowas gibt es u.a. hervorragende PC-Emulatoren (wie Bochs (https://bochs.sourceforge.io), oder (z.B.) im VM-Ware-Player läuft das auch ganz gut.
heute habe ich ein par Sachen eingekauft, mal sehen,
was ich damit machen kann. U.a.:
Ein Raspberry Pi Pico WH (C) 2022
FCC ID 2ABCB.PICOW
IC.20953.PICOW
In diesem Falle ist es kein PC.
Links oben ist eine
LED Ein Stück
darunter ist ein
BOOTSEL(Schalter) R'= Raspberry Pi
Leider kann ich nicht lesen was auf dem mittleren schwarzen R'Chip steht.
Unten rechts neben dem quadratischen R'Chip steht: DEBUG
Es hat einen Trapezförmigen USB-Anschluss.
Habe aber kein weiteres Dokument dazu.
(Meine Güte, was sind die Bauteile klein!)
Gibt es Programme oder Schaltungen, die man nicht debuggen muss?
LG Enk
Alles was von dem MPF-1 weg führt, egal wie toll, sollte von jetzt an
gemieden werden. Sonst dreht sich der Günter noch länger ihm Kreis, bis
ihm so schwindelig ist, dass er umkippt.
Auf Tipps genau zu diesem Punkt gehst du ja gar nicht ein.
Hallo Cyblord,
vieles, ist eben nicht so einfach, sonst würde ich nicht weiter fragen.
Mal sehen, was der neue µC Pico von Raspberry Pi bringt.
LG. Enk
Rbx schrieb im Beitrag #7759580:
Das heißt, das ist kein Windows Programm, und auch kein DOS Programm. ...
Günter K schrieb:
Vermutlich unter DOS. Das kann WINDOS 10 nicht mehr.
Das Buch fragt nach DOS, also werde ich kein anderes Betriebssystem nehmen.
Also, ich sehe wirklich den guten Rat,
aber in diesem Fall geht es ja um DOS, worüber dann das Assembler läuft.
Ich hatte mir sagen lassen, die DOSBOX funktioniert auch bei LINUX.
Probiert habe ich es noch nicht.
Selbstverständlich habe ich den MPF-1 nicht vergessen, und ich weiß,
dass es auch hier ein ganz anders Assembler ist.
Hier handelt es sich um den 8086. Eine Entwicklung die bis in unsere Zeit führt.
Und Falk, Dich spreche ich noch einmal extra an.
Hier in diesem Beispiel, ist ein Grund, warum ich an dieser Stelle
einen Rat für meinen Fall hier, nicht annehme; wobei ich nichts gegen das neue Betriebsystem sage. Und auch garnichts gegen Dich Rbx sage.
LG. Enk
Also, ich sehe wirklich den guten Rat,
aber in diesem Fall geht es ja um DOS, worüber dann das Assembler läuft.
Ich hatte mir sagen lassen, die DOSBOX funktioniert auch bei LINUX.
Probiert habe ich es noch nicht.
Selbstverständlich habe ich den MPF-1 nicht vergessen, und ich weiß,
dass es auch hier ein ganz anders Assembler ist.
Hier handelt es sich um den 8086. Eine Entwicklung die bis in unsere
Zeit führt.
Du entfernst dich mit jeden neuen Beitrag weiter von deinem Ziel.
Das wird so nix.
Zitat:
"Er lässt sich mit MicroPython, CircuitPython, C/C++ und Visual Studio Code programmieren" Also nichts mit Assembler obwohl das natürlich auch geht.
Ich hätte ja ein MFA System vorgeschlagen. Das ist ein System auf 8085 was in der Ausbildung bei den Elektronik Berufen in den 90er verwendet wurde. Der große Vorteil ist dass es didaktisch sehr gut aufgebaute Literatur auf Azubi Niveau gibt. Mit dem Bussignalgeber konnte man das Ding in Singlestep betreiben und jedem Byte zuschauen. Betrieben wurde das Sytem über die V24 Schnittstelle mit einem ganz normalen Terminal Programm. Der grosse Nachteil ist, dass die Systeme auf Ebay immer noch sehr teuer sind und sehr oft ziemlich verbastelt wurden. Ich hab mir mal vor Zeiten ein MFA System gebaut was CPU RAM ROM und V24 auf einer 100x100 Platine vereint. Da geht aber einiges an Lernefekt verloren.
Mal sehen wie lange es dauert, bis die Leute mit Helfersyndrom
merken,
daß sie mit einem verwirrten Menschen sprechen, der nie und nimmer was
sinnvolles mehr zustande bringen wird, egal welche Tips man ihm gibt.
Oder sie einfach nur von einem ganz guten Troll veralbert werden.
Überflüssig s. o. - !
Vorhin war es ein Beispiel warum ich einen Rat zu diesem Zweck nicht angenommen habe. Wobei dieser Rat ohne weiters weiters nützlich sein kann.
Enk.
Hallo Cyblord,
vieles, ist eben nicht so einfach, sonst würde ich nicht weiter fragen.
Mal sehen, was der neue µC Pico von Raspberry Pi bringt.
Bin ich hier auf dem richtigen Gleis?
LG. Enk
Aber das mit dem ASM freundlich war bitterer Sarkasmus.
oooh, wie soll ich das, - nur verstehen - ?
Du?
Wahrscheinlich garnicht.
Bis ich Dir erklärt habe warum ein 32bit dualcore RISC nur von autistischen Masochisten mit ASM programmiert wird, bist Du bereits dabei Infos zum Transputer zusammenzutragen, mit dem Du Dich unbedingt beschäftigen willst.
Und diese Endlosschleife dreht sich weiter und weiter und weiter.
Nur das Du niemals irgendeine CPU verstehen und programmieren wirst.
Weil Dein Fokus von CPU zu CPU zur nächsten Aufgabe, zum nächsten Teilproblem zur nächsten Architektur zum nächsten Projekt springt.
Unfähig mal lange genug zu verweilen um die Informationen korrekt zu verarbeiten die Dir gegeben werden.
Wir können uns endlos mit Deinem Aufmerksamkeitsdefizit beschäftigen, oder Dich ziehen lassen.
Ist ja egal was man sagt.
Du hast es vergessen so bald Dich das nächste triggert.
Wie eine Katze die einen Laserpointer jagt.
Transputer in Assembler, das hat was ;). Das ist was für Laberköppe ob der Geschwätzigkeit. Es geht, führt aber leicht zu Code, den man nur schreiben aber nicht mehr lesen kann. Da schreibt man lieber erst einen Compiler für.
Vergiß das alte Z80 Geraffel, dazu findest Du nur wenig für Einsteiger taugliches und auch wenig in deutsch.
Der Kieser Meder aus der DDR zum Z80 ist doch sehr theoretisch aufgebaut. Es ist also sehr schwer, mit dem Z80 zu basteln, da er ja nur eine CPU ist und haufenweise externe Beschaltung braucht:
https://www.amazon.de/Mikroprozessortechnik-Aufbau-Anwendung-Mikroprozessorsystems-U880/dp/B0029I3YOU
Die MCS51 lassen sich sehr bequem in Assembler programmieren. Z.B. haben sie schon 8Bit Multiplikation und Division, sowie Befehle für Daten- und Sprungtabellen.
Noch ohne PC lernen, entwickeln, programmieren, debuggen zu wollen ist aber nur was für extrem schmerzbefreite. Im Alter hat man für sowas keine Kraft mehr und erst recht nicht mehr die Zeit.
Mehrere Leute haben dir davon abgeraten. Der RP2040 ist für den Anfang viel zu komplex, zu neu, nicht für Assembler gedacht, und nicht auf deutsch dokumentiert.
Du verarscht uns doch.
Was soll dann das ganze Gerede von Assembler.
Das paßt hinten und vorne nicht zusammen.
Ihr seit zu befehlshörig. Der Kunde weiß oft nicht was er will, deshalb muss man "out of the box" denken und dem Kunden das für ihn Passende anbieten.
Ich gehe davon aus, dass Günther denkt, moderne Programmiersprachen sind zu kompliziert und Assembler wäre das einfachste. Wenn er den PiPico mit Micropython ausprobiert und erst mal sieht, wie einfach damit eine LED anzusteuern ist, ändert er seine Meinung vielleicht.
Super Wahl!
Den kennt dann wirklich keiner und Günther kann nach Herzenslust alles selber lernen und herausfinden.
Man sollte als blutiger Anfänger immer eine möglichst obskure und maximal komplizierte Wahl treffen damit man völlig unbeeinträchtigt von anderen lernen kann.
Hmmm...
Ich wenigen Worten:
Es kommt mir in einigen Belangen entgegen. z.B. die Mächtigkeit/Portabilität von C++ und die Vielfalt an einfach nutzbarer Hardware.
Tausende, wenn nicht gar zehntausende arbeiten Weltweit an Erweiterungen, in Form von Boarddefinitionen und Libraries. Nicht zu vergessen, die Hardware und Toolchainentwickler, auf dessen Schultern "wir Arduino" reiten dürfen.
Vor ca 10 Jahren bin ich durch Zufall darauf gestoßen, als ein Kollege eine kleine Ablaufsteuerung benötigte und ihm eine SPS zu teuer war.
Eine kurze Geschichte....
Ca mittags wurde mir ein "Starterkit" mit UNO, Käbelchen, Steckbrett, Relais usw. überreicht. War einmal ein Weihnachtsgeschenk für eins seiner Kinder, aber die konnten alle nix damit anfangen.
Nach ca. 1H war die Software auf dem PC, und die ersten Beispiele getestet.
2H später, war der Prototype fertig. Nix kompliziertes. Ein paar IO und etwas Zeitabhandlung.
Nie vorher hatte ich einen ATMega bewusst wahrgenommen.
Etwas C im Hintergrund, aber von C++ nur gehört.
Der schnelle Einstieg hat mich fasziniert.
Jetzt nach 10 Jahren, gibt es immer noch Herausforderungen. C++ verstehe ich nun einigermaßen. Meine Vorbildung in anderen OOP Sprachen hat geholfen.
Assembler kommt bei mir kaum vor. Manchmal möchte/muss ich sehen was der Compiler baut. Nur ganz selten fasse ich es selber an.
z.B. hier, eins der Experimente:
Arduino F. schrieb im Beitrag #7759191:
Man kann auch in der Arduinowelt direkt mit ASM starten. Siehe Anhang.
Vorgesehen ist das allerdings nicht, wird aber unterstützt.
Ich gehe davon aus, dass Günther denkt, moderne Programmiersprachen sind
zu kompliziert und Assembler wäre das einfachste. Wenn er den PiPico mit
Micropython ausprobiert und erst mal sieht, wie einfach damit eine LED
anzusteuern ist, ändert er seine Meinung vielleicht.
Hallo Christoph M., guten Tag alle zusammen,
Danke für die Antwort. - Das, wovon Du ausgehst ist richtig. Assembler (bzw. Maschinensprache) kann man noch nachvollziehen. Wenn ich mit Micropython
auch nachvollziehen kann, wie das die Maschine macht, wäre das ok.
Inzwischen, vermute ich stark, ich weiß es eben noch nicht, durch die Worte die ich darüber gelesen habe, dass Assembler und Assembler 2-erlei ist.
Einmal das Assembler-Programm das man schreibt,
zum anderen das Assembler-Programm, welches das Assembing durchführt.
Dazu habe ich noch nichts gelernt. So ein Programm habe ich noch nie gesehen. Im übertragenen Sinne ist es im Grunde genommen, die Maschinensprache die mich interessiert.
Aber ich habe nochmal hochgescrolt und gute Zeilen gelesen.
Darauf gehe ich noch ein.
Der 6502 ist der mir bisher sympatichste Prozessor. Nur der 8086 ist eben der, der der Zeit gefolgt ist. Dafür muss ich noch die DOSBOX installieren.
Nein, ich habe meine Meinung nie geändert,
weder im Satz, noch in den Abschnitten.
Nur der 8086 ist eben der, der der Zeit gefolgt ist.
Nicht wirklich.
Den kannst du eher mit einem kleinen Häuschen vergleichen, dass mit ein paar Balkonen erweitert wurde. Danach hat man eine Burg drumherum gebaut, die ständig mit weiteren Gebäuden, Erkern, Türmchen, Balkonen, Tunneln und Geheimgängen erweitert wird. Das Häuschen ist nur noch ein Zimmer innerhalb der Burg.
Was wir heute im PC stecken haben ist das exakte Gegenteil von durchschaubar. Aus gutem Grund gibt es keine Mikrocontroller auf Basis der 8086 Architektur. Der 80186 ging ein bisschen in die Richtung, ist aber ebenfalls Geschichte.
Einmal das Assembler-Programm das man schreibt,...
Ersetze in diesem Zusammenhang mal Assembler-Programm durch "Assembler-Quelltext meines Programms".
...zum anderen das Assembler-Programm, welches das Assembing durchführt.
Und in diesem Zusammenhang durch "Übersetzungsprogramm, das das den Assembler-Quelltext meines Programms in den Binärcode meines Mikroprozessors übersetzt".
Der 6502 ist der mir bisher sympatichste Prozessor.
Darum geht es aber nicht. Wenn Du Dich mit Assembler beschäftigen willst, dann nützt Dir nur eine Architektur was, die auch weit verbreitet ist. Hier im Forum gibt es einen Großteil, der sich mit AVR auskennt und auch bereit ist, mal über Deinen Code zu schauen.
AVR wäre also mein ganz heißer Tipp oder Dein bisheriges Assemblergerede war nur eine ganz große Luftnummer.
8051, MSP430, PIC Assembler kennen auch noch einige, aber da wird die Luft schon dünner.
Inzwischen, vermute ich stark, ich weiß es eben noch
nicht, durch die Worte die ich darüber gelesen habe,
dass Assembler und Assembler 2-erlei ist.
Einmal das Assembler-Programm das man schreibt,
Das ist der sog. "Quelltext"; beim Programmieren in
Assemblersprache eben ein "Assembler-Quelltext".
zum anderen das Assembler-Programm, welches das
Assembing durchführt.
Das ist im Slang "der Assembler".
Dazu habe ich noch nichts gelernt. So ein Programm
habe ich noch nie gesehen. Im übertragenen Sinne ist
es im Grunde genommen, die Maschinensprache die mich
interessiert.
Und warum programmierst Du dann nicht einfach in
"Maschinensprache" (=Hex-Code)?
Wenn ich das richtig verstanden habe, besitzt Du inzwischen
einen MPF-1 ("Mikroprofessor"), da ist ein Z80 drinn. Was
zum Teufel hindert Dich? Anstecken, einschalten, loslegen...
Wie ich weiter oben schon erklärte, kommst Du zu Anfang mit
ca. zwei Dutzend Befehlen aus; das hält den Lernaufwand in
Grenzen.
Der 6502 ist der mir bisher sympatichste Prozessor. Nur
der 8086 ist eben der, der der Zeit gefolgt ist.
???
Assemblersprache lernt man heute i.d.R. nicht, um reale
Programmierprobleme zu lösen, sondern um ein Gefühl dafür
zu bekommen, was im Innern eines Prozessors abläuft.
Wie man so lesen kann, haben erstaunlich viele auf ihrem
Weg auch mal mit dem Z80 zu tun gehabt -- womit wir wieder
beim Mikroprofessor wären...
Altersfrage. Irgendwann sterben dem in Ehren ergrauenden Forum die Teilnehmer weg. Dann weiss von den paar Übrigen keiner mehr, warum das mal so war. :)
PS: Ist ja fast eine geschlossene Gesellschaft hier. Und wenn mal ein Neuling kommt, der nicht gleich wieder verbissen wird, dann stellt sich heraus, dass er 80 ist.
Wie man so lesen kann, haben erstaunlich viele auf ihrem
Weg auch mal mit dem Z80 zu tun gehabt -- womit wir wieder
beim Mikroprofessor wären...
Altersfrage. Irgendwann sterben dem in Ehren ergrauenden
Forum die Teilnehmer weg.
Logisch -- aber das wird ja hoffentlich weder dieses noch
nächstes Jahr der Fall sein; also können noch viele Z80-
Minimalsysteme auf Lochrasterplatine gebastelt werden...
... Tunneln und Geheimgängen erweitert wird. Das Häuschen ist nur noch ein
Zimmer innerhalb der Burg.
Was wir heute im PC stecken haben ist das exakte Gegenteil von
durchschaubar. Aus gutem Grund gibt es keine Mikrocontroller auf Basis
der 8086 Architektur. Der 80186 ging ein bisschen in die Richtung, ist
aber ebenfalls Geschichte.
Das ist sehr schön erklärt.
Ich werde mal versuchen, nur ein Zeichen auf den Bildschirm zu bringen.
Es wird folgendes Programm sein. Ich tippe es aber erst mal ein.
LG. Enk.
das Assembler-Programm, welches das Assembing durchführt.
Dazu habe ich noch nichts gelernt. So ein Programm habe ich noch nie
gesehen. Im übertragenen Sinne ist es im Grunde genommen, die
Maschinensprache die mich interessiert.
Assembler IST die Maschinensprache.
Die pure Hardware führt Assembler aus.
Im Assembler Mnemonik ist in den Bits codiert welche Hardware in der CPU was in welcher Abfolge zu tun hat.
Ich werde mal versuchen, nur ein Zeichen auf den Bildschirm zu bringen.
Ohne BIOS, ohne Windows API und ohne zu lernen, wie die (welche auch immer) Grafikkarte bzw. GPU funktioniert?
Ich dachte, du wolltest dich auf die Bits in der CPU konzentrieren. Dann bleibe um Gottes Willen bei deinem Z80 Lernsystem! So lange du wild hin und her springst lernst du gar nichts.
Keineswegs. Die ist binär und es kommt oft vor, dass nicht der Programmierer die binäre Form des Befehls bestimmt, sondern der Assembler. Wenn mehrere Möglichkeiten.
das Assembler-Programm, welches das Assembing durchführt.
Dazu habe ich noch nichts gelernt. So ein Programm habe
ich noch nie gesehen. Im übertragenen Sinne ist es im
Grunde genommen, die Maschinensprache die mich interessiert.
Assembler IST die Maschinensprache.
HIMMELHERRGOTT! NICHT SCHON WIEDER!
Maschinensprache ist Maschinensprache ist Maschinensprache!
Die pure Hardware führt Assembler aus.
Schwachsinn!
Die Hardware führt MASCHINENCODE aus!
Ein "Assemblerprogramm" (=Assemblerquelltext) ist eine
TEXTDATEI! Mit der kann kein Prozessor irgenwas anfangen!
Um aus einem "Assemblerprogramm" (=Assemblerquelltext) ein
ausführbares Programm zu machen, ist ein ÜBERSETZER nötig,
der die Textdatei einliest und Maschinencode ausspuckt!
Dieses Übersetzerprogramm wird "Assembler" genannt.
Im Assembler Mnemonik ist in den Bits codiert welche Hardware
in der CPU was in welcher Abfolge zu tun hat.
Nein!
In den Assemblerbefehlen (=ASCII-Zeichenketten) ist codiert,
welche Maschinenbefehle das Übersetzungsprogramm nacheinander
erzeugen soll!
Richtig ist allerdings, dass Assemblersprachen in der Regel
so ausgedacht sind, dass im Wesentlichen eine 1:1-Zuordnung
zwischen Assemblerbefehlen und Maschinencode existiert.
Merke: Ein Rezept ist keine Mahlzeit -- sondern nur eine
Vorschrift, wie die Mahlzeit herzustellen ist...
Keineswegs. Die ist binär und es kommt oft vor, dass nicht der
Programmierer die binäre Form des Befehls bestimmt, sondern der
Assembler. Wenn mehrere Möglichkeiten.
Erbsenzählerei.
Assembler kann meistens 1:1 in die eindeutige Maschinensprache übersetzt werden. Bis auf sehr wenige Ausnahmen. Damit ist Assemblersprache lediglich eine Eingabehilfe für Maschinensprache. Mit sehr wenig Spielraum für den Assembler. Daher ist es nicht falsch das Gleich zu setzen.
Richtig ist allerdings, dass Assemblersprachen in der Regel
so ausgedacht sind, dass im Wesentlichen eine 1:1-Zuordnung
zwischen Assemblerbefehlen und Maschinencode existiert
Von 1:N bis N:1 ist alles dabei. Mal gibt's mehrere Befehle für den gleichen Opcode, etwa SBR und ORI bei AVR. Mal gibt's mehrere Opcodes für ADD. Intel war anno 8080 radikaler, aber das ist lange her.
MOV AH,08H ; liest Tastatur - bringt
Int 21H ; Zeichencode nach AL
MOV DL,AL
MOV AH,02H ; bringt Zeichen aus Register
INT 21H ; DL zur Anzeige
MOV AH,4CH ; Definierte Rueckkehr
Int 21H ; zum Betriebssytem
END
Dieses Programm kann noch nicht laufen weil DOS fehlt.
Dann weiss von den paar Übrigen keiner mehr, warum das
mal so war. :)
Zu mindestens sollte man den Unterschied zwischen CISC und RISC kennen. Letzteres ist ja beim ARM dominierend und so auch eher Programmiertechniken wichtig.
Man kann aber genau so gut Algorithmen auf dem Papier in C und in Assembler entwickeln und wird dann nicht dümmer. Darüberhinaus werden auch gleich die Vorteile von C offensichtlich (neben einigen Schwächen) oder auch die Vorteile von Assembler (neben einigen Schwächen).
Bei Mikrocontrollern ist oft der, den du gerade nicht hast, wichtig - weswegen für den Anfang eine Emulation auf dem PC hilfreich ist. Wenn man damit durch ist, kann man sich mit den Datenblättern der älteren gut bekannten Mcs auseinandersetzen und sollte sich dann auch ansprechende Hardware besorgen.
FPGA oder 3D-Druck haben ihre Vorteile - aber eben auch Nachteile, aber spätestens da sollte man wissen, wo man eigentlich hin möchte.
Dieses Programm kann noch nicht laufen weil DOS fehlt.
Darum ja auch mein Vorschlag den Rasberry Pico als CP/M System zu verwenden.
Damit passt dein "DOS", Assembler und Z80/8080(?) Emulation in eine Streichholzschachtel
Zu mindestens sollte man den Unterschied zwischen CISC und RISC kennen.
Gar nicht so einfach, bei allem, was die Leute so RISC nennen. Etwa "variable length RISC" bei Coldfire. 6502 so einzutüten hat hier auch jemand geschafft.
leider sind mir bei der letzte Programmeingabe
vermutlich einige Tabulatoren durch die Gegend gesprungen.
In Zukunft mache ich die Sternrahmen kleiner.
Richtig ist allerdings, dass Assemblersprachen in der Regel
so ausgedacht sind, dass im Wesentlichen eine 1:1-Zuordnung
zwischen Assemblerbefehlen und Maschinencode existiert
Von 1:N bis N:1 ist alles dabei.
Ich könnte mich jetzt rausreden und behaupten, ich hätte
gemeint, dass ein (nicht-Macro-)Assembler aus einem Befehl
im Quelltext stets genau einen Maschinenbefehl erzeugt... :)
(Wäre aber gelogen, also mache ich's nicht.)
Oder gibt's etwa auch dafür Gegenbeispiele?
Mal gibt's mehrere Befehle für den gleichen Opcode, etwa
SBR und ORI bei AVR.
Mal gibt's mehrere Opcodes für ADD. Intel war anno 8080
radikaler, aber das ist lange her.
Mir ist klar, dass die 1:1-Zuordnung nicht wörtlich stimmt;
allerdings denke ich, dass es "vergröbert", also gruppenweise
richtig ist: Ein Sprung wird tatsächlich zu einem Sprung
übersetzt, eine ALU-Operation zu einer ALU-Operation und so
weiter. Das ist ja bei einem Compiler für eine Hochsprache
keineswegs immer so.
Dieses Programm kann noch nicht laufen weil DOS fehlt.
Es ruft Funktionen von einem Betriebssystem auf, dessem Quelltext nicht vorliegt. Dieses wiederum ruft BIOS Funktionen auf, deren Quelltext nicht vorliegt. Dieses ruft Funktionen des ROMS der Grafikkarte auf, deren Quelltext nicht vorliegt. Die Signale der CPU sind so schnell, dass sie nicht einmal mit einem Logic Analyzer beobachtet werden können. Am Herzen des Systems zu basteln ist unmöglich, wäre auch finanzielll betrachtet eine maximale Dummheit.
Also absolut unggeeignet zum Lernen der Grundlagen.
Vielleicht sollte man beim Thema Assembler einen Vergleich wagen:
Assembler ist wie die menschliche Sprache: Es gibt verschiedene. Hat man einmal Spanisch gelernt, kann man damit in China nicht viel anfangen.
Kann man Z80 Assembler auswendig, funktioniert schon wieder nichts mehr auf einen AVR.
Aus diesem Grunde macht Assembler nur für Spezialisten wirklich Sinn und Assembler wird heute nur noch wenig verwendet (höre ich einen Aufschrei hier?). Es macht Sinn, eine verallgemeinernde Sprache wie z.B. Python zu verwenden, die auf so ziemlich vielen Systemen vom mittelgroßen Mikrocontroller bis zum PC läuft.
Die Assembler mancher RISCs bauen einen "load immediate" Befehl je nach Wert der Konstanten aus mehrere Operationen zusammen. Oder aus einem "load relative" und einer Konstanten in der Nähe.
Logisch -- aber das wird ja hoffentlich weder dieses noch
nächstes Jahr der Fall sein; also können noch viele Z80-
Minimalsysteme auf Lochrasterplatine gebastelt werden...
Meine Rede seit Jahren. Früher war A&B die Offene und Offtopic die Geschlossene. In Erstere durfte jeder rein, in Letztere nur mit Anmeldung. Die Offene wurde dann aufgrund hoffnungsloser Überbelegung geschlossen.
Soweit ich das sehe, ist Z80 ein absterbender Ast.
Absterbend? Der ist schon lange tot! So wie V8 Big Block!
AVR sind nicht wirklich komplexer, aber dafür deutlich
aktueller/billiger.
Aktueller ja. Aktuell, naja. Die Dinger gibt es auch schon reichlich 25 Jahre, wenn auch immer wieder mal mit leicht aufgebohrter CPU und vor allem Drum herum.
Somit sollte eigentlich klar sein, womit man sich eher beschäftigen
sollte.
allerdings denke ich, dass es "vergröbert", also gruppenweise
richtig ist
Auch ein Compiler macht aus einer Operation nicht ihr Gegenteil. Ein AVR Assembler wiederum macht aus der vorgeblichen Ladeoperation CLR die ALU-Operation EOR.
Es ist nicht einfach, Begriffe und Sachverhalte so zu definieren, dass man darin keine Löcher und Widersprüche findet. In der ebenfalls von Logik geprägten Juristerei auch nicht.
Bzw. das Progrämmchen, welches hier folgt: ...
Leider fehlt der OpCode.
so ein quatsch. Du springst wild zwischen den Architekturen hin und her. Von Z80,6502,8086 und Raspberry Pi Pico. Dabei hast nicht die leiseste Vorstellung wie du zu den entsprechenden Hex codes kommst. Es wurden dir so viele Wege aufgezeigt wie du arbeiten kannst. Das setzt aber voraus, dass du dich auf eine Architektur festlegst und dann loslegst. Dazu gehört selbstverständlich das Einarbeiten in die entsprechenden Tools.
Lass dir gesagt sein ASM mit 8086 ist zwar machbar für dich aber in den nächsten 10 Jahren unerreichbar.
Dieses Programm kann noch nicht laufen weil DOS fehlt.
Darum ja auch mein Vorschlag den Rasberry Pico als CP/M System zu
verwenden.
Damit passt dein "DOS", Assembler und Z80/8080(?) Emulation in eine
Streichholzschachtel
Hallo Arduino F. und alle.
Gut das werde ich machen und ich habe auch noch den Arduino.
Das Wesendliche ist mir, sehen zu können, was sich abspielt.
An und für sich, sollte es für jeden Prozessor Assembler geben,
weil ja jeder Prozessor in Maschinensprache arbeitet.
Kann man Mikrophyton in Assembler übersetzen?
Ich hatte mal gehört, Python wäre eine Interpreter-Sprache stimmt das?
Den Lehrgang zu dem Rasberry Pico suche ich noch raus,
auch, weil ich zu wenig Englisch kann.
LG. Enk
Vll. wäre eine uralte Bord mit Monitor, Keypad und LED Display das Richtige. Da ist ein PC nicht unbedingt nötig. Ich denke da in erster Linie an die alten Motorola Bords. Ich fing mit 6802 und HC11 an. Beim 6802 war alles auf der Bord. Der HC11 EVB brauchte ein Terminal.
Das war alles Maschinen-Nahe. Man mußte die OPCodes direkt als Hex Nummer eingeben. Es funktionierte. Würde ich mir das heute noch antun wollen? Nicht wirklich.
Eine Simulation mit uV2 ist da auch nicht zu verachten. Der MCS51 Befehlssatz ist zum Lernen nicht schlecht. Auch die Z8 Architektur ist nicht schlecht. MSP430 hat auch seinen Reiz und vorzügliche SW. Auch mit PIC kann man mit ASM zurechtkommen. Auch bei uC gilt:
"Dem Hungrigen schmeckt alles".
Daran steckt in diesen Kontext schon ein "Bitchen" Wahrheit.
AVR ist auch nicht zu verachten. Wer will, findet alles Notwendige dazu in der Welt für Peanuts oder frei.
Reden ist Silber, Machen ist Gold! Nach all der schon verspritzten Forumstinte ist es an der Zeit, zu machen. Es wurde schon viel zu viel geredet.
Den Rpi halte ich im Kontext hier für eine recht unglückliche Wahl. Dafür habe nicht mal ich echte Lust dazu. Ich finde, Acht-Bitter dagegen, haben auch in unserer Zeit immer noch einen gewissen Reiz und Charm. Aber auch dort, hat eine Sprache wie C Sinn, wenn es um die Verwirklichung von Entwicklungsaufgaben geht. ASM da nur, wenn die Umstände es nahelegen. C ist ohnehin nur einen Katzensprung von ASM entfernt und kann je nach Implementierung sehr HW-Nahe sein. C hat praktische Nähe zu ASM. Das kann sehr nützlich sein.
Logisch -- aber das wird ja hoffentlich weder dieses noch
nächstes Jahr der Fall sein; also können noch viele Z80-
Minimalsysteme auf Lochrasterplatine gebastelt werden...
Du bist auch in den 80er hängen geblieben . . .
Und?
Aktuell benötige ich eine Art MIDI-Recorder. Passende
Linux-Software ist bereits installiert, aber der MIDI-to-
USB-Konverter führt im Zusammenspiel mit dem Kernel zu
stotternder Übertragung...
Ich vermisse meinen LC80.
Mit dem hätte ich das Problem schon lange gelöst...
Aktueller ja. Aktuell, naja. Die Dinger gibt es auch
schon reichlich 25 Jahre
Das stimmt. Deswegen sind AVR sehr gut dokumentiert. Und man kann sie noch problemlos für wenig Geld kaufen (bisher kein Ende in Sicht).
Z80 und 6502 existierten in einer anderen Zeit, als es noch kein Internet gab und normale Menschen keinen eigenen PC hatten. Wer sich mit denen beschäftigt, sollte nach Büchern Ausschau halten. Bei mir in der Stadtbücherei wurden sie inzwischen ausgemustert. Auch die Bücher über DOS und CP/M.
Da dem Günter für sein Z80 Gerät die ganze Doku auf deutsch (das war ihm wichtig) vorliegt, spricht meiner Meinung nach fast nichts dagegen, die Grundlagen auf diesem Gerät zu lernen. Die Art wie es dokumentiert ist wird ihn sicher eher ansprechen, als die moderne Art von Arduino. Das ist eher was für die Generationen nach ihm.
Ich schreibe "fast nichts", weil ich mir Sorgen um die Reparierbarkeit mache. Den Z80 und die zugehörigen I/O Bausteine kann man (bei seriösen Händlern) nicht mehr kaufen. Stattdessen häufen sich Berichte über schlechte Fälschungen.
Dieses Programm kann noch nicht laufen weil DOS fehlt.
Und vor allem lernst Du an diesem Beispielprogramm nichts,
weil Du es Dir nicht selbst ausgedacht hast.
Ja, ja, das stimmt -; selbst bei diesem Beispiel treten Fragen auf.
Genau wohin wird das Zeichen auf dem Bildschirm gesendet.
Dann muss der Bildschirm vermutlich in der Grafikkarte
auch einen Speicherplatz haben. Aber wohin auf dem Bildschirm?
Wenn da aber schon schon eines ist.
LG.Enk