Einfache CPU, einfacher Rechner, nur zum Lernen, Erfahrung?

OP #7887024
Lesenswert?

Arduino F. (Firma: Gast) (arduinof) 04.06.2025 22:49 antwortete gut. WIKIPEDIA antworte: "Dieser Artikel existiert nicht.". Dankeschön für Deine Antwort!

von Klaus (feelfree) 05.06.2025 01:17
Günter K. schrieb angeblich:

0x42

Nein, - ich habe mehr dazu geschrieben und erklärt. Bitte lese und schreibe bitte richtig. Bitte -keine- Sticheleien mehr! Mit lieben Grüßen Günter K.

OP #7887059
Lesenswert?

Arduino F. schrieb:

Wenn du vernünftig zitieren würdest, könnte ich auch einen korrigierten Link schicken, aber so weiß ich nicht welchen Beitrag/Link du meinst du meinst.

Lieber Arduino F. Du antwortestest, ja schon richtig auf den LINK:

An Thomas W. schrieb ich im Beitrag #7886885:

bitte was sind Vaxes? warum soll ich das wiederholen? Ich hätte diese Frage ja nicht gestellt, wenn ich es gefunden hätte.

Liebe Grüße Günter K. (ENK)

OP #7889089
Lesenswert?

Cyblord -. schrieb im Beitrag #7884658: am 31.05.2025 um 17:16

Cyblord -. schrieb:

... dass beim TE kein Licht brennt.

:-))) Doch bei mir brennt Licht, sonst säße ich jetzt im Dunkeln. Ich versuche gerade die Zuordnung der zugehörigen Bitmuster für die 7-Segment-Anzeige heraus zu bekommen.

Es ist klar, wenn ich einfach die Zahlen abschreibe kommt das Richtige heraus. Zwar sehe ich, dass die Bitplätze die eine NULL tragen, das Segment einschalten. Der Punkt müsste BIT 7 sein. Nach dem JC-II-Buch, geht es vom oberen Querbalken im Uhrzeigersinn weiter und in der Mitte ist dann BIT 6. Von der Zahlenmäßigen Reihe, muss man 1 abziehen, um den Bit-Platz zu haben. Ich probiere die "9" zB.: 7654 3210, Dann ist BIT 7 der PUNKT. 1001 0000 BIT 6 der mittlere Querbalken. und BIT 5 oben links, und 0123 liegen Kreis. Bit 4 = 1 also aus. Danke für die Idee der Aufgabe. Man hat inzwischen auch schon Buchstaben ausgetüftelt. :-) Noch weiterhin frohe Pfingstzeit Günter K. (ENK)

Gast #7889308
Lesenswert?

Guenter, -

finde ich aber gut, dass Du mit Deiner "Sturheit" solange durchgehalten hast (angefangen war das alles im Okt.24). Schoen.

Ich muss auch gestehen: Ich habe in den letzten drei Monaten haeufiger in die Junior-Computer-Buecher nachgeschlagen als in den letzten 35 Jahren :-)

Mein aktuelles Bastelprojekt ist ein ESP32C6, ein 32-bit-RISC-Prozessor mit 512Kb RAM (Du hast ein ganzes kB), Clockrate von 160MHz (Du hast ein ganzes Megahertz), kostet 5EUR. Es ist schon unglaublich, was in den letzten 40 Jahren an Fortschritt in der Composterei passiert ist.

Weiter machen!

OP #7889506
Lesenswert?

Günter K. schrieb:

Lieber Arduino F. Du antwortestest, ja schon richtig auf den LINK:

Hiermit bedanke ich mich noch mal, das hattest Du ja wirklich gut gemacht, und ich will in -diesem Falle- nichts mehr von Dir. Ich wünsche Dir noch weiterhin viel Erfolg bei Deinen Projekten. Liebe Grüße Günter K. (ENK) :-)

PS.: Wenn irgendwo, andere was löschen, kann ich nachträglich nicht ändern, und kann es auch nicht überschauen, Entschuldige bitte, wenn das passiert.

#7889876
Lesenswert?

Thomas W. schrieb:

ein 32-bit-RISC-Prozessor mit 512Kb RAM (Du hast ein ganzes kB), Clockrate von 160MHz (Du hast ein ganzes Megahertz), kostet 5EUR. Es ist schon unglaublich, was in den letzten 40 Jahren an Fortschritt in der Composterei passiert ist.

Jo. Aber ein Prozessorsystem (kein µC), was der TO ja benutzt, hatte die von Dir genannten Daten schon vor 30 Jahren. Kostete damals allerdings mehr. So ein 6502 zu seiner Zeit aber auch.

Gruß Jobst

#7889920
Lesenswert?

Günter K. schrieb:

Ich versuche gerade die Zuordnung der zugehörigen Bitmuster für die 7-Segment-Anzeige heraus zu bekommen.

Der Profi schreibt sich die Zuordnung in eine Include-Datei und läßt dann den Compiler die magischen Nummern ausrechnen:

1
#define DIG3    0b00000001                            // digit order
2
#define DIG2    0b00100000
3
#define DIG1    0b00000010
4
#define DIG0    0b01000000
5

6
#define _A      0b00010000                            // segment order
7
#define _B      0b00000001
8
#define _C      0b00100000
9
#define _D      0b00001000
10
#define _E      0b00000100
11
#define _F      0b01000000
12
#define _G      0b10000000
13
#define _DP     0b00000010                            // decimal point
14

15
#define _0      ( _A+_B+_C+_D+_E+_F    )              // number pattern
16
#define _1      (    _B+_C             )
17
#define _2      ( _A+_B+   _D+_E+   _G )
18
#define _3      ( _A+_B+_C+_D+      _G )
19
#define _4      (    _B+_C+      _F+_G )
20
#define _5      ( _A+   _C+_D+   _F+_G )
21
#define _6      ( _A+   _C+_D+_E+_F+_G )
22
#define _7      ( _A+_B+_C             )
23
#define _8      ( _A+_B+_C+_D+_E+_F+_G )
24
#define _9      ( _A+_B+_C+_D   +_F+_G )
25
#define _BLANK  ( 0                    )
26
#define _MINUS  (                   _G )
#7890118
Lesenswert?

Karl B. schrieb:

Und der Profi baut noch ein Bit ein für Invertierung "gemeinsame Katode", "gemeinsame Anode".

Da hast Du natürlich recht. Ich wollts bloß nicht gleich zu kompliziert machen.

1
//#define INVERT                                        // for common cathode
2
#ifndef INVERT
3
#define INVERT  (uint8_t) ~                           // for common anode
4
#endif
5

6
#define DIG3    0b00000001                            // digit order
7
#define DIG2    0b00100000
8
#define DIG1    0b00000010
9
#define DIG0    0b01000000
10

11
#define _A      0b00010000                            // segment order
12
#define _B      0b00000001
13
#define _C      0b00100000
14
#define _D      0b00001000
15
#define _E      0b00000100
16
#define _F      0b01000000
17
#define _G      0b10000000
18
#define _DP     0b00000010                            // decimal point
19

20
#define _0      INVERT( _A+_B+_C+_D+_E+_F    )        // number pattern
21
#define _1      INVERT(    _B+_C             )
22
#define _2      INVERT( _A+_B+   _D+_E+   _G )
23
#define _3      INVERT( _A+_B+_C+_D+      _G )
24
#define _4      INVERT(    _B+_C+      _F+_G )
25
#define _5      INVERT( _A+   _C+_D+   _F+_G )
26
#define _6      INVERT( _A+   _C+_D+_E+_F+_G )
27
#define _7      INVERT( _A+_B+_C             )
28
#define _8      INVERT( _A+_B+_C+_D+_E+_F+_G )
29
#define _9      INVERT( _A+_B+_C+_D   +_F+_G )
30
#define _BLANK  INVERT( 0                    )
31
#define _MINUS  INVERT(                   _G )
#7890220
Lesenswert?

Klaus schrieb:

Ist das gängige Assembler-Syntax?

Das ist die Syntax des C-Präprozessors. Man kann aber den C-Compiler anweisen, nur den Präprozessor laufen zu lassen und dann das Outputfile einem Assembler vorsetzen. Der Präprozessor ist also nicht auf bestimmte Textdateien beschränkt. Nur wenn der Assembler ebenfalls eine Syntax mit # am Zeilenanfang hätte, dann kracht es.

https://de.wikipedia.org/wiki/C-Pr%C3%A4prozessor

#7890232
Lesenswert?

Klaus schrieb:

Wenn nein, werdet ihr damit den Günter heillos überfodern.

Er ist mit jedem Ansatz überfordert, eine zeitgerechte Programmierumgebung an einem PC zu benutzen. Das war auch nur als Demonstration gedacht, wie man sich die Arbeit erleichtern könnte.

In den Anfängen der Platinenfertigung wurde jede einzelne Bohrung gezählt, d.h. Vias kosteten bares Geld. Da war es dann sinnvoll, wenn man sich kreuzende Leitungen minimieren konnte. Daher das scheinbare Durcheinander der Definitionen. Dem Compiler ist es ja herzlich wurscht, welches Byte er für welche Ziffer ausgeben soll. Die Codegröße bleibt immer gleich.

OP #7890667
Lesenswert?

Christoph M. schrieb:

Sicher kennt sich jemand sehr gut mit Excel und VBA aus: ...

Finde ich wirklich gut, ehrlich.

Nur möchte letztendlich ein einfacher Informatiker den Text in einer Editor-Datei stehen haben. Und dieser Text funktioniert dann auch, auf modernen Compiler. Leider weiß ich noch nicht, wie ein Compiler funktioniert.

Wichtig ist aber, die Übersicht zu behalten.

Falk B. schrieb:

Ich hab noch ein Nudelholz in der Schublade . .

Oh, was hab' ich gelacht :-)))

Ich muss mich noch einlesen. Letztendlich soll es ja, um einen einfachen Computer gehen.

Eben bin ich von Bekannten eingeladen worden, Da muss ich gleich hinfahren. Liebe Grüße Günter K. (ENK)

PS.: Der CBM, war zu seiner Zeit, schon enorm, es war ja nur ein Anfang.

OP #7890684
Lesenswert?

Hallo liebe Leute,

-...- Moment, ich weiß, INFORMATIK ist nicht einfach! Und ich, bin kein Informatiker.

Das nächste Progrämmchen, steht zum Eintippen bereit. Ich habe es absichtlich kleiner gelassen; muss aber noch etwars Hardware zusammenlöten. Es ist für 6 Töne, die (noch) nicht automatisch laufen. Liebe Grüße Günter K. (ENK)

#7890768
Lesenswert?

Günter K. schrieb:

-...- Moment, ich weiß, INFORMATIK ist nicht einfach! Und ich, bin kein Informatiker.

Das nächste Progrämmchen, steht zum Eintippen bereit. Ich habe es absichtlich kleiner gelassen; muss aber noch etwars Hardware zusammenlöten. Es ist für 6 Töne, die (noch) nicht automatisch laufen. Liebe Grüße Günter K. (ENK)

Vielleicht kann man ihn im Heinz-Nixdorf-Museum hinter Glas ausstellen. Vorne steht dann auf der Tafel "Kein Informatiker. Die 6 Töne, die Sie (noch) nicht hören, werden von einem absichtlich kleiner gelassenen Program erzeugt."

OP #7891091
Lesenswert?

Hallo Christoph M. und alle!

Hmm .. Libre Office macht Komisches .. Vielleicht geht es ja mit Windows-Excel?

Hallo Christoph M. ich finde, Deine Leistungen sind sehr gut! Und ich finde es schon ENORM, sofort ein Programm zu schreiben, das sofort funktioniert!

Irgendlemand schrieb so in etwa, an Christoph M. "... Du bist unserer Zeit voraus!" Das glaube ich auch!

Christoph M. schrieb:

Aber ich gehe davon aus, dass es relativ mühselig ist, mehr als 255 Bytes über die HEX-Tastatur des Junior-Computers einzutippen und ich vermute, dass nach Ausschalten des Stromes auch alle Daten weg sind.

Günter schrieb:


| NEC ROY 218-045 | | IRLAND µPD2114LC | |___________________|

besorge ich vielleicht noch heute. ob man vielleicht noch EE-RAMs oder EE-ROMs bekommen kann?

Später, wird ein Fernschreiber-Programm kommen, auf dem Wege, kann ich dann Daten speichern. Übrigens, damals wurden auch Huckepack-RAMs gebaut. Auf dem Wege, kann man auch speichern. Liebe Grüße Günter K. (ENK)

OP #7891110
Lesenswert?

Hallo liebe Leute,

Peter D. schrieb:

Karl B. schrieb:

Und der Profi baut noch ein Bit ein für Invertierung "gemeinsame Katode", "gemeinsame Anode".

Das verstehe ich nicht, denn wenn man direkt invertiert eingibt, braucht man ja nicht mehr zu invertieren, - oder? Die Kathode oder Anode sind einfach angeschlossen wie sie sind; das ist für das Programm selbst uninteressant, höchstens im REM-Bereich als Hinweis, wie sie hardwaremäßig angeschlossen sind. Mit lieben Grüßen Günter K. (ENK)

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

Günter K. schrieb:

Das verstehe ich nicht, denn wenn man direkt invertiert eingibt, braucht man ja nicht mehr zu invertieren, - oder? Die Kathode oder Anode sind einfach angeschlossen wie sie sind;

Wenn du nur ein einziges fertiges Gerät hast, dann ist das mit der Invertierung egal - du programmierst das dann einfach "richtig".

Wenn du vorher nicht weißt, ob deine Anzeigen gemeinsame Anode oder Kathode haben, dann kannst du die Programmierung flexibel gestalten.

#7891222
Lesenswert?

Wolfgang R. schrieb:

Vielleicht hilft es was, vielleicht auch nicht: die Memory Map von Junior und Interfacekarte.

Die steht vollständig in keinem der Bücher drin, das muss man sich mühsam zusammensuchen!

Naja. Binäre Adressen braucht keiner, das stiftet mehr Verwirrung als alles andere. Teilweise gilt das auch für die Adressen von VIA und EPROM. Denn die Adressen A13-A15 werden nirgends dekodiert. Der IC 6 dekodiert nur A10-A12, sprich 1kB Blöcke. Das sollte man auch so darstellen. D.h. auch, daß die 8x1kB auf den vollen Adressraum 8x gespiegelt sind. Das braucht man aber nur für die obersten drei Worte im EPROM für die IRQ/NMI/RESET Vektoren.

#7891243
Lesenswert?

Günter K. schrieb:

Leider weiß ich noch nicht, wie ein Compiler funktioniert.

Warum willst Du wissen, wie so ein Memnonics-nach-Opcode-Übersetzer (das Ding nennt man einfach Assembler) funktioniert? Benutze ihn doch einfach!

Wie hundert mal geschrieben:

  1. Gehe zu https://www.masswerk.at/6502/assembler.html
  2. Gebe in das Fenster src oben links deine Memnonics ein. Zum Beispiel "nop"
  3. Drücke auf die Schaltfläche "assemble"
  4. Im Fenster rechts erscheint der Hex-Code.

Einfacher geht es nicht. Aber selbst dieses Super-Einfache hast Du noch nie ausprobiert, und willst lieber untaugliche Hardware basteln und RAMs austauschen, die Du defekt wähnst. So kommst Du nie weiter. Aber das willst Du wohl auch gar nicht.

Edit, nochmal nachgedacht: Eigentlich ist es vollkommen egal was Du machst, Du wirst eh keinen Erfolg haben. Also weitermachen! RAM bestellen! Schalter löten! Und immer hier mitteilen, dass jemand zu Besuch kommt oder Du jetzt gleich einkaufen gehst!

OP #7891250
Lesenswert?

Karl B. schrieb im Beitrag #7891122: am 12.06.2025 um 10:54

Das machst Du mit Software einfacher, als LED-Anzeigen auszutauschen. Sonst kommt sowas raus wie im Bild. ciao gustav

Siehe oben. Dankeschön Dir auch! Also, greift hardwaremäßige Software für den Fall auf die Hardware zu, - und verändert entspechend die Harware, damit die Software und Hardware stimmt. - Wolfgang R. schrieb noch was:

Wolfgang R. schrieb im Beitrag #7891206 vom 12.06.2025 13:40 noch dazu:

von Wolfgang R. (Firma: www.wolfgangrobel.de)

Wolfgang R. schrieb noch zu weiteren Angaben, die ich auch ernst nehme:

... Wenn du vorher nicht weißt, ob deine Anzeigen gemeinsame Anode oder Kathode haben, dann kannst du die Programmierung flexibel gestalten.

Ja lieber Wolfgang, ich erinnere mich, Du hattest mir ja schon fertige Dateien geschickt, die haben alle funktioniert. Es waren schon einige Zeichen auf dem Display. Dankeschön! Und wenn ich mal alles fertig habe, die Teile habe ich leider noch nicht; wenn man bedenkt, das der CBM ja schon so vieles konnte. Dankeschön an Alle! Mit lieben Grüßen Günter K. (ENK)

OP #7891256
Lesenswert?

Klaus schrieb:

Wie hundert mal geschrieben:

  1. Gehe zu https://www.masswerk.at/6502/assembler.html
  2. Gebe in das Fenster src oben links deine Memnonics ein. Zum Beispiel "nop"
  3. Drücke auf die Schaltfläche "assemble"
  4. Im Fenster rechts erscheint der Hex-Code.

Günter schreibt: Ja, auch das, werde ich noch machen.

Klaus schrieb:

... Und immer hier mitteilen, dass jemand zu Besuch kommt oder Du jetzt gleich einkaufen gehst!

Nun ja, zum wissen, dass ich nicht -nur- am Rechner sitze. :-) Liebe Grüße Günter K. (ENK)

#7891257
Lesenswert?

Günter K. schrieb:

Also, greift hardwaremäßige Software für den Fall auf die Hardware zu, - und verändert entspechend die Harware, damit die Software und Hardware stimmt.

Genau solche Aussagen sind der Grund, warum ich trotz des mir selbst gegebenen Versprechens, hierzu die Klappe zu halten, doch immer wieder vorbei schaue. Ich kann es einfach nicht glauben, dass die bisherigen Aussagen Günters nicht immer wieder noch getoppt werden können. Doch, kann er. QED. Es ist der helle Wahnsinn, was hier abgeht...

#7891260
Lesenswert?

Thilo L. schrieb:

QED. Es ist der helle Wahnsinn, was hier abgeht...

Nein. Dir fehlen nur ein paar medizinische Grundlagen in Neurologie und Psychiologie.

Beitrag "Re: Einfache CPU, einfacher Rechner, nur zum Lernen, Erfahrung?" Beitrag "Re: Einfache CPU, einfacher Rechner, nur zum Lernen, Erfahrung?" Beitrag "Re: Einfache CPU, einfacher Rechner, nur zum Lernen, Erfahrung?"

Such dir die schönste Interpretation aus.

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

Arduino F. schrieb:

Günter K. schrieb:

Also, greift hardwaremäßige Software für den Fall auf die Hardware zu, - und verändert entspechend die Harware, damit die Software und Hardware stimmt.

Ich habe min. 10 Minuten versucht diesen Wortsalat zu verstehen. Leider keinen Erfolg.

Ich finde es jetzt nicht schwer zu verstehen, auch wenn es missverständlich ausgedrückt ist:

Es greift also eine hardware-spezifische Software auf die Hardware zu und passt sich so der Hardware an, dass sowohl Hard- als auch Software zusammenpassen.

Wenn man es verstehen will, dann kann man das schon...

#7891277
Lesenswert?

Meine Güte, Software ist einfach ein Hausmeister in einem großen leeren Hochhaus, der mit einem Plan abends da reingeht, und je nach Plan die verschiedenen Lichter in dem Stockwerk anmacht. Der Plan, könnte man noch spitzfindig sagen, wäre erstmal der Boot-Code.

So rein theoretisch könnte man noch ein paar Wikipediaartikel ansehen, z.B.: https://de.wikipedia.org/wiki/Von-Neumann-Architektur https://de.wikipedia.org/wiki/Harvard-Architektur

Ein Zeiger wäre übrigens ein Lehrling, der vom Hausmeister gezeigt bekommt, wo er auf dem Plan hinrennen, und Lichter anschalten soll. ;)

Übrigens, gibt es hier und da sehr gute didaktisch aufgebaute Programmierlehrgänge, da könnte man im wahrsten Sinne learning by doing praktizieren.

#7891298
Lesenswert?

Hier der Grund, wieso es nur um "ein" Bit ging. "...By logic level at the input S you can change the polarity of the segment outputs accordingly to the displays with common anode or cathode. Logical One for common anode displays, logical Zero for common cathode displays..." Der BCD-Decoder-7-Segmenttreiber hat schon die Auswahlmöglichkeit. K176IE3 und entsprechend für den 4056 über Logikpegel an einem Pin. Wird jedoch über das Programm selbst bereits eine Ansteuerung der Siebensegmentanzeigen vorgenommen, müssen zwei Varianten vorhanden sein. Der entsprechende "Auswahl"-Programmabschnitt enthält dann die sogenannte "Invertierung". Welche Variante man nimmt, hängt vom tatsächlich verwendeten Display ab. Man ist also in der Auswahl der Anzeigetypen recht flexibel. Wobei der K176IE3 nur LEDs oder VFD ansteuern kann, der 4056 sogar LCD. Und da wird es schon ein wenig komplizierter.

Beide braucht man aber nicht bei entsprechendem Programm, weil dies das schon von Hause aus kann, ohne die Umwege über externe BCD-Zähler und Decodier-Treiber.

Ein Programm ändert nicht die Hardware, nein, es ändert nur die Ansteuerung derselben. Man kann beides abwechselnd versuchen. Dann erhält man eben gegebenenfalls "Hieroglyphen". Schöner Partygag. Man drückt einen Knopf und schon sind keine Ziffern, sondern unbekannte Zeichen zu sehen. Man kann auch LCDs so "initialisieren", dass sie ganz anders arbeiten als sonst. Kommt ganz auf die Software an.

ciao gustav

Angehängte Dateien:
Beitrag #7891321 wurde von einem Moderator gelöscht.
#7891330
Lesenswert?

Robin A. schrieb:

Hier ein paar Vorschläge, die dir den Einstieg erleichtern könnten: ....

Oder einfach mal ein Buch zur Hand nehmen, z.B.: Lampe, Jorke, Wengel "Algorithmen der Mikrorechentechnik" (gäbe es z.B. hier https://www.booklooker.de/Bücher/Günter-Jorke-Bernhard-Lampe+Algorithmen-der-Mikrorechentechnik-Maschinenprogrammierung-und/id/A02IwfvR01ZZ2?zid=8c1u5mdveu0lo13eh1sr9nc8ud). Das Buch passt zum Z80.

Gast #7891371
Lesenswert?

Was soll der Blödsinn, hier ChatGPT Chats reinzustellen?! Vor allem ohne Kennzeichnung, dass es sich um eine Antwort von ChatGPT handelt! Das macht keinen Sinn. Wenn überhaupt, dann stelle hier den ChatGPT-Prompt rein!

ciao

Marci

#7891375
Lesenswert?

Gerhard O. schrieb:

Das hat chatGPT verbrochen. Schäme Dich und stell Dich in die Ecke

Ja, aber nicht nur deshalb, da kommt noch mehr dazu.

  1. Weil er damit nur die eingestreute URL seiner Schweizer CBD-Klitsche tarnen wollte.

  2. Weil er nicht begriffen hat, dass das Forum ohnehin nofollow-Links erzeugt, sein Google-Ranking damit also nicht besser wird.

  3. Weil der Laden auch noch eine Baukasten-Website von "Wix" ist, bei denen ich mich nebenbei immer noch frage, wie man auf die Idee kommt, mit diesem Namen in den deutschsprachigen Markt zu gehen.

Die "SEO"-Deppen sterben leider nicht aus.

OP #7891522
Lesenswert?

Christoph M. schrieb im Beitrag #7891165: 12.06.2025 12:26

Tatsächlich gibt es schon einen Excel Assembler: https://github.com/tilleul/apple2/tree/master/tools/6502_assembler

Super Toll PRIMA Christoph M.! Sehr gut gemacht!!

Ich las irgendwo ROFL
Rolling For Laughing :-))) Schön

1
    |-------------->---|

ROL |<-|7------0|<-C-<-|

Es wird der Inhalt der Speicherstelle, der sich aus dem Folgebytes ergibt (Lower und Higherbyte) rolliert, d.h. die Linke Bit wird in das Carry-Flag gebracht, wobei der vorige Flag-Inhalt rechts wieder eingeschoben wird.

z.B.: 2E 00 03 Inhalt von 300 sei 01 das Carry-Flag sei 1. Nach der Ausführung des Befehls wird der Inhalt 03 sein. Das Carry-Flag wird anschließend auf 0 gesetzt.

Es gibt aber 5 verschiedene Adressierungsarten dafür, die OP-CODES werden nachher beim Assembler uninteressant, -nur- für den Anfang interessiert mich das. Man achte auf die FLAGS N, Z und C. Liebe Grüße Günter K. (ENK)

OP #7891684
Lesenswert?

Wolfgang R. schrieb im Beitrag #7891198: Betr.: Die Junior_Memory_Map.pdf

von (Firma: www.wolfgangrobel.de) (mikemcbike) vom 12.06.2025 13:30

Oh, Dankeschön

Vielleicht hilft es was, vielleicht auch nicht: die Memory Map von Junior und Interfacekarte.

Die steht vollständig in keinem der Bücher drin, das muss man sich mühsam zusammensuchen!

Erstaunlich, ich hatte mich schon oft gefragt: "...ob es soetwas gibt?" und jetzt sehen ich, das gibt es nur durch Dich! - Sehr gut! Ob man so eine Interface-Karte noch bekommen kann? Und den richtigen Verkäufer für die Rams?

In Deinem Vortrag vom CBM 3280, war ich erstaunt, -SUPER- wie Du alle Teile ganz genau kennst; das finde ich sehr gut! Liebe Grüße Günter K. (ENK) :-)

#7891687
Lesenswert?

Günter K. schrieb:

Ob man so eine Interface-Karte noch bekommen kann? Und den richtigen Verkäufer für die Rams?

Es gibt für dich keinen ungeeigneteren Rechner, um Assembler zu lernen. Warum willst Du mit der schlechtestmöglichen Hardware weitermachen?

Vor 45 Jahren hatte man nichts besseres. Niemand tut sich das freiwillig an. Warum Du, erst recht nach fast einem halben Jahr ohne jede merkliche Fortschritte?

OP #7891705
Lesenswert?

Klaus schrieb im Beitrag #7891502: vom 13.06.2025 08:16

von Klaus (feelfree)

Vielleicht solltest du dir für Foristen, die dich gnadenlos verarschen (und du es nicht mal merkst) eine passendere Anrede überlegen.

Tja, - wenn ich das nicht merke, dann weiß ich es ja auch nicht. :-))) .

  • nur: ...tileul..., heist das Till Eulenspiegel? Das ist doch die Märchenfigur, der die Leute zum Narren hielt. Oder die: "Gewichte von der Wasserwaage."

Allerdings, halte ich Assembler über Exel durchaus als möglich.

Ich machte das nur zur Übersicht, und das ich viele Kommentare in den REM-Bereich hineinschreiben kann.

Liebe Grüße Günter K. (ENK)

#7891718
Lesenswert?

Günter K. schrieb:

Ich machte das nur zur Übersicht, und das ich viele Kommentare in den REM-Bereich hineinschreiben kann.

Du kannst in jedem Assemblerprogramm beliebig viele Kommentare reinschreiben. Excel ist da gänzlich unpraktisch dafür.

Aber du magst es ja maximal unpraktisch. Vielleicht solltest du die Hexadezimal-Tastatur deines Junior durch Kippschalter für die einzelnen Bits und die 7-Segment-Anzeige durch LEDs ersetzen, dann ist es noch unbequemer als es eh schon ist.

OP #7891746
Lesenswert?

Klaus schrieb:

Warum willst Du mit der schlechtestmöglichen Hardware weitermachen?

Vor 45 Jahren hatte man nichts besseres. Niemand tut sich das freiwillig an. Warum Du, erst recht nach fast einem halben Jahr ohne jede merkliche Fortschritte?

Hier bin ich angekommen, hier bleib ich, - unter anderem.

Ja, die Leute von damals, das waren und sind echte Pioniere! Wolfgang Du bist, so ein Pionier, - und das ist gut so! Es ist ein Versuch, die Zeit zu erleben, - wie das war. Ich könnte jetzt aus dem Buch I etwas aus dem Kopf zitieren: "Was haben wir gemacht ... ... schon sehr viel ...". Und ich freue mich über jeden kleinen Schritt.

Ja Klaus, - und ... . Ich bin nur der kleine Günter. Und ich kenne meine Fähigkeiten auch, - die, lasse ich mir nicht absagen. Und ja Wolfgang R. Du kannst das. Du hast ja richtig studiert! Das ist wirklich sehr gut! Und wie Du zeigst, kannst kannst Du noch - viel, viel, mehr, was sehr zu respektieren ist!! Ein verdienter Respekt!

Trotzdem Wolfgang für Dich ist die Zeit, - nicht stehengeblieben; und selbstverständlich kann ich mich selbst, nicht mit Dir Wolfgang, vergleichen.

Ich habe mein Leben fast hinter mir. Dies ist nur mein Hobby, dies ist mein Spiel. Sich irgendwie in den kleinen Computer einzuleben. Mein Wunsch, einen kleinen einfachen Computer zu haben, wie damals. Man soll sich ja auch nicht auf den Prozessor versteifen, las ich in den Büchern, allerdings halte ich mich auch nicht als Informatiker. Ich kann es auch nicht mehr werden und freue mich über jeden, der winzigen Schritte.

Man könnte einige große Namen nennen, wie Joseph Weizenbaum, so auch Wolfgang Back, der auch Fernsehmoderator war! Er wurde nur 76 Jahre alt.

Ich bin nur der kleine Gü

Jetzt will ich aber was tun ... Bis später dann, mit lieben Grüßen Günter K. (ENK)

Gast #7891769
Lesenswert?

Klaus schrieb:

Aber du magst es ja maximal unpraktisch. Vielleicht solltest du die Hexadezimal-Tastatur deines Junior durch Kippschalter für die einzelnen Bits und die 7-Segment-Anzeige durch LEDs ersetzen, dann ist es noch unbequemer als es eh schon ist.

Ich hatte mal ueberlegt einen IMSAI 8080 aufzubauen (es gibt/gab einen Bausatz fuer ca. USD 300, mit den schonen Tasten/Schaltern) aber das war mir doch etwas zu aufwaendig. Obwohl ich es sehr fand, dass man den Prozessor-Status (z.b. Stack-OP oder I/O) schoen am Panel sehen konnte.

Der Nachbau-Satz enthielt einen Raspberry Zero als CPU und IO-Prozessor.

Ich haenge ein Photo von dem IMSAI an, da kann man die Bits noch fliessen sehen... (Bild aus der Wikipedia)

#7892007
Lesenswert?

Günter K. schrieb:

höchstens im REM-Bereich als Hinweis, wie sie hardwaremäßig angeschlossen sind.

Damit kann doch die CPU nichts anfangen. Du willst Dir ja Werte von Variablen anzeigen lassen, d.h. Du brauchst im Programm ein Array, was den 7-Segment Code der Ziffern (0..9) enthält. Die Definitionen sorgen dafür, daß die Codes passend erstellt werden, wenn Du die jeweilige Anschlußbelegung hinschreibst. Und zur besseren Lesbarkeit macht man eine Vornullenunterdrückung, d.h. führende Nullen werden als Blank angezeigt.

OP #7892408
Lesenswert?

Klaus (feelfree) schrieb im Beitrag #7890741: 11.06.2025 14:24

Klaus schrieb im Beitrag #7890741: weil

Günter K. schrieb:

Günter K. schrieb:

Es ist für 6 Töne, die (noch) nicht automatisch laufen. Liebe Grüße ...

Klaus schrieb:

Dann zeig es doch schonmal hier, wir sagen dir dann schon, was alles nicht funktionieren wird.

Ja, das ist dann schon mal vorgemrkt :-))) Guten Abend, liebe Grüße Günter K. (ENK)

OP #7892553
Lesenswert?

Peter D. schrieb:

Und zur besseren Lesbarkeit macht man eine Vornullenunterdrückung, d.h. führende Nullen werden als Blank angezeigt.

Hallo Peter D., ja, das verstehe ich, denn unser Zahlensystem, hat ja keine führenden Nullen. Die IBM-Leute, hatten für die Eintragungen die für die Lochkarten waren, ein extra handschriftliches Zeichen, dieses sah aus wie ein "U", nur ganz eckig; - ähnlich wie die 7-Segment "0", ohne den obersten Segment-Balken, - oder ohne die oberen Segmente überhaupt. Das BLANK-Zeichen schrieb man deshalb so für die Lochkarten, um so einen Stellen-Fehler zu verhindern.

Für eine neue 7-Segmentanzeige, werde ich wahrscheinlich externe Multiplexer einsetzen, der nur dann anzeigt, wenn das Programm nicht läuft, bzw. kurz unterbrochen ist, so, dass in der Zeit auch kein Interrupt läuft, es sei denn, es wird für die Matrix, (für den Prozessor) einen berechneten IRQ (ohne NMI) freigegeben, der für Computer berechnet ist. (Achtung, das sind nur lose Gedanken, ich weiß noch nicht, ob das -so- klappt).

  • Interessant ist, dass der Junior-Computer, einen eigenen Assembler hat. An dieser Stelle könnte man sich fragen:
    "Warum, macht es sich der Günter K. damit selber schwer?" - ? Es geht mir darum, mich nur -etwas- in die Zeit hineinzudenken, wie die Leute damals dachten; sie mussten gleichzeitig die Offsets berücksichtigen. Und das ist gar nicht so einfach. Darum will ich mich hier lieber Peter D. für Deinen Beitrag extra bedanken.
    Liebe Grüße Günter K. (ENK)

PS.: Die 360er IBM Computer werden heute noch in neuerer Form gebaut. Gegen Ende der 60er Jahre lernte ich -etwas- über den IBM 360/20. Der damals schon, auch mit 64 BIT Datenbreite rechnete. Interessant: Siehe IBM Vortrag von Wolfgang R. „Zerro Brain“. Z.B.: „Der IBM-Koffer“ 😊

OP #7893065
Lesenswert?

Christoph M. schrieb:

Zeige doch mal einen Screenshot von deinem Excel-Sheet.

Das hatte ich ja schon mal gemacht, das war aber noch kein Assembler, sondern nur ein OP-CODE, mit MNNEMONICS, als Assembler-Liste.

Hallo Christoph M.

vorläufig, habe ich es nur zur Datenspeicherung. Tatsächlich ist beim JC nach dem Ausschalten alles weg. Erst, wenn ich mich mit dem JC mit der Assembler-Sprache und die Assembler-Wirkung beschäftigt gehabt habe, mache ich das -vielleicht- auch in Excel, ich vermute die Möglichkeit -; erst danach, das angebotene Assembler, denn ich will sehen können, was der Computer macht. Liebe Grüße Günter K. (ENK)

OP #7893077
Lesenswert?

Klaus schrieb:

bekommt weder einen 100-Meter-Lauf und erst recht nicht einen Halbmarathon hin.

Hallo Klaus, weder noch, - ich war vom Schulsport freigesprochen worden.

Viel zu spät, als Erwachsener, hatte ich mit dem Fahrrad begonnen, und dann erst eine Rennmaschine mit Stahl-Rahmen. Damit schaffte ich einen guten Durchschnitt; Allerdings sind die Pausen beim Durchschnitt nicht mitgezählt, dann nach der Pause zählt der Zähler neu.

Computerfrage der für einen Mikroprozessor interessant ist: Ein Rollstuhlfahrer hat an seinem Rollstuhl einen Fahrrad-Computer mit einem Speichen-Magnet-Sensor installiert. Das Display soll aber unter einem km/h anzeigen? Ich habe das Problem gelöst. Weißt Du bitte wie? Liebe Grüße Günter K. (ENK) 😊

OP #7893517
Lesenswert?

Thomas W. schrieb im Beitrag #7891769: am: 13.06.2025 16:24

und die 7-Segment-Anzeige durch LEDs ...

... das finde ich gut, - doch Klaus schrieb dazu, (ich sehe nicht wann):

... ersetzen, dann ist es noch unbequemer als es eh schon ist. Lieber Klaus, mal abwarten. - 😊 ))) Liebe Grüße
Günter K. (ENK)

OP #7893534
Lesenswert?

Rbx schrieb im Beitrag #7891277: am 12.06.2025 16:11, auf jeden Fall sehr Lesenswert!!

Meine Güte, Software ist einfach ein Hausmeister in einem großen leeren Hochhaus, der mit einem Plan abends da reingeht, und je nach Plan die verschiedenen Lichter in dem Stockwerk anmacht. Der Plan, könnte man noch spitzfindig sagen, wäre erstmal der Boot-Code.

... ...

https://de.wikipedia.org/wiki/Von-Neumann-Architektur https://de.wikipedia.org/wiki/Harvard-Architektur

Ein Zeiger wäre übrigens ein Lehrling, der vom Hausmeister gezeigt bekommt,

Also werde ich ein: "Zeiger" bzw. der Lehrling sein.

In den 80ern bis 90ern (Windows 95 "blauer Bildschirm".) da hieß es: "Jetzt springt er wieder durch die Prärie", d.h. - der "Zeiger" (Pointer?) hatte den Weg verloren, und trotzdem, sagte man: "Die 'Von-Neumann-Architektur' ist ein Flaschenhals"; - deswegen interessierte es mich früher mal (aber jetzt auch noch), für die Harvard-Architektur (Nur deswegen begeistert!). - Doch inzwischen habe ich irgendwann mal erfahren, dass es Prozessoren gibt, die zwar nur von -außen-: 'Harvard-Architektur' sind und von -innen-: 'Von-Neumann-Architektur' -. (Ist‘s besser so? - Warum?) Inzwischen aber finde ich es schön, wo alles schön der Reihe nach geht. (Bei BASIC konnte man ja mit dem "AUTO"-Befehl, X-Zeilen freilassen). (Das GW-BASIC schien mir besser zu sein als das CBM-BASIC.).

Ein -bisschen- liegt der Klaus da schon richtig,

  • doch es interessiert mich! - !

Leider habe ich kein durchtrainiertes Gehirn, (... wegen 2. Weltkrieg u. schlechte Zeit in meiner Kindheit bis zum 21. .) Ich wiederhole: ... es interessiert mich! Liebe Grüße Günter K. (ENK) 😊

#7893537
Lesenswert?

Günter K. schrieb:

Ich wiederhole: ... es interessiert mich!

Es interessiert dich alles, aber für alles ist (nicht nur) dein Hirn zu klein. Leider fehlt dir die Fähigkeit, unwichtiges von wichtigen zu trennen, deshalb machst du keinerlei Fortschritte.

Ich hab z.B. vor 40 Jahren mal gelernt, was Harvard- bzw. von-Neumann-Architektur ausmacht. Keine Ahnung mehr davon. Könnte es jederzeit nachlesen. Aber ich weiß, dass ich dieses Wissen nicht brauche, deshalb belaste ich nicht mein Hirn damit.

(Firma: Gast) #7893593
Lesenswert?

Falk B. schrieb:

Günter K. schrieb:

Ein Zeiger wäre übrigens ein Lehrling, der vom Hausmeister gezeigt bekommt,

Also werde ich ein: "Zeiger" bzw. der Lehrling sein.

(void*) enk;

1
sketch_jun17d.ino: In function 'void setup()':
2
sketch_jun17d:6:11: error: 'enk' was not declared in this scope
3
    6 |   (void*) enk;
4
      |           ^~~

Dann: Zeiger sollten initialisiert werden! Ins Besondere lokale.

1
void *enk {nullptr}; //C++
#7893817
Lesenswert?

Günter K. schrieb:

habe ich irgendwann mal erfahren, dass es Prozessoren gibt, die zwar nur von -außen-: 'Harvard-Architektur' sind und von -innen-: 'Von-Neumann-Architektur' -. (Ist‘s besser so? - Warum?)

Es ist genau umgekehrt. Programmtechnisch ist es Von-Neumann (gleiche Befehle für Code und Daten), intern werden aber mehrere Busse parallel benutzt (Harvard). Die CPU kann also über den Datenbus das Ergebnis zurück schreiben und gleichzeitig vom Flash schon den nächsten Befehl lesen.

Beim Z80 gab es außerdem noch getrennte Befehle für RAM und IO. Inzwischen wird aber alles einfach in einen großen Adreßraum gemappt (Flash, RAM, IO).

Persönliche Seite #7893876
Lesenswert?

Wenn jemand eine CPU sucht, die nur zum Lernen und für das Verständnis gebaut wurde, dann fällt mir MMIX ein. https://mmix.cs.hm.edu/index.html

Wenn das Grundverständnis da ist, wie ein Prozessor, Maschinencode, Assembler und Hochsprachen funktionieren und miteinander zusammen hängen, dann kann man imho auf einen beliebigen, einigermaßen modernen Prozessor umsteigen.

(Firma: Gast) #7893936
Lesenswert?

Gunnar F. schrieb:

Falk B. schrieb:

Also werde ich ein: "Zeiger" bzw. der Lehrling sein. (void*) enk;

geht das auch in Maschinencode?

Nein! Das ist scheinbar eine C/C++ Pseudoanweisung um einen Funktionsparameter zu ignorieren. Oder reine Fantasie.

ASM kennt keine Funktionen, und damit auch keine Funktionsparameter. Zudem erzeugen solche pseudo Anweisungen sowieso keinen Code.

OP #7894333
Lesenswert?

Arduino F. schrieb:

Funktionen kennen Parameter und Rückgaben. Die Mechanismen dafür sind fest in der Sprache(ABI) verankert.

"The (ABI)Word-Project" für Linux oder Windows in C++? Arduino F. schrieb weiter dazu:

ASM kennt das nicht, da basiert alles dieses auf freiwilligen Vereinbarungen. Was dem Wildwuchs Tür und Tor öffnet.

Kann man da nicht feste definierte Begriffe vereinbaren? Ich weiß, das REM wird abgeschnitten, - aber wenn man es aufbewahrt? Außerdem kann man ja auch eine Textinformation im Programm machen, was dann aber das Programm unnötig verlangsamt, - aber das, könnte man als Muster aufbewahren, um so,
Maschinennah zu bleiben. Geht das? Liebe Grüße Günter K. (ENK) 😊

Hm, hoffendlich, habe ich deutlich genug geschrieben?

#7894350
Lesenswert?

Günter K. schrieb:

Kann man da nicht feste definierte Begriffe vereinbaren? Ich weiß, das REM wird abgeschnitten, - aber wenn man es aufbewahrt?

was für ein Unsinn. Dein REM ist ein Begriff aus Basic. Das hat mit ASM oder Maschinensprache rein gar nichts zu tun. Was willst da Begriffe definieren? Du bist doch derjenige der alle Begrifflichkeiten durcheinander bringt und umdeutet.

OP #7894354
Lesenswert?

Arduino F. schrieb:

... in der Sprache(ABI) verankert.

was ist damit gemeint? - Ist das C++?

ASM kennt das nicht,

Ist mit ASM, ASSEMBLER gemeint? also die 'Funktionen mit Parameter und Rückgaben*'. Also so, wie Du Arduino F. schriebst:

Funktionen kennen Parameter und Rückgaben.

Also dann, dass das der ASM(ASSEMBLER) das *s.o. nicht kennt.

Aber ich kann doch die Ausrechnungen machen, auch wenn die genauen Bezeichnungen für die Funktionen usw. fehlen, so kann man sie doch, anderenorts beschreiben. Liebe Grüße Günter K. (ENK) 😊

OP #7894369
Lesenswert?

Klaus F. schrieb:

Hmmmmm, ja oder nein, oder egal.

Hallo Leute, Ich habe tatsächlich nicht gewusst was "ABI" heißt; darum fragte ich. Ich weiß aber jetzt erst, im Nachhinein, dass es um eine Implementierung geht. - Dieses Wort kenne ich natürlich von der Maschinensprache, den MNEMONICs her. Und ich weiß jetzt, wie mir richtig geantwortet ist, dass es in gewisser Weise, nicht geht. DANKE liebe Leute. - Ich kann kein: "AVR GCC". Liebe Grüße Günter K. (ENK) 😊

#7894378
Lesenswert?

Ich konnte mich irgendwie nie mit ASM anfreunden, das ist mir zu absolut. Habe in der Schule mal die Möglichkeit gehabt, ASM für den Z80 zu lernen, das waren dort die Rechner, u. A. auch der TRS 80 von Radio Shack.

Mir war damals das LNW-Basic lieber, was auf den selben Rechnern lief, weil es konkreter war. Man sagt dem Rechner in Klartext, was er machen soll.

Das OS war damals Newdos 80.

Dann habe ich entgegen aller Commodores den TI99/4A gekauft, also wieder BASIC. Heute programmiere ich gerne mit BASCOM. .Py und C habe ich zwar auch mal ab und an, aber ich hasse die Fingergrätschen {}, und wenn man mal ein } vergisst, dann sucht man sich einen Wolf.

#7894425
Lesenswert?

Thomas S. schrieb:

Heute programmiere ich gerne mit BASCOM.

Ein Bienchen von mir. Jede Programmiersprache ist meilenweit besser, als wie Günter so lange Zeit mit Machinencode rumzukrebsen. Noch dazu, wenn man ihn nicht mal dauerhaft speichern kann.

Thomas S. schrieb:

und wenn man mal ein } vergisst, dann sucht man sich einen Wolf.

Da sind eigentlich die Fehlermeldungen des Compilers recht aussagekräftig und zielführend. Auch sagen Dir oft schon die Editoren, wenn ein Klammernpaar unvollständig ist. Je nach IDE wird nach dem Compile auch gleich der Finger (Cursor) auf die Wunde gelegt.

#7894446
Lesenswert?

Günter K. (enk) 19.06.2025 07:30

Ja, - das ist genau richtig! - Das ist vom CBM dem COMMODORE PET. REM für REMARK - bei Assembler ist es das ";"-Zeichen. Das ist doch die selbe Bedeutung. Und wieso?
Das ist historisch gewachsen. Beim Assembler mussten Zeichen gespart werden. REM sind 3 Zeichen und ';' ist nur ein Zeichen. Außerdem geht es um Bequemlichkeit. Ein Zeichen ist viel kürzer als 3.

Fast jede Programmiersprache leitet ihren Kommentar mit unterschiedlichen Zeichen ein:

Assembler: ;
Basic: REM
C: //
Python : #
Matlab: %
Octave: % oder #

Kennt jemand noch andere?

Gast #7894455
Lesenswert?

Peter D. schrieb:

Thomas S. schrieb:

und wenn man mal ein } vergisst, dann sucht man sich einen Wolf.

Da sind eigentlich die Fehlermeldungen des Compilers recht aussagekräftig und zielführend. Auch sagen Dir oft schon die Editoren, wenn ein Klammernpaar unvollständig ist. Je nach IDE wird nach dem Compile auch gleich der Finger (Cursor) auf die Wunde gelegt.

Die Weiterentwicklung der Entwicklungssysteme ist schon beeindruckend: Ich habe ja meine uVAX (das war 1990 top-of-the-line), VAXSET (Editor, ein Make, ein Profiler und ein Versionssystem) hatte schon so eine Art Code-Completion (Sprach-abhaengig, z.b. bei Pascal wurde sofort ein BEGIN/END-Block aufgemacht), aber es war (verglichen mit 2025) wirklich muehsam. Ab und zu bestrome ich mein VT320, aber zum Arbeiten waere das nichts mehr.

OP #7894466
Lesenswert?

Guten Morgen, liebe Leute, ich wünsche eine schönen Feiertag!

von Falk B. (falk) schrieb am 19.06.2025 07:10, dass Klaus schrieb:

Doch, er hat deutlich geschrieben dass er immer noch nicht den Hauch einer Ahnung hat, wie ein Computer programmiert wird und was die Aufgabe eines Assembler oder Compilers ist.

Das stimmt zwar, nun ein -Hauch- ist schon da, aber ich weiß schon mal, das Assembler zusammenbauen heißt, dass ein Compiler ein Übersetzer ist, denn ich möchte es von unten, - nach oben angehen; denn sonst,
ist der Computer kein " ... einfacher Rechner zum Lernen ..." mehr. Liebe Grüße Günter K. (ENK) 😊

PS.: Der Übersetzer ist mir doch noch zu schwer.

Gast #7894472
Lesenswert?

Christoph M. schrieb:

Fast jede Programmiersprache leitet ihren Kommentar mit unterschiedlichen Zeichen ein:

Assembler: ; Basic: REM C: // Python : # Matlab: % Octave: % oder #

Kennt jemand noch andere?

FORTRAN IV: ein C oder * in Column 1, Rest der Zeile wird ignoriert. Eine VAX-Extenion war dann ein "D" in Column 1: Diese Zeilen wurden nur uebersetzt, wenn der Compiler mit /DEBUG/NoDEBUG ausgerufen wurde.

ISO-Standard COBOL74 wollte ein * oder / in Column 7 als Kommentar-Zeile, die ersten sechs Stellen waren aber die Sequenz-Number (000100) ...

#7894517
Lesenswert?

Peter D. schrieb:

und wenn man mal ein } vergisst, dann sucht man sich einen Wolf.

Da sind eigentlich die Fehlermeldungen des Compilers recht aussagekräftig und zielführend.

Keine Sekunde! Gerade bei C kann man mit einer fehlenden, schließenden Klammer maximal verwirrende Fehlermeldungen erzeugen! Hab ich schon mehrfach erleben dürfen.

Auch sagen Dir oft schon die Editoren, wenn ein Klammernpaar unvollständig ist.

Zeig mir mal eine, die das für C macht.

OP #7894547
Lesenswert?

Roland F. schrieb:

Hallo, Christoph M. schrieb:

Assembler: ; Basic: REM C: // Python : # Matlab: % Octave: % oder #

Kennt jemand noch andere?

Pascal: ( ) oder { } Borland Delphi: ( ) oder { } oder // Forth: (_ )

IBM ASSEMBLER: C' ... '

sollte nicht fehlen, weil es den 360er IBM noch gibt. Vermutlich gibt es noch viele mehr, - oder? Wie ist es bei LIPS? LG Günter K

Gast #7894562
Lesenswert?

Günter K. schrieb:

Wie ist es bei LIPS?

LIPS ist LISP, und da ist ;; der Comment-delimiter.

Um das ein wenig abzukuerzen moechte ich auf die Webseite https://rosettacode.org/wiki/Rosetta_Code hinweisen. Es ist eine Sammlung von Standardalgorithmen (z.b. Sortieren, kgV, auch Hello_world) in vielen Programmiersprachen.

Die Standardversion fuer "Hello World" enthaelt auch mehrere Assembler-Version fuer verschiedene Architekturen:

https://rosettacode.org/wiki/Hello_world/Text

Die heutige (praxisbezogene) Version (Zeige "Hello World" auf einem Browser) findet man

https://rosettacode.org/wiki/Hello_world/Web_server

Viel Spass!

OP #7894601
Lesenswert?

Thomas W. schrieb:

Die Standardversion fuer "Hello World" enthaelt auch mehrere Assembler-Version fuer verschiedene Architekturen:

Ach Du meine Guete, was koennt Ihr viele Programmier-Sprachen und wo moeglich noch Fremd-Sprache/n dazu! Und ich kann noch nicht einmal -eine- Programmier-Sprache und keine Fremd-Sprache dazu! Im Alter von 48 begann ich mit ENGLISCH. - . Und im September als ich 49 Jahre alt war, begann der Tinnitus(!), der dann immer lauter wurde.

Von LISP hatte ich nur gehoert, weil ich ein Buch von Joseph Weizenbaum gelesen hatte.

(Mit 21 begann mein Leben, ging von zuhause weg ins Jugendwohnheim.) Dir Wolfgang R., DANKE noch mal fuer die schoene LISTE, und moechte auf einfachem Wege weiterkommen. Weitere Fragen, kommen noch dazu. Liebe Gruesse Guenter :-)

PS.: Auf "Hello World" komme ich zurueck.

#7894837
Lesenswert?

Thomas S. schrieb:

Ich konnte mich irgendwie nie mit ASM anfreunden, das ist mir zu absolut.

Das ist der Grund, weshalb ich ASM so bevorzuge: Ich weiß jederzeit genau, was passiert.

Christoph M. schrieb:

Kennt jemand noch andere?

In Brainfuck kann man seinen Kommentar einfach in den Quelltext schreiben. Man darf nur keinen der 8 Befehle benutzen: > < + − . , [ ]

https://de.wikipedia.org/wiki/Brainfuck

Gruß Jobst

#7894856
Lesenswert?

Günter schrieb

Ich machte das nur zur Übersicht, und das ich viele Kommentare in den REM-Bereich hineinschreiben kann.
Bei früheren Computern wie z.B. den ZX81 hat man den REM-Bereich tatsächlich zum Speichern von Assemblercode benutzt. Das der REM Bereich für Kommentare gedacht ist, kann man dort auch beliebig andere Zeichen unterbringen, die als Assemblercode vom Computer interpretiert werden können.
Der Ablauf ist dabei wie folgt: Man mache einen Kommentar mit z.B. 100 Zeichen. Dann nutzt man in Basic den Befehl 'poke' in BASIC um beliebige 8Bit Zahlen in diesen Bereich zu schreiben. Danach kann man dann aus BASIC heraus das Programm starten.

#7894865
Lesenswert?

Moin,

Christoph M. schrieb:

Bei früheren Computern wie z.B. den ZX81 hat man den REM-Bereich tatsächlich zum Speichern von Assemblercode benutzt.

Das erste Byte hinter dem REM Token in der ersten Basiczeile stand immer an der Adresse 16514. Ab da konnte es dann "losgehen". Erstaunlicherweise bleibt mir sowas im Kopf haengen, obwohl ich's schon echt lange nicht mehr gebraucht hatte. Na, damit bin ich dann sicher der Held im Altersheim in ein paar Jahren :-)

Gruss WK

#7894868
Lesenswert?

Günter K. schrieb:

PS.: Der Übersetzer ist mir doch noch zu schwer.

Stimmt der ist viel schwerer als die Opcodes einzutippen. Komisch nur das die meisten eine Hochsprache bevorzugen und das Erstellen des Maschinenprogrammes (die Opcodes) dem Übersetzer überlassen. Wenn man dann wirklich noch wissen will was da auf unterster Ebene abläuft, kann man sich ja das Übersetzungsergebnis anschauen. Die meisten IDE's können auch dies anzeigen.

Aber fummel nur weiter rum wie bisher, der Erkenntnisgewinn wird sich aber in Grenzen halten, mal abgesehen davon, daß Du eigentlich nur auf der Stelle trittst.

OP #7894922
Lesenswert?

Christoph M. schrieb:

Der Ablauf ist dabei wie folgt: Man mache einen Kommentar mit z.B. 100 Zeichen. Dann nutzt man in Basic den Befehl 'poke' in BASIC um beliebige 8Bit Zahlen in diesen Bereich zu schreiben. Danach kann man dann aus BASIC heraus das Programm starten.

Das klingt gut! DANKESCHÖN! Inzwischen habe ich das ganz kleine Keyboard, welches ich löten wollte, auf einem Breadboard von Arduino gesteckt. Die Tasten passen genau, so nebeneinander, dass das Breadboard gefüllt ist.
Morgen mache ich weiter. Liebe Grüße Günter K. (ENK) :-)

PS.: Natürlich werde ich später dazu übergehen, nur die MNEMONICs einzugeben, - natürlich, darf der OP-Code nicht fehlen.

#7894926
Lesenswert?

Christoph M. schrieb:

Der Ablauf ist dabei wie folgt: Man mache einen Kommentar mit z.B. 100 Zeichen. Dann nutzt man in Basic den Befehl 'poke' in BASIC um beliebige 8Bit Zahlen in diesen Bereich zu schreiben. Danach kann man dann aus BASIC heraus das Programm starten.

Solchen Murks habe ich nicht ein einziges Mal gesehen.

Zumindest auf dem C64 war die übliche Methode, dass man an den Anfang des BASIC-Speichers nur eine einzige BASIC-Zeile mit SYS 20xx gepackt hat, womit dann der unmittelbar dahinter liegende Maschinencode aufgerufen wurde.

Wenn man den Code unbedingt doppelt im Speicher haben wollte (1x im BASIC-Code, 1x woanders), ging das ganz gut mit DATA-Zeilen, aber auch da hat man sinnvollerweise freien Speicher ausserhalb des BASIC-Codes mit POKEs befüllt.

#7894936
Lesenswert?

Christoph M. schrieb:

Der Ablauf ist dabei wie folgt: Man mache einen Kommentar mit z.B. 100 Zeichen. Dann nutzt man in Basic den Befehl 'poke' in BASIC um beliebige 8Bit Zahlen in diesen Bereich zu schreiben. Danach kann man dann aus BASIC heraus das Programm starten. Hmmm (hmmm) 20.06.2025 01:34 Solchen Murks habe ich nicht ein einziges Mal gesehen.

Das liegt daran, dass du keine Ahnung vom ZX81 hast.

OP #7895006
Lesenswert?

Hallo liebe Leute,

Hmmm schrieb:

Christoph M. schrieb:

Der Ablauf ist dabei wie folgt: Man mache einen Kommentar mit z.B. 100 Zeichen. Dann nutzt man in Basic ... Danach kann man dann aus BASIC heraus das Programm starten.

Das Meckern lasse ich mal draus. - Hmmm Du hast trotzden gut geantwortet, Du schriebst:

Zumindest auf dem C64 war die übliche Methode, dass man an den Anfang des BASIC-Speichers nur eine einzige BASIC-Zeile mit SYS 20xx gepackt hat, womit dann der unmittelbar dahinter liegende Maschinencode aufgerufen wurde. Wenn man den Code ... (1x im ... BASIC-Code, 1x woanders), ging das ganz gut mit DATA-Zeilen, aber auch da hat man sinnvollerweise freien Speicher ausserhalb des BASIC-Codes mit POKEs befüllt.

Christoph M. schrieb:

Der Ablauf ist dabei wie folgt: Man mache einen Kommentar mit z.B. 100 Zeichen. Dann nutzt man in Basic den Befehl 'poke' in BASIC um beliebige 8Bit Zahlen in diesen Bereich zu schreiben. Danach kann man dann aus BASIC heraus das Programm starten. Günter K. schreibt: Das ist doch gut. - Leider muss ich's wiederholen - schade:

Christoph M. schrieb:

20.06.2025 01:34

Solchen Murks habe ich nicht ein einziges Mal gesehen. Das liegt daran, dass du keine Ahnung vom ZX81 hast.

Die Hauptsache ist, man kommt weiter. Es kommt ja darauf an man was die Maschine macht. - Mit ZX81 habe ich nicht kennen gelernt. Liebe Grüße Günter K.

#7895007
Lesenswert?

Christoph M. schrieb:

Ähnlich viel wie Du Ahnung vom korrekten Zitieren hast? Wo liegt das Problem?

Sorry, die mobile Ansicht auf meinem Handy scheint kaputt zu sein. Im Desktop-Modus sieht alles normal aus.

Edit: Klasse, und das hochladen klappt auch super, obwohl sich der Beitrag nach der Dateiauswahl nicht veränderte....

Ich sag nix mehr...

OP #7895020
Lesenswert?

Günter K. schrieb:

Christoph M. zitierte:

20.06.2025 01:34

Solchen Murks habe ich nicht ein einziges Mal gesehen.

Günter K. schrieb im Beitrag #7895006: dass Christoph M. ihm von Hmmm (hmmm) am 20.06.2025 01:34 antwortete:

Das liegt daran, dass du keine Ahnung vom ZX81 hast. Ja, ich weiß nicht wieviel Hmmm (hmmm) versteht, wovon ich ja gar nichts weiß. Liebe Grüße Günter K.

Gast #7895025
Lesenswert?

Christoph M. schrieb:

Ähnlich viel wie Du Ahnung vom korrekten Zitieren hast?

Wo liegt das Problem?

Das Du den Link zum Beitrag auf den Du Dich beziehst geloescht hast. Der Leser kann den Kontext nicht mehr einordnen und muss (wenn er will) den Ursprungstext suchen.

Ich ignoriere solche Beitraege mittlerweile (verschwendete Lebenszeit). Schade bei z.B. Christoph M. (mchris), aber der Wurm muss dem Fisch schmecken.

#7895070
Lesenswert?

Christoph M. schrieb:

Wo liegt das Problem?

Thomas W. (datenreisender) 20.06.2025 08:45

Das Du den Link zum Beitrag auf den Du Dich beziehst geloescht hast.
Normalerweise gebe ich keinen Link zum Beitrag an, wenn der einen Post weiter vorne steht. Das finde ich dann zu viel Text. Aber vielleicht gibt es Probleme mit der Darstellung auf dem Smartphone. Ich sehe das Ganze auf dem großen Computer-Bildschirm und da könnte die Formatierung eine andere sein.

#7895149
Lesenswert?

Christoph M. schrieb:

Das liegt daran, dass du keine Ahnung vom ZX81 hast.

Stimmt, ich hatte nur am Rande mal mit dem ZX Spectrum zu tun.

Aber warum sollte man umständlich in eine REM-Zeile POKEn statt in freien Speicher woanders? Oder hast Du danach den POKE-Teil entfernt und mit diesem Trick das BASIC-Listing mitsamt fertigem Maschinencode gespeichert?

#7895156
Lesenswert?

Hmmm schrieb:

Aber warum sollte man umständlich in eine REM-Zeile POKEn statt in freien Speicher woanders? Oder hast Du danach den POKE-Teil entfernt und mit diesem Trick das BASIC-Listing mitsamt fertigem Maschinencode gespeichert?

Exakt. Wenn man das Maschinenprogramm im BASIC-Bereich ablegt, kann man es mit den normalen LOAD und SAVE-Befehlen auf Kassette speichern und zurückladen. Speicherauszüge direkt abspeichern oder einlesen war beim ZX81 nicht vorgesehen.

#7895160
Lesenswert?

Moin,

Hmmm schrieb:

Aber warum sollte man umständlich in eine REM-Zeile POKEn statt in freien Speicher woanders?

Weil der geniale Hmmm damals keine bessere Idee auf den 2 duennpfiffgelben Mittelseiten der Elrad namens "computing today" veroeffentlicht hatte. Und weils im ZX81 ueblicherweise keinen "freien Speicher" gab. War ja kurz nachm Krieg, wir hatten ja nix.

Das ging recht hurtig aufm ZX81: Rechnernetzteil in die Steckdose, folgendes eintippen:

1
10 REM XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
2
20 FOR N=16514 to 16555
3
30 INPUT I
4
40 POKE N,I
5
50 NEXT N

Dann RUN, dann den vorher nach ENK'scher Manier von Hand zusammengekloeppelten Maschinencode reintippern. Dann mittels z.b. RAND USR 16514 starten. Rechner stuerzt natuerlich ab. Dann Rechnernetzteil ausstoepseln, einstoepseln, Fehler beheben, und wieder tippern anfangen. Das eintippen des BASIC Programms ging schneller, als die Cassette zurueckzuspulen, den Anfang finden, etc. bla.

#7895173
Lesenswert?

Hallo, Christoph M. schrieb im Beitrag #7895070:

Das finde ich dann zu viel Text.

Grundsätzlich finde ich es gut wenn man unnötigen Test vermeidet, aber genau in diesem Fall ist das für alle Leser absolut kontraproduktiv. Und das bisschen Test zusätzlich ist doch nun wirklich kein Problem, oder?

rhf

#7895181
Lesenswert?

Dergute W. schrieb:

Weil der geniale Hmmm damals keine bessere Idee auf den 2 duennpfiffgelben Mittelseiten der Elrad namens "computing today" veroeffentlicht hatte. Und weils im ZX81 ueblicherweise keinen "freien Speicher" gab.

Auch da hätte wohl nichts dagegen gesprochen, den Maschinencode hinter dem BASIC-Code abzulegen, damals hat das noch keine PMMU verhindert.

Aber die Antwort von Soul hat meine Frage plausibel und vor allem sachlich beantwortet: Weil sich der Code in den REM-Zeilen danach mit SAVE speichern liess.

Auf dem C64 waren wir da geradezu verwöhnt.

#7895185
Lesenswert?

Moin,

Hmmm schrieb:

Auch da hätte wohl nichts dagegen gesprochen, den Maschinencode hinter dem BASIC-Code abzulegen, damals hat das noch keine PMMU verhindert.

Dagegen haette am meisten gesprochen, dass hinter dem BASIC-Programm iirc der "Bildschirmspeicher" war. Also das, was auf dem TV erschien. Und da durften keinesfalls irgendwelche Bytes mit gesetztem Bit6 sein, sonst sind schlimme Sachen passiert (also wieder Stecker raus, stecker rein, weiter gehts)...

Gruss WK

#7895188
Lesenswert?

Dergute W. schrieb:

1
10 REM XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
2
> 20 FOR N=16514 to 16555
3
> 30 INPUT I
4
> 40 POKE N,I
5
> 50 NEXT N

Dann RUN, dann den vorher nach ENK'scher Manier von Hand zusammengekloeppelten Maschinencode reintippern. Dann mittels z.b. RAND USR 16514 starten. Rechner stuerzt natuerlich ab. Dann Rechnernetzteil ausstoepseln, einstoepseln, Fehler beheben, und wieder tippern anfangen.

Wenn es dann doch irgendwann lief, hat man die Zeilen 20ff natürlich gelöscht und da das Hauptprogramm untergebracht.

Hmmm schrieb:

Auch da hätte wohl nichts dagegen gesprochen, den Maschinencode hinter dem BASIC-Code abzulegen, damals hat das noch keine PMMU verhindert.

Das Maschinenprogramm darf an beliebiger Stelle im BASIC-Speicher stehen. Die erste Zeile ist halt praktischer da leichter wiederzufinden. Der Rest rutscht ja jedesmal wenn man was einfügt oder ändert.

#7895192
Lesenswert?

Dergute W. schrieb:

Dagegen haette am meisten gesprochen, dass hinter dem BASIC-Programm iirc der "Bildschirmspeicher" war

Ich meinte schon im BASIC-Speicherbereich, aber eben im freien Teil davon statt innerhalb des bestehenden Codes.

Oder klebte der Bildschirmspeicher immer direkt hinter dem BASIC-Code und wurde mit jeder neuen Codezeile verschoben? Dann war das Sinclair-Zeug noch skurriler, als ich es in Erinnerung habe.

Gast #7895202
Lesenswert?

Hmmm schrieb:

Dergute W. schrieb:

Dagegen haette am meisten gesprochen, dass hinter dem BASIC-Programm iirc der "Bildschirmspeicher" war

Ich meinte schon im BASIC-Speicherbereich, aber eben im freien Teil davon statt innerhalb des bestehenden Codes.

Bei den Basic-Interpreter der damaligen Zeit (ich bin ein Zeitzeuge...) war das Programm (die Schluesselworte wurden tokenisiert und z.b. PRINT war nur ein Byte) am "oberen" Speicherbereich (ROM ging bei der Z80 bei 0x0000 los, dann Basic-Interpreter, dann Video-RAM) und erst dann begann der freie Programmspeicher im knappen RAM.

Wenn Du das Programm startete, wurden die Variablen beim "Ende des physikalischen Speichers" absteigend angelegt bis Ende des Programmtextes erreicht war: Es konnte Dir also passieren, dass mitten im Programm auf einmal "Out of Memory" angezeigt wurde. Verschaerft wurde das nur noch durch die Speicherverwaltung von Strings, z.B.

1
A = ""

legte den String an einem Punkt x ab, wenn Du spaeter

1
A = A + "jetzt geht es los" + A

ausfuehrst, musste der Rechner schon 1975 eine Garbage-Collection durchfuehren.

Basic (zumindest die Home-Computer-Versionen) hatte zwar Arrays, aber keine keine Records (VAX-Basic hatte das). Ich weiss es nicht mehr, ob es irgendeine dynamische Speicherverwaltung bei Basic gab.

#7895220
Lesenswert?

Thomas W. schrieb:

Bei den Basic-Interpreter der damaligen Zeit (ich bin ein Zeitzeuge...)

Ich auch, aber eben C64-Veteran ohne grossen Kontakt zur Sinclair-Welt, deshalb meine Detailfragen dazu.

Auf dem C64 war es wie gesagt einfach, es gab einen festen BASIC-Programmspeicher von 0x0801 bis 0x9fff, die bekannten 38911 Bytes.

Diesen Bereich konnte man nach Lust und Laune nutzen. Wenn der BASIC-Code sauber terminiert war (ich glaube, es war 2x 0x00), war dem Interpreter alles dahinter egal. Mit einem z.B. 15 Bytes grossen "Loader" hatte man also von 0x0810 bis 0x9fff Platz, und praktischerweise hat LOAD standardmässig alles ab 0x0801 abgelegt, was das File hergab, unabhängig vom Inhalt.

Meine Frage ist jetzt, was auf dem ZX81 dagegen sprach, auch einfach in den freien Speicher hinter dem BASIC-Code zu POKEn. Ein "mitwandernder" Bildschirmspeicher, der immer hinter der letzten BASIC-Zeile klebt und diesen Speicher belegt, wäre natürlich ein Grund.

Die von Soul bestätigte Möglichkeit, den in REM-Zeilen verpackten Code mit SAVE zu speichern, wäre wiederum nicht nötig, wenn man ihn beim Start ohnehin mit einer POKE-Schleife neu erzeugt.

#7895246
Lesenswert?

Klaus schrieb:

Ich glaube Du hast die Poke-Schleife nicht richtig erfasst: Da werden keine zuvor abgespeicherten, sondern interaktiv abgefragte Daten "gepoket".

Christoph sprach schon von dort abgelegtem Code, aber die Frage, warum man auf dem ZX81 dafür einen REM-Platzhalter braucht, statt die Daten hinter dem vom BASIC-Code genutzten Speicher abzulegen, stellt sich unabhängig davon.

Nach dem, was ich zum ZX81-Bildschirmspeicher ("DFILE") finde, war dessen Startadresse allerdings tatsächlich dynamisch. Das kann einem natürlich wirklich den gefahrlos nutzbaren Bereich auf den BASIC-Code beschränken und somit den REM-Zeilen-Trick notwendig machen.

Sinclair war schon recht speziell, auf dem ZX Spectrum fand ich die diversen verschiedenen Cursor-Arten gewöhnungsbedürftig. Auch wenn sie angesichts der Standard-Gummitastatur wohl ihre Berechtigung hatten.

Gast #7895247
Lesenswert?

Hmmm schrieb:

Thomas W. schrieb:

Bei den Basic-Interpreter der damaligen Zeit (ich bin ein Zeitzeuge...)

Ich auch, aber eben C64-Veteran ohne grossen Kontakt zur Sinclair-Welt, deshalb meine Detailfragen dazu.

Auf dem C64 war es wie gesagt einfach, es gab einen festen BASIC-Programmspeicher von 0x0801 bis 0x9fff, die bekannten 38911 Bytes.

Was der ZX81 offensichtlich nicht konnte: Speicher reservieren so dass man eine wohldefinierte Adresse fuer das Laden eines Binaries hatte. Die erste Zeile Deines Programmes, die war wohldefiniert.

Eben beim Googlen habe ich dieses schoene Stueck Geschichte gefunden: https://github.com/andrivet/zx81-typescript-emulator

Herrlich, was es jetzt alles gibt.

#7895258
Lesenswert?

Thomas W. schrieb:

Was der ZX81 offensichtlich nicht konnte: Speicher reservieren

So einen Luxus hatte damals wohl keiner der Home-Computer. Auf dem C64 hätten weitere BASIC-Zeilen natürlich auch den dahinterliegenden Maschinencode überschrieben, weil das für den Interpreter nur ungenutzter Speicher war.

Thomas W. schrieb:

Herrlich, was es jetzt alles gibt.

Ja, und Systeme, die sich damals unfassbar schnell anfühlten, emuliert man heute bequem auf dem Smartphone oder im Browser.

Gast #7895266
Lesenswert?

Hmmm schrieb:

Thomas W. schrieb:

Was der ZX81 offensichtlich nicht konnte: Speicher reservieren

So einen Luxus hatte damals wohl keiner der Home-Computer. Auf dem C64 hätten weitere BASIC-Zeilen natürlich auch den dahinterliegenden Maschinencode überschrieben, weil das für den Interpreter nur ungenutzter Speicher war.

Der TRS-80 Model I hatte eine Abfrage "mem Size=?" so dass Speicherbereich reserviert werden konnte. Ebenso MBASIC (von MicroSoft) unter CP/M. Unter DOS konnte man ja schon Speicher reservieren (fuer die beruehmte Load and Stay Resident-Programme).

#7895273
Lesenswert?

Moin,

Thomas W. schrieb:

Eben beim Googlen habe ich dieses schoene Stueck Geschichte gefunden: https://github.com/andrivet/zx81-typescript-emulator

So wie ich das sehe, gibts ja da auch scans der Originalhandbuecher. Wenns wirklich interessiert, da halt reingucken. Im ZX81 Basic Programming.pdf gibts gegen Ende sehr ausfuehrliche Info, wie der Speicher/Basic-gedoens intern organisiert ist. Weil der ZX81 aber auch mit nur 1kByte RAM erstaunlich gut funktioniert, gibt's da halt ein paar Besonderheiten, wie wandernden Bildschirmspeicher, der auch noch in der Groesse nicht konstant sein muss und bei leerem Bildschirm auf 25 Byte oder so zusammenschnurren kann. Das mit dem Maschinencode in der ersten REM-Zeile hatte gute Gruende und nur weil man die noch nie gehoert hat, und's bei anderen Rechnern anders ging, muss das nicht komplett Kacke sein. In der c't gab's auch mal einen Artikel, der die Funktion der Bildschrimausgabe detailliert beschrieben hat; das ist hoechst tricky geloest, und dass <CR> im ZX81-Code und die Z80 "halt" Instruktion beide dezimal 118 sind, ist kein Zufall... </opa-erzaehlt-vom-krieg>

Gruss WK

#7895289
Lesenswert?

Thomas W. schrieb:

Was der ZX81 offensichtlich nicht konnte: Speicher reservieren so dass man eine wohldefinierte Adresse fuer das Laden eines Binaries hatte. Die erste Zeile Deines Programmes, die war wohldefiniert.

Der ZX81 hatte eine Systemvariable namens MEMTOP. Die enthielt die oberste nutzbare Adresse plus 1. Wenn man die verkleinerte, konnte man Platz schaffen für Maschinencode.

Aber man konnte diesen Maschinencode nicht speichern. Zumindest nicht mit Bordmitteln auf Cassette. D.h. der User musste ein BASIC-Programm laden, welches den Code da oben hin POKEd, dann NEW eintippen und ein weiteres Programm laden, welches den Code nutzt. Die Methode mit dem eingebetteten Code war da praktischer.

#7895333
Lesenswert?

Soul E. schrieb:

Der ZX81 hatte eine Systemvariable namens MEMTOP. Die enthielt die oberste nutzbare Adresse plus 1. Wenn man die verkleinerte, konnte man Platz schaffen für Maschinencode.

Demnach war die Kombination aus REM-Platzhalter und POKE-Schleife zur Laufzeit (mit verdoppeltem Speicherbedarf) tatsächlich unnötig.

Code hat man am besten in erstere gefüllt und danach (ohne die ggf. dafür verwendete POKE-Schleife) gespeichert, und zur Laufzeit erzeugte Daten konnte man auch hinter MEMTOP packen, um nicht die REM-Platzhalter mitladen zu müssen.

Soul E. schrieb:

D.h. der User musste ein BASIC-Programm laden, welches den Code da oben hin POKEd, dann NEW eintippen und ein weiteres Programm laden, welches den Code nutzt.

Konnte man aus dem BASIC-Code nicht direkt nach dem POKEn mit RAND USR den dort abgelegten Code aufrufen?

#7895340
Lesenswert?

Hmmm schrieb:

Demnach war die Kombination aus REM-Platzhalter und POKE-Schleife zur Laufzeit (mit verdoppeltem Speicherbedarf) tatsächlich unnötig.

Niemand hat die POKE-Schleife zur Laufzeit genutzt. Die wurde verwendet, um den Code einzutippen und hat ggf eine Prüfsumme berechnet. Danach wurde sie gelöscht und durch das eigentliche Programm ersetzt.

Nicht vergessen: der ZX81 konnte nur einen Befehl pro Zeile und hatte kein READ/RESTORE/DATA. Man müsste POKEs mit Konstanten also alle aussschreiben. Das wären dann 10 Bytes um ein Byte OpCode abzulegen.

Code hat man am besten in erstere gefüllt und danach (ohne die ggf. dafür verwendete POKE-Schleife) gespeichert, und zur Laufzeit erzeugte Daten konnte man auch hinter MEMTOP packen, um nicht die REM-Platzhalter mitladen zu müssen.

Exakt.

Soul E. schrieb:

D.h. der User musste ein BASIC-Programm laden, welches den Code da oben hin POKEd, dann NEW eintippen und ein weiteres Programm laden, welches den Code nutzt.

Konnte man aus dem BASIC-Code nicht direkt nach dem POKEn mit RAND USR den dort abgelegten Code aufrufen?

Natürlich ging das, aber das POKE-Programm stand dann noch im BASIC-Speicher. "10 POKE 48192,55" braucht 11 Bytes um ein Byte abzulegen. Daher hat man das üblicherweise gelöscht und dann die resident geladene Routine genutzt.

Nach dem Ändern von MEMTOP war ein "NEW" erforderlich, um die anderen Systemvariablen anzupassen.

#7895351
Lesenswert?

Gunnar F. schrieb:

geht das auch in Maschinencode?

Nicht ganz so Begrifflich schön wie in C aber man stelle sich einen Instruction-Pointer vor, der auf den Start zeigt, meistens bei "0". (oder sowas wie mov bp,sp)

Arduino F. schrieb:

ASM kennt keine Funktionen, und damit auch keine Funktionsparameter.

Na, das ist auch Unfug, weil sich das auf C bezieht oder andere Hochsprachen. Man erstellt sich stattdessen ein "Modul" wie man so schön sagt, ist aber rein funktionell nichts anderes.

Ein weiterer Unterschied wäre, dass bei Asm wirklich nur die Funktion im Hexeditor steht, und nicht auch noch ein halber Roman hintendran mit fragwürdigen Inhalten.

Was man sich merken kann, und das ist auch wichtig, das ist, dass Assembler, bzw. die Assembler selber nicht gut standardisiert sind - einmal das nicht, und dass zum anderen die CPUs auch verschieden sein können, und damit die Hardware und damit auch die Hardwareprogrammierung. Hochsprachen wie C erleichtern den Umgang mit vielen verschiedenen Mikrocontrollern sehr.

#7895388
Lesenswert?

Günter K. schrieb:

Lieber Hmmm, was ist eine: "PMMU"?

Eine Paged Memory Management Unit. Die kümmert sich unter anderem darum, dass Prozesse nur auf Speicherbereiche zugreifen können, bei denen das gewollt ist.

Sowas hatten die damaligen Computer nicht, jeglicher auf der CPU laufende Code konnte immer auf alles (Speicher, Peripheriebausteine etc.) zugreifen.

OP #7895887
Lesenswert?

Hallo liebe Leute,

... Wenn ein Macro mehr als ein Argument erwartet dann können die Argumente durch ein (,) getrennt angegeben werden wie bei anderen Assembler Befehlen üblich.

Definieren wir ein weiteres Macro in unserer my_lib.INC:

%macro sleep 1 mov rcx, %1 _wait_loop nop dec rcx jnz _wait_loop %endmacro

So I go sleep Gute Nacht liebe Leute, liebe Grüße Günter K. (ENK) 😊

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

Günter K. schrieb:

Mit dem JC

Gute Idee - arbeite die Elektor-Bücher durch - kann ich nur immer wiederholen!

Günter K. schrieb:

Danach ältere 8086, - nebenbei, ein bisschen Assembler (als XP) unter DOS

Lass es! Das bringt nix. Mach die ganz einfachen Sachen Schritt für Schritt! Der Junior ist ausreichend dafür. Und den hast du ja vor dir liegen.

OP #7899179
Lesenswert?

Hallo liebe Leute,

für das kommende Musikprogramm für den JC, habe ich auf einem Bred-Board vom Arduino 6 Tasten gesteckt, denn im Lied kommen 6 verschiedene Töne vor. Hier eine speziell gedachte Anordnung der Tastatur für - ein bestimmtes Lied.

3 schwarze Tasten und 3 weiße Tasten; zur Orientierung zu den Violine-Noten. Die schwarzen Tasten liegen auf der Linie und die weißen Tasten liegen zwischen den Linien. Allerdings beziehen sie sich nur auf die mittleren 3 Linien, denn die unteren Noten z.B.: die für die E-Linie und die Oberen z.B.: die für F-Linie, kommen nicht als Note vor.

Im Noten-Bild für die Noten, kommen natürlich alle 5 Linien vor. Folgende Töne kommen von unten nach oben vor, beginnend bei G4: G4(s), A4(w), B4(s), C5(w), D5(s) und E5(w). (s)=schwarz, (w)=weiß, angeordnet. - B = International, ist gleich: H = Deutsch. Die oberste und unterste Linie, - muss man sich dazu-denken.

Das Programm ist noch nicht eingegeben. Das Lied wird manuell eingegeben werden. - Noch, ist es noch nicht so weit. Viele liebe Grüße Günter K. (ENK) 😊

OP #7899196
Lesenswert?

Hallo liebe Leute, Hallo lieber Wolfgang R. Wolfgang R. schrieb im Beitrag #7898755:

Lass es! Das bringt nix. Mach die ganz einfachen Sachen Schritt für Schritt! Der Junior ist ausreichend dafür. Und den hast du ja vor dir liegen.

DANKESCHÖN für den Rat; ok, den habe ich ja auch noch nicht durch. Liebe Grüße Günter K. (ENK) :-)

#7899325
Lesenswert?

Günter K. schrieb:

Nachhilfe im Notenlesen/schreiben wäre auch nicht verkehrt...

Wieso?

Günter K. schrieb:

Die schwarzen Tasten liegen auf der Linie und die weißen Tasten liegen zwischen den Linien. G4(s), A4(w), B4(s), C5(w), D5(s) und E5(w). (s)=schwarz,

Du machst dir die Welt, wie sie dir gefällt.

OP #7899511
Lesenswert?

Hallo liebe Leute,

Günter K. schrieb:

Hier eine speziell gedachte Anordnung der Tastatur für - ein bestimmtes Lied.

-Es ist keine übliche Klaviatur.-

Es sind nur 6 Tasten (sonst nichts), die ich an den Junior-Computer anschließen werde. Wie ich das -richtig- mache, ist natürlich -mir-, überlassen; wie gesagt: für - ein bestimmtes Lied. 😊)) Günter K. schrieb im Beitrag #7899179:

Im Noten-Bild für die Noten, kommen natürlich alle 5 Linien vor.

Also dem Notenbild des Liedes, kommen nicht mehr als 6 verschiedene Töne vor, und diese werden dann mit dieser Tastatur gespielt, mehr nicht. Aber mehr, als: Ein Pieps. Denn Du Klaus schriebst im Beitrag #7899193:

Aber egal, der JC wird sowieso nie auch nur einen Pieps ausgeben. Folgende Töne kommen -nur- in dem Lied, von unten nach oben vor, denn ich schrieb:
Folgende Töne kommen von unten nach oben vor, beginnend bei G4: G4(s), A4(w), B4(s), C5(w), D5(s) und E5(w). (s)=schwarz, (w)=weiß, angeordnet. - B = International, ist gleich: H = Deutsch. Die oberste und unterste Linie, - muss man sich dazu-denken.

-Das bestimmte Lied, hat u.a. nur 6 Töne.- Diese Tasten haben nur diese Farbe; siehe oben.

Die dann evtl. in der Melodie wiederholt gespielt werden (oder nicht). Auch über die Tonlänge, habe ich keine Angaben gemacht. Es sind nur 6 Tasten, die ein bestimmtes Lied, erklingen lassen sollen. Liebe Grüße Günter K. ;-)

OP #7899614
Lesenswert?

Hallo liebe Leute, ein schöner Sonntag sei gewünscht.

Klaus schrieb:

In deinem Kopf ganz sicher, aber niemals in der Realität.

Ja, - noch in meinen Kopf - und erst danach in Realität. denn ich habe das Programm noch nicht geschrieben. Später danach, kommt die Klaviatur aus dem Junior Buch 2 dran. Liebe Grüße Günter K. (ENK) 😊

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren