Arduino F. schrieb: > Wobei es alleine von MOV ca 1/2 Dutzend Varianten gibt, 6502 hat exakt null MOV-Instruktionen. Falsch abgebogen?
Manchmal gibt es wohl Zwänge. Bei Zilogs berüchtigten Load-Befehlen, die eigentlich Store-Befehle sind, habe ich das Namensrecht im Verdacht.
:
Bearbeitet durch User
Harald K. schrieb: > 6502 hat exakt null MOV-Instruktionen. Dafür aber "transfer". Ist das besser? :)
(prx) A. K. schrieb: > Ist das besser? Kommt auf das Mindset der das verdauenden Person an. Die sechs "transfer"-Befehle schreiben den Inhalt eines Registers in ein anderes (Y nach A oder umgekehrt, X nach A oder umgekehrt, X nach S oder umgekehrt). Hat irgendjemand behauptet, der 6502 hätte einen orthogoalen oder auch nur irgendwie logisch aufgebauten Befehlssatz? Wer einen schöneren Befehlssatz sehen will, soll sich den des 6809 ansehen.
Harald K. schrieb: > Hat irgendjemand behauptet, der 6502 hätte einen orthogoalen oder auch > nur irgendwie logisch aufgebauten Befehlssatz? Was ist an dem Befehlssatz unlogisch? Orthogonal ist nett, aber eher B-Note. Die Anzahl Millionen (Milliarden?) 6502 CPUs (und deren Derivate), die in den letzten 50 Jahren gebaut und benutzt worden sind, belegen wohl ganz gut, daß das Ding überaus nützlich war, auch wenn es keine akademische Schönheit ist. Aber die ist sowieso zweifelhaft! Done is better than perfect!
Harald K. schrieb: > Wer einen schöneren Befehlssatz sehen will, > soll sich den des XXX ansehen. Ich wüsste da auch einen ...
Josef G. schrieb: > Harald K. schrieb: >> Wer einen schöneren Befehlssatz sehen will, >> soll sich den des XXX ansehen. > > Ich wüsste da auch einen ... Natuerlich, VAX Assembly language: https://www.ece.lsu.edu/ee4720/doc/vax.pdf Was sonst? Duck and Cover....
Hallo, Josef G. schrieb: > Ich wüsste da auch einen... Stimmt, die PDP-11 wurde noch nicht genannt. rhf P.S. Oder dachtest du an was anderes?...
Josef G. schrieb: > Harald K. schrieb: >> Wer einen schöneren Befehlssatz sehen will, >> soll sich den des XXX ansehen. > > Ich wüsste da auch einen ... Ich sehe durchaus Parallelen in Günters und Josefs Gedankenwelt - wer weiß, vielleicht findet sich ja mit Günter tatsächlich ein erster Anwender für bomes 8-Bit-Rechner?
Falk B. schrieb: > Done is better than perfect! Ich habe das überhaupt nicht (ab)wertend gemeint. Der Befehlssatz ist halt ... eine deutlich abgespeckte Variante des Originals, wie auch der Prozessor eine abgespeckte Variante des Originals* ist. Und ja, offensichtlich war das ausreichend, wie der deutlich größere Erfolg gegenüber dem Original zeigte - die abgespeckte Variante war halt auch deutlich kostengünstiger. Die Mehrarbeit durch aufwendigere Programmierung wurde lange Zeit durch die Kostenersparnis bei der Hardware aufgewogen. Aus Sicht des Programmierers aber bietet das Original mehr Möglichkeiten, zum Ziel zu kommen ... allein die Tatsache, daß sowohl der Stackpointer als auch das Indexregister 16 bit breit waren. Die Kür in dieser Richtung war eben der 6809, dem allerdings wenig Erfolg beschieden war, weil er technisch das Ende der Fahnenstange erreicht hatte (mal abgesehen von den viel zu spät erst öffentlich dokumentierten Erweiterungen, die Hitachi der CMOS-Version 6309 verpasst hatte), und weil nur wenige Monate später mit dem 68000 etwas völlig anderes aus dem gleichen Hause zur Verfügung stand. *) http://www.8bit-era.cz/6800.html
Interessanterweise gab es den 6800 vor dem 6502. Der 6800 hatte 250$ gekostet und das Preisziel vom 6502 war 25$. Dazu wurde der 6800 im Detail analysiert und geschaut, welches die wirklich wichtigen "Features" waren. Hier gibt es ein ziemlich aufschlussreiches Video, wie es zum Kampf um den 6502 kam: https://www.youtube.com/watch?v=lP2ZBp9O0mk Der Registersatz des 6800 war * Accumulatoren: A,B * Indexregister IX * Stackpointer * Flags https://en.wikipedia.org/wiki/Motorola_6800 Beim 6502 hat man sich den zweiten Accumulator 'B' gespart und dafür das Indexregister 'Y' eingeführt. Die Index-Register halte ich für enorm wichtig, da man damit schnell durch Tabellen gehen kann. Was mich immer wieder wundert ist, dass der 6502 trotz der sehr viel geringeren Registeranzahl mit der Geschwindigkeit des Z80 mithalten konnte. Der Vorteil dürfte aber der relativ schnelle Zugriff auf die RAM-Speicherzellen in Page 0 gewesen sein, die man dann als einen erweiterten Registersatz betrachten könnte.
Falk B. schrieb: > Done is better than perfect! Perfektion ist sowieso das tote. Allerdings hatten einige Bethesda-Fans ganz schön ausgeholt, als Starfield rauskam.
Christoph M. schrieb: > Dazu wurde der 6800 im Detail analysiert und geschaut, welches die > wirklich wichtigen "Features" waren. Eben. Christoph M. schrieb: > Die Index-Register halte ich für enorm wichtig, da man damit schnell > durch Tabellen gehen kann. Richtig, aber die des 6502 waren nur 8 Bit breit, das des 6800 aber 16 Bit, so daß Tabellen auch größer als eine "Page" werden konnten, ohne daß zusätzliche Klimmzüge nötig waren. Der 6809 hatte zwei 16-Bit-Indexregister und einen weiteren, ebenfalls 16 Bit großen Stackpointer, und konnte für manche Operationen die beiden 8-Bit-Akkumulatoren zu einem 16-Bit-Akkumulator kombinieren. Ein Problem wurde dann allerdings das relativ langsame Businterface, das halt jedes einzelne Byte nacheinander schaufeln musste; hätte man das mit einem 16-Bit-Businterface kombiniert, hätte das Ding deutlich flotter werden können. Allerdings war damals die restliche Hardware noch so teuer, daß man diesen Schritt gerne ausließ - zumal die dann doch massiv überarbeitete 68k-Architektur eh' konzeptionell überlegen war (mit jeder Menge 32-Bit-Registern ...).
Christoph M. schrieb: > Interessanterweise gab es den 6800 vor dem 6502. > Der 6800 hatte 250$ gekostet und das Preisziel vom 6502 war 25$. Das war damals die Vorgabe: Moeglichst billig fuer den Massenmarkt. > Beim 6502 hat man sich den zweiten Accumulator 'B' gespart und dafür das > Indexregister 'Y' eingeführt. Vor allen Dingen sind die Indizes fuer hoehe Programmiersprachen sehr hilfreich, so ein Art Frameindex (so dass Du lokal Variablen nicht auf dem Stack packen musst sondern auf Deinen Frame. Bei Return kannst Du dann alle Lokales einfach entsorgen) > Die Index-Register halte ich für enorm wichtig, da man damit schnell > durch Tabellen gehen kann. > > Was mich immer wieder wundert ist, dass der 6502 trotz der sehr viel > geringeren Registeranzahl mit der Geschwindigkeit des Z80 mithalten > konnte. Noe. Die 6502 hatte kein richtiges Microprogramming sondern wirklich ein direktes Steuerwerk. Das war schnell, auch der Speicherzugriff ueber Phi1/phi2 war sehr schnell und direkt. Die Z80 war viel komplexer aufgebaut und brauchte mehrere T-Zyklen um den OpCode zu dekodieren (auch wg. des Mikroprogramming). > Der Vorteil dürfte aber der relativ schnelle Zugriff auf die > RAM-Speicherzellen in Page 0 gewesen sein, die man dann als einen > erweiterten Registersatz betrachten könnte. Wenn Du den Nachfolger WDC65S02 anguckst: Dort wurde das Konzept der Zeropage auf die Direct-Page weiterentwickelt: Durch Direkt-Page-register (beim Reset 0x00) konntest Du Deine Zero-Page beliebig schieben. Wenn Du ein bisschen Geschichte lesen willst: in Beitrag "a Microprocessor for the Revolution -- 6809" habe ich einen Artikel von der Byte 1979 gezeigt wie der 6809 entwickelt wurde (so per Hand). Gruesse
Christoph M. schrieb: > Was mich immer wieder wundert ist, dass der 6502 trotz der sehr viel > geringeren Registeranzahl mit der Geschwindigkeit des Z80 mithalten > konnte. Lass Dich nicht von dem geringeren Quarztakt irritieren. Der 6502 braucht einen Quarztakt pro CPU-Takt. Beim Z80 sind es vier. D.h. Du musst einen Z80 mit 4 MHz takten, damit er innen drin genauso schnell läuft wie ein 6502 mit 1 MHz. Der Z80 hat leistunsfähigere und komplexe Befehle, aber die brauchen relativ lange. Beim 6502 muss man diese durch Unterprogramme nachbilden, was im Ergebis ähnlich schnell ist. Für den Assemblerprogrammierer ist der Z80 schöner, weil man eleganteren und kürzeren Code schreiben kann. Für den Anfänger ist der 6502 angenehmer, weil der einfacher zu überblicken ist. > Der Vorteil dürfte aber der relativ schnelle Zugriff auf die > RAM-Speicherzellen in Page 0 gewesen sein, die man dann als einen > erweiterten Registersatz betrachten könnte. Richtig. Die Zero-Page ist quasi eine Registerbank.
Soul E. (soul_eye) 25.05.2025 11:01 >Lass Dich nicht von dem geringeren Quarztakt irritieren. Der 6502 >braucht einen Quarztakt pro CPU-Takt. Das mit dem Takt ist mir bekannt und auch die Ausführung des Z80 als Bitslice-Prozessor mit 4 Bit Alu. Ich kenne den Z80 vom ZX81 mit knapp 4MHz Takt im Gegensatz zu den üblichen 1MHz beim 6502. Ich hätte vermutet, dass der Faktor 4 im CPU-CLK die Nachteile des Bitslice-Aufbaus ausgleicht und dass dann der doppelte Registersatz beim Z80 und die 16Bit Index-Register einiges an Performance Gewinn bringen.
Arduino F. schrieb: > Relativ nutzlos. > Selbst der beste Disassembler kann nicht die Intentionen des Codes > Erstellers ermitteln. > > Übrigens: > Um mal Werbung für Arduino zu machen... > Hallo liebe Leute, hallo Arduino F., Das klingt ja interessant, da würde ich mit kleinen Schaltungen anfangen, ohne den JC zu verlassen. Übrigens habe ich die Adressen-Reihe für das einfache Ton-Programm, neu eingegeben und auch die Sprungadressen wieder geändert. (Die R.-Adressen brauche ich ja nicht zu ändern), es klappte wieder nicht. Also tausche ich die RAMs, ich brauche sowieso noch weitere für die Peripherie. Es gelingt mir -scheinbar- nicht, aus der Schleife zu springen, ohne den Ton zu verändern. Vielleicht fällt dann sogar die "01" im Y-Register weg. - Weil ich das noch nicht verstehe, möchte ich doch, was Klaus sagt machen. Erst ohne, dann mit Timer. Ich meine: Auf jeden Fall braucht ein Computer eine Uhr bzw. auch einen Kalender. Weil ich da nicht Bescheid weiß, schreibe ich ein Lied-Programm ab. - Allerdings erst ab 0x0300. Für den Anfang, trage ich nur zwei gleiche Töne ein. - Also: "Tuut, Pause, Tuut.", Später anderes. Schlau daraus geworden, bin ich auch noch nicht. Ich gespannt was werden wird. Liebe Grüße Günter K. (ENK)
Günter K. schrieb: > Ich gespannt was werden wird. Tut mir leid das sagen zu müssen, aber ich bin nicht gespannt, sondern weiß ganz genau was das werden wird: Nix. Hast du das Tonleiter Programm auch nur einmal angeschaut und versucht zu verstehen wie es funktioniert? Wenn ja, hast du irgendwas davon verstanden? Wenn nein, warum nicht?
Klaus schrieb: > Hast du das Tonleiter Programm auch nur einmal angeschaut und versucht > zu verstehen wie es funktioniert? Wenn ja, hast du irgendwas davon > verstanden? > Wenn nein, warum nicht? Hallo Klaus, Ich war inzwichen tätig, (an der Abschrift) habe mich damit aber total verhäddert. Jetzt lege ich mich noch einemal hin. Bitte schicke mir nochmal die Tonleiter. LG Günter K. (ENK)
Günter K. schrieb: > Ich war inzwichen tätig, (an der Abschrift) Und wieso muss man da was abschreiben? Wir wärs mit lesen und verstehen und ggf. nachfragen? > Bitte schicke mir nochmal die Tonleiter. ??
Günter K. schrieb: > Ich war inzwichen tätig, (an der Abschrift) Was versprichst Du dir vom abschreiben? Da lernt man nichts dabei. Du sollst verstehen, was jede einzelne Assembler-Anweisung macht. Teilweise steht es ja schon dahinter, teilweise ist es selbsterklärend, und den Rest musst Du dir erarbeiten (nachschlagen oder nachfragen). Nur so kannn man eine Sprache lernen. Ich mach mal den Anfang für dich, geküzrt so dass nur 2 Noten gepsielt werden, mit zusätzlichen deutschen Kommentaren
1 | ;***************************************************************************** |
2 | ; Spiele 2 Noten abwechselnd |
3 | ;***************************************************************************** |
4 | .org $300 |
5 | lda #$1 ; lade den Wert 1 in den Akkumulator |
6 | sta PBDD ; setze Register PBDD (Datenrichtungsregister für Port B) auf 1 -> Pin PB0 ist Ausgang |
7 | |
8 | mainloop: |
9 | ; Spiele die Note C |
10 | lda #200 ; lade den Akkumulator mit dem Wert 200 |
11 | sta 0 ; speichere den Inhalt des Akkumulators an Adresse 0 |
12 | jsr playnote ; rufe die Subroutine zum Spielen einer Note auf |
13 | |
14 | ; Spiele die Note D |
15 | lda #158 ; lade den Akkumulator mit dem Wert 158 |
16 | sta 0 ; speichere den Inhalt des Akkumulators an Adresse 0 |
17 | jsr playnote ; rufe die Subroutine zum Spielen einer Note auf |
18 | |
19 | jmp mainloop ; fange wieder von vorne an mit der ersten Note |
20 | |
21 | playnote: ; Das ist die EinsprungAdresse zum Spielen einer Note. |
22 | ; An Adresse 0 muss die benötigte Verzögerung stehen |
23 | |
24 | ldy #50 ; Das ist die Länge der Note. Höhere Noten werden kürzer gespielt; aber das soll hier nicht stören |
25 | |
26 | loop: |
27 | ; default delay |
28 | ldx #180 ; Feste Wartezeit von 5us×179+5us=900us, damit wir mit einem Register (max. Wert 255) für die zusätzliche Verzögerung auskommen |
29 | jsr shortdelay ; Hier wird gewartet, und zwar ca. 5 Microsekunden multipliziert mit dem Inhalt von Register X, also hier 180*5 = 900µs. |
30 | |
31 | ldx 0 ; Lade den Inhalt von Adresse 0 in Register X |
32 | jsr shortdelay ; Hier wird gewartet, je nach Inhalt |
33 | |
34 | lda PBD ; Lese den Inhalt des Ausgangsregisters |
35 | eor #$01 ; invertiere das Bit0 |
36 | sta PBD ; und schreibe den Wert zurück -> Taktflanke für Rechtecksignal für unseren Lautsprecher |
37 | |
38 | dey |
39 | bne loop |
40 | rts |
41 | |
42 | ; Total time (in microseconds)=5N+5 |
43 | shortdelay: |
44 | dex ; 2 cyc |
45 | bne shortdelay ; 3 cyc jmp , 2 no mp |
46 | rts ; 6 cyc |
47 | |
48 | ; MOS6532 PIA addreses |
49 | |
50 | PAD: .org $1A80 |
51 | PADD: .org $1A81 |
52 | PBD: .org $1A82 |
53 | PBDD: .org $1A83 |
Jetzt sind nur noch die letzten 6 Assembleranweisungen nicht oder nur kurz auf englisch kommentiert. Versuch einfach zu verstehen (und aufzuschreiben) , was die machen.
:
Bearbeitet durch User
Hallo Klaus und Alle, zunächst, muss ich mich für eine Satzaussage entschuldigen und richtigstellen, denn wo ich schrieb: Klaus schrieb: > Günter K. schrieb: >> und siehe da, - da hat dieser Assembler hat auch einen Assembler. Richtig sollte es heißen: " ... und siehe da, - da hat dieser Assembler hat auch einen Compiler". Da hatte ich mir tatsächlich schon so, in den 'Assembler' verbissen, dass ich "Assembler" statt "Compiler" schrieb. Ja, was hätte ich dann gerne: "Einfache CPU, einfacher Rechner, nur zum Lernen, Erfahrung". Und ich freue mich, gute Leute zu sehen, die Erfahrung damit haben. 1. Selbst von dem Programm, was ich abgetippt habe, aber noch nicht eingetippt in den JC (Junior-Computer), -, noch von den, 2. von den -wirklich gut gemeinten- Routinen, - verstehe ich zu wenig! Ich hätte gerne, ein ganzes Programm, als einen Modularen-Aufbau, bzw. ganze/s Programm/e in einem Modularem-Aufbau. Was ich unter: 1. u.a. sehen konnte, war ein Gewirr von Schleifen. - Und unter 2. bitte ein ganzes Programm, - bei dem ich verstehen möchte, wo der noch richtig laufende Ton, nicht unterbrochen wird, - weil der Ton ja nicht unterbrochen werden darf, es sei denn, innerhalb eines Halbwellen-Zyklus des höchsten Tones, sich jeweils ein ganzer Befehls-Satz unterbringen lässt. - ? Bitte ärgere Dich nicht, bitte ärgert Euch nicht. -. Sonst muss ich ganz neu lernen, wie ein Befehl den anderen Befehl beeinflusst. Das ging mir auch noch bei dem Z80 durch den Kopf, weil dort in dem Buch verschieden OP-Codes, für einen Befehl standen; denn dann hätte ich -vielleicht- herausfinden können, wie, welcher Befehl werden würde; aber, das würde viel zu viel werden. Nein: Ein Befehl, der unbeschwert zu greifen ist, macht eine ganz bestimmte Sache, ohne was Anderes, wenn es nicht sein muss, zu beeinflussen. Fertig funktionierende Timer, würden dabei helfen. Es könnten auch verschiedene Timer sein. Ein Timer für die Uhrzeit, und andere Timer für Startsequenzen. Liebe Grüße Günter K. (ENK)
Nachtrag, ganz kurz: Hallo liebe Leute, ich brauche den OP-Code, - nur mit dem, - kann ich das verstehen. Liebe Grüße Günter K. (ENK)
Günter K. schrieb: > Nein: Ein Befehl, der unbeschwert zu greifen ist, macht eine ganz > bestimmte Sache, ohne was Anderes, wenn es nicht sein muss, zu > beeinflussen Abgesehen davon, dass du wirklich NICHTS verstanden hast, habe ich nach solchen völlig unverständlichen Aussagen nun auch das letzte Quäntchen Hoffnung verloren, dass Du je mehr lernst, als das, was der Assembler-Befehl "NOP" macht: Genau nichts.
Günter K. schrieb: > ich brauche den OP-Code, - Da stehen ca. 20 Stück davon im Programm. Danach ein Semikolon und eine genaue Erklärung, was der Opcode macht. Auf Deutsch. Ich komme mir vor wie wenn ich einem Grundschüler erklären will was 2+2 ist, aber er leider nicht bis 4 zählen kann. Da kannste nix machen.
Günter K. schrieb: > Fertig funktionierende Timer, würden dabei helfen. > Es könnten auch verschiedene Timer sein. Ein Timer für die Uhrzeit, > und andere Timer für Startsequenzen Wir sollen also dem Grundschüler, der nicht bis 4 zählen kann, nicht nur beibringen, was 2+2 ist, sondern ihm auch erklären, wie man die Wurzel aus 46534 berechnet? Welche der beiden Aufgaben führt denn eher zum Erfolg?
Klaus schrieb: > Günter K. schrieb: >> ich brauche den OP-Code, - > > Da stehen ca. 20 Stück davon im Programm. Danach ein Semikolon und eine > genaue Erklärung, was der Opcode macht. Nee. Was Du "opcode" nennst, heißt Mnemonic, und ist eine Klartextrepräsentation von Assemblerinstruktionen. So etwas wie LDA, STA etc. Ein Opcode ist der zum Mnemonic und der konkreten Adressierungsart gehörende Binärcode der Instruktion. Aus lda #$1 wird 0xA9 0x01 Aus lda #200 wird 0xA9 0xC8 Günter ist es wohl zu mühsam, Dein Programm von Hand zu assemblieren, und durch einen Assembler will oder kann er es aus irgendwelchen Gründen nicht schicken ...
Harald K. schrieb: > Was Du "opcode" nennst, heißt Mnemonic, und ist eine > Klartextrepräsentation von Assemblerinstruktionen Da hast du natürlich Recht. Allerdings braucht NIEMAND die Opcodes, um ein Programm zu verstehen.
Klaus schrieb: > Allerdings braucht NIEMAND die Opcodes, um ein Programm zu verstehen. Der Prozessor selbst schon :-) Günter will vermutlich das Programm in seinen Computer eingeben, und da das nur über Opcodes geht ... Denk dran: Das hier https://www.mikrocontroller.net/attachment/662153/junior3_04.jpg ist der Computer, mit dem Günter unterwegs ist.
Harald K. schrieb: > Das hier > https://www.mikrocontroller.net/attachment/662153/junior3_04.jpg ist der > Computer, mit dem Günter unterwegs ist. Den kann man bestimmt in Rust programmieren, so wie der aussieht! ;-)
Harald K. schrieb: > Günter will vermutlich das Programm in seinen Computer eingeben, und da > das nur über Opcodes geht ... Vermutlich. Er macht ja sowieso nie das, was man ihm vorschlägt. Insofern konsequent...
:
Bearbeitet durch User
Harald K. schrieb: > Denk dran: > > Das hier > https://www.mikrocontroller.net/attachment/662153/junior3_04.jpg ist der > Computer, mit dem Günter unterwegs ist. - JA! SEHR GUT! Ja, ich würde gerne selbst, wie der Prozessor sein. :-) ;-) -! Die Mnemonic brauche ich nur um zu wissen, was der Maschinenbefehl tut. Allerdings sind die angegebenen Zeiten, sehr interessant. Denn dann weiß ich, ob ich während der Halbwelle Zeit habe, ein Byte zu Inkrementieren und aus der Halbwelle auszuscheren, um dann als ... s. 2.. Allerdings sollte das ganze Programm mit einer Pausengruppe beginnen, in dem 1. auch, die Pausen sind, die in der Notenschrift nicht vorkommen, aber vorhanden sind. Damit das Ganze in den Takt passt, muss diese Note vor der sog. Pause, die ja wirklich eine Pause ist, um dessen Länge kürzer gemacht werden. - Ich weiß, solche Musik klingt deshalb nicht gut, weil man dann sofort die Automatik heraushört. Es handelt sich hier um Zeitintervalle. 2. bei dem Ausscheren werden Memorys hochgezählt, danach 3. Die Tonhöhe aus der Zerro-Page in das x- und y- geladen werden. (Zur aus der ZP, damit es schnell gehen kann.) 4. Was anfänglich nur 2 Töne sind, wird nachher ein ganzes Lied. 5. Das alles muss sich abspielen, während u.a. der höchste und kürzeste Ton gespielt wird oder eine Pause läuft. 6. Das Abspielen aber, soll ein eigenes Programm sein. Aus diesem Grunde, wird es mitunter sehr lang. Und das, in einem maschinenartigen Programm. Zum Trost, weil ich selber nichts durch Eingabe erreicht habe, schreibe ich ein kleines Programm für die 7-Segment-CODE-Anzeige. Jetzt wünsche ich Euch erst mal eine gute Nacht mit lieben Grüßen Günter K. (ENK)
Hallo, Falk B. schrieb: > Den kann man bestimmt in Rust programmieren, so wie der aussieht! ;-) :-) rhf
Günter K. schrieb: > Zum Trost, weil ich selber nichts durch Eingabe erreicht habe, > schreibe ich ein kleines Programm für die 7-Segment-CODE-Anzeige. Ja ist klar. Bevor auch nur die Gefahr besteht, dass Du bei einer noch so einfachen Aufgabe irgendeinen Strohhalm entdeckst, der dich weiterbringen könnte, wechselt du lieber das Thema. Wolfgang R. schrieb: > Klaus schrieb: >> Gibt's da keine LED > > Alternativ nur die LEDs in den Siebensegmentanzeigen - das ist aber für > einen Anfänger nicht ganz trivial. Also für Günter ungefähr so einfach wie die Besteigung des Mount Everest für einen Querschnittsgelähmten, ohne Sauerstoff versteht sich.
Klaus schrieb: >> Klaus schrieb: >>> Gibt's da keine LED Hallo liebe Leute, da gibt's keine -solche- LED. Liebe Grüße Günter K. (ENK)
Hallo liebe Leute, Harald K. schrieb: > Was Du "opcode" nennst, heißt Mnemonic, und ist eine > Klartextrepräsentation von Assemblerinstruktionen. So etwas wie LDA, STA > etc. Was ich OP-CODE nenne, ist der OPERATIONS-CODE. - Und RICHTIG Harald K.: Du schriebst: Harald K. schrieb: > Denk dran: > > Das hier > https://www.mikrocontroller.net/attachment/662153/junior3_04.jpg ist der > Computer, mit dem Günter unterwegs ist. Gut gesagt! Ich bin wirklich nicht so schlau. RICHTIG, - DANKESCHÖN! Das ist ehrlich gemeint. Liebe Grüße Günter K. (ENK)
>Klaus (feelfree) >26.05.2025 17:25 Das dürfte falsch sein: das ORG muss vor dem Label stehen, sonst ist z.B. PADD=0x$1A80 statt 0x$1A81.
1 | PAD: .org $1A80 |
2 | PADD: .org $1A81 |
3 | PBD: .org $1A82 |
4 | PBDD: .org $1A83 |
Um mit dem Programmieren zu beginnen, braucht man erst mal eine vernünftige Arbeitsumgebung. Und da jeder einen PC hat, nimmt man eben diesen. Darauf installiert man eine Umgebung mit Editor, um Quelltexte einzugeben und abzuspeichern. Dann einen Assembler für das gewünschte Target. Auch ein Simulator ist zu empfehlen, wo man erst mal alles im Schrittbetrieb ablaufen und nachverfolgen kann. Hier mal wahllos was rausgesucht: https://edsim51.com/ Irgendein uraltes CPU-Spielzeug, was nicht mal Programme permanent abspeichern kann, ist dagegen absolut untauglich zum Lernen. Damit wirst Du nie im Leben Fortschritte erzielen können. Vergiß den Junior-Computer ganz schnell, das ist ne Sackgasse (zumindest für Dich). Es gibt heutzutage Eval-Boards, wo man über USB debuggen kann. D.h. man hat auf dem PC Fenster, in denn man Code, Daten, Stack, Timer, Register usw. schön übersichtlich angezeigt bekommt.
Christoph M. schrieb: > Das dürfte falsch sein: das ORG muss vor dem Label stehen, sonst ist > z.B. PADD=0x$1A80 statt 0x$1A81. > >
1 | > PAD: .org $1A80 |
2 | > PADD: .org $1A81 |
3 | > PBD: .org $1A82 |
4 | > PBDD: .org $1A83 |
5 | > |
Keine Ahnung wie es genau sein muss, der asm80.com schluckt es jedenfalls so und sortiert es automagisch um....
Peter D. schrieb: > Hier mal wahllos was rausgesucht: > https://edsim51.com/ Solche Dinge wurden ihm schon tausendmal empfohlen. Er geht da nicht mal drauf ein. Kannst du dir sparen.
Peter D. schrieb: > Irgendein uraltes CPU-Spielzeug, was nicht mal Programme permanent > abspeichern kann, ist dagegen absolut untauglich zum Lernen. Damit wirst > Du nie im Leben Fortschritte erzielen können. Was glaubt Ihr Youtube-Kiddies eigentlich, wie wir damals was gelernt haben? Zu der Zeit, als der Junior, der Apple II oder der C64 noch Stand der Technik waren. Aus diesem Wissen ist genau die Klickibunt-Welt entstanden, die Du als selbstverständlich voraussetzt. Klar geht das heute auch einfacher, und statt eines steinalten RISC-Prozessors von 1976 kann man einen Arduino nehmen. Aber der TO möchte das Ganze genau so nacherleben, wie er es eigentlich 1978 hätte tun wollen.
Soul E. schrieb: > Peter D. schrieb: >> Irgendein uraltes CPU-Spielzeug, was nicht mal Programme permanent >> abspeichern kann, ist dagegen absolut untauglich zum Lernen. Damit wirst >> Du nie im Leben Fortschritte erzielen können. > > Was glaubt Ihr Youtube-Kiddies So nennst du Peda? > Klar geht das heute auch einfacher, und statt eines steinalten > RISC-Prozessors von 1976 kann man einen Arduino nehmen. Aber der TO > möchte das Ganze genau so nacherleben, wie er es eigentlich 1978 hätte > tun wollen. Es wurden EMULATOREN empfohlen. Keine Arduino. Und er KANN es eben nicht so erleben wie 1978 weil ihm dafür jede geistige Kapazität fehlt. Sad but true.
:
Bearbeitet durch User
Harald K. schrieb: > und da > das nur über Opcodes geht ... > > Denk dran: > > Das hier > https://www.mikrocontroller.net/attachment/662153/junior3_04.jpg ist der > Computer, mit dem Günter unterwegs ist. DANKESCHÖN!! Liebe Grüße Günter K. (ENK) PS.: Ich gebe mich jetzt an die MNEMONICS mit den ADRESSIERUNGSARTEN für den OPERATIONS-CODE (Das dauert noch was.)
Soul E. schrieb: > Was glaubt Ihr Youtube-Kiddies eigentlich, wie wir damals was gelernt > haben? Falls es Dir noch nicht aufgefallen ist, der Günter ist kein Kiddie mehr und zeigte bisher keine merkbaren Fortschritte. Daher sollte er jegliche Erleichterungen benutzen, die er kriegen kann.
:
Bearbeitet durch User
Peter D. schrieb: > zeigte bisher keine merkbaren Fortschritte. Würde ich so nicht sagen. Problematisch ist halt, dass einige Sachen parallel gelernt werden müssen, Codierungsarten, Logikfeinheiten oder Speichermanagement z.B. - das heißt man muss halt ein wenig Geduld haben, Befehle verstehen, Programme ausprobieren, Programme verändern, Algos ansehen und ausprobieren usw. und darauf hoffen, dass es bald "klick" macht. Den Logikteil kann man auch ganz gut mit Papier und Bleistift machen. Ist auf jeden Fall für mich angenehmer, und würde ich auch empfehlen. Das war übrigens bei C früher auch so. Man geht erstmal ein paar Programme durch (also abtippen und testen) ohne viel zu verstehen. Das Verständnis kommt nach und nach, aber es gibt auch immer wieder neue Herausforderungen.
Soul E. schrieb: > Aus diesem Wissen ist genau die Klickibunt-Welt > entstanden, die Du als selbstverständlich voraussetzt. Jaja mach mal halblang. Also ein 8080 System ist schweineeinfach. Das Problem damals waren wohl eher die Preise für die ganze Peripherie, Speicher usw. Komplex oder gar schwierig ist da gar nichts. Habe erst letztens ein 8080 System komplett von Null auf gebaut. Mit der damaligen Peripherie aber modernem (1994) Speicher. 64 KB RAM und 64KB ROM, SIO, einfache digitale IO. Simpel. HW ist Simpel, 8080 Assembler ist simpel. Wo ein wenig Gehirnschmalz stecke, war das Frontpanel des Altair, mit dem man direkt den Speicher laden und anzeigen konnte. Natürlich natürlich, manche SW, vor allem Spiele, waren komplex. Das ist sie aber heute auch. Weil man immer an die Grenzen der HW ran muss. Aus wirtschaftlichen Gründen. Also immer auf dem Teppich bleiben und vielleicht mal in eine moderne Vorlesung "Rechnerarchitektur" reinschnuppern. Da gibts dann wirklich komplexe Dinge.
Moin, Was den bemuehten Helfern anscheinend ueberhaupt nicht auffaellt: Es scheint ENK nicht darum zu gehen, irgendetwas "schnell" oder "richtig" lernen zu wollen oder gar muessen. Sondern er macht halt seinen Stiefel, wie er's fuer richtig haelt. Solange dann nicht mit dieser Software irgendwelche Atomkraftwerke, Herzschrittmacher oder autonome Autos laufen sollen, ist das doch voellig ok. Offensichtlich hat er an seinem Herumgewurstele, so wie er es macht, ja Spass. Sonst wuerde er es ja nicht so machen. Da muesst ihr einfach mal damit klarkommen. scnr, WK
In der heutigen Zeit lernt man mit Hilfe von Youtube-Videos. Etwas unpraktisch: Da der Junior-Computer so alt ist, gibt es da natürlich eher weniger. Aber ein wenig gibt es: https://www.youtube.com/watch?v=wI82V9meKnY ( ab Minute 18 )
Cyblord -. schrieb: > Soul E. schrieb: >> Aus diesem Wissen ist genau die Klickibunt-Welt >> entstanden, die Du als selbstverständlich voraussetzt. > > Jaja mach mal halblang. > (...) Wo genau siehst Du den Widerspruch zu meiner Aussage? Aus dem 8080 ist der 8086 entstanden, der zu den heutigen Core i7 und Ryzen führte. Aus den Monitorprogrammen von damals sind CP/M und MS-DOS entstanden, aus denen die modernen Betriebssystemen Linux und Windows entstanden sind. > Simpel. HW ist Simpel, 8080 Assembler ist simpel. Natürlich war das simpel. Heute ist es komplexer. Das Komplexe baut auf das Simple auf. Das Simple bildet die Grundlagen des Komplexen. Von der heutigen IT ist nichts vom Himmel gefallen. Das hat sich alles evolutionär aus der Steinzeittechnik der '70er Jahre entwickelt. Da, wo Günter mal reinschnuppern möchte.
:
Bearbeitet durch User
Soul E. schrieb: > Wo genau siehst Du den Widerspruch zu meiner Aussage? Aus dem 8080 ist > der 8086 entstanden, der zu den heutigen Core i7 und Ryzen führte. Du suggerierst (mit deinem youtube Kiddies) dass dies alles damals so schwer und komplex war. Und das war es nicht. > Von der heutigen IT ist nichts vom Himmel gefallen. Das hat sich alles > evolutionär aus der Steinzeittechnik der '70er Jahre entwickelt. Triviale Aussage, Captain Obvious. > Da, wo Günter hmal reinschnuppern möchte. Kann er ja, nur sollte er moderne Tools dafür verwenden. In alte Technik mit alter Technik reingucken kann nur wer minimalste Grundlagen der digitalen Datenverarbeitung verstanden hat. Somit er nicht.
:
Bearbeitet durch User
Hier gibt es noch den zugehörigen Youtube-6502-Assembler-Kurs: https://www.youtube.com/watch?v=-s6dttMAt9w
Cyblord -. schrieb: > Du suggerierst (mit deinem youtube Kiddies) dass dies alles damals so > schwer und komplex war. Und das war es nicht. Nein, ich suggeriere nicht dass alles schwer war, sondern ich widerspreche der Aussage > Peter D. schrieb: >> Irgendein uraltes CPU-Spielzeug, was nicht mal Programme permanent >> abspeichern kann, ist dagegen absolut untauglich zum Lernen. Damit wirst >> Du nie im Leben Fortschritte erzielen können. Das Zeug war tauglich zum Lernen, wir haben damit gelernt, und die Ergebnisse, die Fortschritte der IT-Branche in den letzten 40 Jahren, könnt Ihr heute bewundern. Gerade weil das alte Zeug relativ primitiv und übersichtlich ist, eignet es sich zum Lernen.
Soul E. schrieb: > die Fortschritte der IT-Branche in den letzten 40 Jahren, > könnt Ihr heute bewundern. Manchmal frage ich mich wie du Alter und Skillevel der Leute die du so ansprichst einschätzst.
Soul E. schrieb: > Nein, ich suggeriere nicht dass alles schwer war, sondern ich > widerspreche der Aussage Leicht und schwer oder komplex und simpel relativieren sich immer am eigenen Horizont. Wer in Hex "denken" und rechnen kann, wer über relative Adressierung nicht mehr nachdenken muss und wer die meisten 6502 Mnemonics einfach wegschreiben kann, ist das alles simpel. Wir in der Computer AG 1980 herum, wußten von unserm Commodeore Pet sehr viele ROM-Einsprungsadressen aus dem Effeff. Für Umstehende erschien das - mal vorsichtig - irgendetwas zwischen genial und nerdig. Aber wer komplett neu einsteigt, für denn ist das alles kompliziert und dem sollte man nicht sagen, es ist simpel. Nur habe ich Probleme mit Günters Post. Allein die Zahl der Beiträge erfüllt alle Troll-Kriterien. Er erweist sich als beratungsresistent. Auf viele Hilfsangebote reagiert er gar nicht. Immerhin bleibt er immer nett.
Soul E. schrieb: > Nein, ich suggeriere nicht dass alles schwer war, sondern ich > widerspreche der Aussage Natürlich hast du recht. Die Aussage von Peda war etwas allgemein. Natürlich KANN man auch damit alles lernen und früher gings nur so. Aber nicht der TE. Der TE benötigt jede moderne Hilfe die er kriegen kann um den alten Kram zu verstehen.
:
Bearbeitet durch User
Cyblord -. schrieb: > Der TE benötigt jede moderne Hilfe die er kriegen > kann um den alten Kram zu verstehen. (z.B.) https://en.wikipedia.org/wiki/De_Morgan%27s_laws
Cyblord -. schrieb: > Der TE benötigt jede moderne Hilfe die er kriegen > kann um den alten Kram zu verstehen. Die brauchen eher die Leute wie du, die immer noch nicht kapiert haben, mit wem sie es da zu tun haben. Beitrag "Re: Einfache CPU, einfacher Rechner, nur zum Lernen, Erfahrung?" Beitrag "Re: Einfache CPU, einfacher Rechner, nur zum Lernen, Erfahrung?"
Falk B. schrieb: > Die brauchen eher die Leute wie du, die immer noch nicht kapiert haben, > mit wem sie es da zu tun haben. Da muss ich sogar mal Falk zustimmen - der TO wird in seinen Äußerungen zunehmend wirrer und ein Fortschritt ist seit Langem nicht mehr erkennbar. Traurig, aber wahr.
Falk B. schrieb: > Die brauchen eher die Leute wie du, die immer noch nicht kapiert haben, > mit wem sie es da zu tun haben. Nun ich widerspreche dir nicht dass der TE maximal verwirrt ist. Aber wenn es eine Chance für ihn gibt irgendwas zu verstehen dann ist es nicht Hex Code auf einem Junior Computer.
:
Bearbeitet durch User
Naja, viele von uns fingen auch mit Hand assemblierten Object Code an. Mein "Erster" war eine MC6802 Motorola Bord. Ganze 256 Bytes für Programm und Daten. Später kam ein MC68HC11EVB dazu. Das war schon viel mehr Komfort. Allerdings, heute würde ich mir das auch nicht mehr antun. Mnemonik Assemblieren ist das Unterste was ich heutzutage akzeptieren würde. Object Codes eintippen macht nicht wirklich Spaß. Da ist Mnemonik absoluter Fortschritt und man wußte das schon in den 50ern zu schätzen. Abgesehen davon nimmt einem ein guter Assembler viel Arbeit ab mit Offset Berechnungen und Makros. Ich würde vielleicht zu einem MSP430 auf einer Eval Bord raten. Da ist zumindest die Infrastruktur zwischen PC und uC ausgefeilt und die Programme sind nicht flüchtig. Mehr Spaß macht es aus und man kann spaeter von ASM auf C umsteigen. Auch mit einem Arduino kann man viel anfangen. Im Vergleich zu den 70ern leben wir in einem Schlaraffenland an Möglichkeiten. Da sind eher wir die Begrenzung der Möglichkeiten. Als Pragmatiker bevorzuge ich Projekte mit dauerhafter Funktionalität. da geht es mir weniger um den Lerneffekt als Solchen, sondern das Lernen nebenbei als der Weg zu Ziel. Aber jeder sieht das wahrscheinlich anders. Ich bin froh, daß man heute keine umfangreiche Anordnung von ICs um den Mikroprozessor herum hat. Der Formfaktor eines uC ist nicht zu ignorieren. Ein MEGA328 würde einige LP vollgestopft mit Arbeiter-Käfern bedeuten. Da ist mir ein NANO oder Pro-Mini wesentlich lieber. Man muss sich das manchmal vor den Augen behalten. Ich bin manchmal schockiert wenn ich die Schaltpläne älterer Meßgeräte studiere, daß sogar Firmen wie R&S damals Grosses mit uC wie z.B. Intel 8039 verwirklichten. Mein R&S Mobil Tester hat nur zwei 8039er drin und hat sogar HP-IB Schnittstelle. Ein moderner ESP32 bläst alles Vorherige fort. Es hat bestimmt Sinn, sich etwas Moderneres zu wählen, wo die Werkzeuge (PC, IDE) und uC aufeinander abgestimmt sind. USB Verbindung zwischen Werkzeug und uC-LP ist Stand der Technik. Duck und weg...
:
Bearbeitet durch User
Gerhard O. (gerhard_) 27.05.2025 15:25 >Ich würde vielleicht zu einem MSP430 auf einer Eval Bord raten. Da wäre die Infrastruktur auch ausgefeilt Beitrag "6502 Emulator PiPico" Nämlich die serielle Schnittstelle. Ich hatte mir auch schon überlegt, die übertragenen Daten im Flash zu speichern. Dann wäre die "persistente Eieruhr" machbar ;-)
Gerhard O. schrieb: > Ich bin froh, daß man heute keine umfangreiche Anordnung von ICs um den > Mikroprozessor herum hat. Der Formfaktor eines uC ist nicht zu > ignorieren. Ein MEGA328 würde einige LP vollgestopft mit Arbeiter-Käfern > bedeuten. Da ist mir ein NANO oder Pro-Mini wesentlich lieber. Man muss > sich das manchmal vor den Augen behalten. Ich mache den Quatsch ja auch seit vierzig Jahren und ich fasse keine Prozessorfamilie ohne Debugger mehr an: Mit einem STM32F103 + STLink V2 und Eclipse (STM32Cube IDE) ist man mit einen Fuenf-Euro-Schein dabei, bei Arduino beim Arduino Zero + IDE ist man bei 50EUR, RaspberryPico mit zweitem Pico als PicoProbe sind ca. 10EUR. Aber die geschenkte Lebenszeit (und der gesparte Frust) sind jeden Cent wert. Und wenn Guenter unbedingt die 6502 benutzen will: Er hat ja einen Junior, arbeitet aber die Aufgaben im Junior-Buch nicht durch. Dann ist das nicht so wichtig.
Cyblord -. schrieb: > dann ist es > nicht Hex Code auf einem Junior Computer. Hallo liebe Leute, vor allem Cyblord, auf dem Junior Computer geht es doch gar nicht anders. Also bitte, wieso nicht? - Falls Du einen anderen Computer meinst, mag es ja sein. Aber da, wo der Operations-Code steht, passiert doch auch das, was er macht. Liebe Grüße Günter K. (ENK)
:
Bearbeitet durch User
Nachtrag: Günter K. schrieb: ... ... Aber da, wo der Operations-Code steht, passiert doch auch das, was er macht. Liebe Grüße Günter K. (ENK)
Klaus schrieb: > Auch da wieder: Kannst Du machen, bringt dir aber absolut nix, nada, > niente. > Außer halt Zeit totschlagen ohne Erkenntnisgewinn. Günter K. schreibt: Außer, dass ich weiß, dass dieser Speicherbereich, 0x0200 bis 0x02FF, doch nicht funktioniert, - so war es immerhin doch noch einmal ein Versuch! Liebe Grüße Günter K. (ENK) PS.: Und natürlich probiere ich weiter, ich habe aber nicht vor, Euch unnötig zu stören.
Günter K. schrieb: > auf dem Junior Computer geht es doch gar nicht anders. Also bitte, > wieso nicht? - Falls Du einen anderen Computer meinst, mag es ja sein. > Aber da, wo der Operations-Code steht, passiert doch auch das, was er > macht. Du verstehst es einfach nicht. Ein Mensch schreibt ein Programm in Assembler-Anweisungen. Also sowas wie
1 | ldx #100 |
2 | loop: |
3 | dex |
4 | bne loop |
Das kleine Programm lädt z.B. die Zahl 100 in das X-Register, dekrementiert X jeweils um 1, und solange die 0 nicht erreicht ist, dekrementiert es weiter, weil es zum Schleifenanfang (loop:) zurückspringt. Also eine klassische Verzögerungsschleife, wie sie auch in jedem Notenspielprogramm vorkommt. JEDER Mensch der in Assembler programmiert macht das genau so und nicht anders. Weil aber dein Junior Computer die Assembler-Anweisungen nicht versteht, brauchst Du die dazugehörigen Opcodes. Die erhältst Du, in dem Du die 4 Zeilen da oben kopierst, zu https://www.masswerk.at/6502/assembler.html gehst, dort in dem "src" Fenster den Assemblercode einfügst, einmal auf "assemble" drückst und schon hast Du a) den reinen Hex-Code und b) das Listing mit Hex-Code und den Originalen Assembler Anweisungen. Du kannst natürlich auch in dein Junior-Computer Buch schauen und die Hex-Codes dort mühsam zusammenklauben. Das wäre ungefähr so wie wenn Du zwar einen Taschenrechner zur Verfügung hast, aber trotzdem darauf bestehst, 47110815 * 27364 mittels händischer, schriftlicher Multiplikation auszurechnen. Das geht, bringt aber niemand einen Erkenntnisgewinn. Und wenn Du dann, statt die Hex-Codes mühsam in deinen Junior-Computer einzutippen, auf der oben genannten Webseite einmal auf "Show in Emulator" gehst, hast Du mit EINEM Mausklick etwas vor die, was ungefähr deinem Junior-Computer entspricht. Da kannst Du sämtliche Register beobachten, Assembler-Anweisung für Assembler-Anweisung. Der Knopf hierfür heißt "Single Step".
:
Bearbeitet durch User
Günter K. (enk) 27.05.2025 23:31 >Außer, dass ich weiß, dass dieser Speicherbereich, 0x0200 bis 0x02FF, >doch nicht funktioniert, - so war es immerhin doch noch einmal ein >Versuch! Hmm, komisch .. in diesem Video (Minute 26:02) haben sie ein Programm zum Togglen eine Portpins ab Adresse 200 eingetippt: https://www.youtube.com/watch?v=wI82V9meKnY
Christoph M. schrieb: > Hmm, komisch .. in diesem Video (Minute 26:02) haben sie ein Programm > zum Togglen eine Portpins ab Adresse 200 eingetippt: Günter schreibt: Hallo Christoph M. . Richtig, das ist ja auch nicht mein Computer. Es war schon ein guter Vorschlag von Wolfgang R. es bei 0x0300 zu probieren und es klappte. Meine RAMS muss ich tauschen, denn die meinen sind kaputt. Liebe Grüße Günter K. (ENK)
Günter K. schrieb: > Meine RAMS muss ich tauschen, denn die meinen sind kaputt. Da wäre ich mir erst sicher, wenn ich es überprüft habe. gib doch mal ab Adresse 0x200 lauter 0x55 als daten ein und lese dann heraus, was wirklich drinsteht. Dann das Spiel mit 0xAA als Datum, dann wieder lesen, was in den RAM-Zellen steht. Wenn du die Daten schreiben und lesen kannst und sich nichts verändert hat, dann sind deine RAMs nicht defekt! also: AD 0100 DA 55 + 55 + 55 + 55 ... AD 0100 ab hier sollte immer noch 55 im Datendisplay stehen + + + + ...
:
Bearbeitet durch User
Günter K. (enk)
28.05.2025 08:12
> Richtig, das ist ja auch nicht mein Computer.
Oh, das ist jetzt eine neue Erkenntnis. Ich dachte die ganze Zeit, wir
diskutieren hier über einen Junior-Computer mit 6502.
Welchen Computer verwendest du jetzt genau? Kannst du mal ein Foto
posten?
:
Bearbeitet durch User
Christoph M. schrieb: > Günter K. (enk) > 28.05.2025 08:12 >> Richtig, das ist ja auch nicht mein Computer. > > Oh, das ist jetzt eine neue Erkenntnis. Ich dachte die ganze Zeit, wir > diskutieren hier über einen Junior-Computer mit 6502. > > Welchen Computer verwendest du jetzt genau? Kannst du mal ein Foto > posten? Nicht notwendig, er benutzt den Junior-Computer den Wolfgang gangbar gemacht hatte: Beitrag "Re: Einfache CPU, einfacher Rechner, nur zum Lernen, Erfahrung?"
Thomas W. schrieb: > Nicht notwendig, er benutzt den Junior-Computer den Wolfgang gangbar > gemacht hatte: Aber es ist halt nicht derselbe, sondern nur der (bau)gleiche Rechner der im o.g. Video zu sehen ist.
Klaus schrieb: > Thomas W. schrieb: >> Nicht notwendig, er benutzt den Junior-Computer den Wolfgang gangbar >> gemacht hatte: > > Aber es ist halt nicht derselbe, sondern nur der (bau)gleiche Rechner > der im o.g. Video zu sehen ist. Das Video (oder Guenter) haben nichts miteinander zu tun. Und das der Junior Speicher bei 0x0200-0x02ff hat ist gegeben. Irgendwie ist das alles ncht zielfuehrend.
Klaus (feelfree) 28.05.2025 09:39 >Aber es ist halt nicht derselbe, sondern nur der (bau)gleiche Rechner >der im o.g. Video zu sehen ist. Jetzt stellt sich noch die Frage, ob er auch "funktionsgleich" ist. Ich würde trotzdem gerne den Computer optisch sehen. Vielleicht gab es ja Varianten. Günter: Kannst du ein Bild posten ?
Thomas W. (datenreisender) 28.05.2025 09:46 >Das Video (oder Guenter) haben nichts miteinander zu tun. Und das der >Junior Speicher bei 0x0200-0x02ff hat ist gegeben. Da ist mir unklar, wie du das meinst. Im Video sieht man zumindest die Zeitschrift.
Christoph M. schrieb: > Klaus (feelfree) > 28.05.2025 09:39 >>Aber es ist halt nicht derselbe, sondern nur der (bau)gleiche Rechner >>der im o.g. Video zu sehen ist. > > Jetzt stellt sich noch die Frage, ob er auch "funktionsgleich" ist. > Ich würde trotzdem gerne den Computer optisch sehen. Vielleicht gab es > ja Varianten. > > Günter: Kannst du ein Bild posten ? Ich bin zwar nicht Guenter, aber: In the Beginning hat Guenter einen Junior-Computer vom Dachboden rausgekramt, funktionslos. Der Rechner ging nach Wolfgang, funktionsfaehig gemacht, Fotos gemacht und zurueck geschickt (an Guenter).
Klaus schrieb: > Du kannst natürlich auch in dein Junior-Computer Buch schauen und die > Hex-Codes dort mühsam zusammenklauben. So hatte ich auch mal angefangen. Allerdings war das Berechnen der Sprünge und Calls extrem nervig und fehleranfällig. Und wenn man auch nur eine Instruktion eingefügt hat, waren alle Berechnungen für die Katz. Das hat mich dann so genervt, daß ich mir in Turbo-Pascal einen Assembler für den 8051 selber geschrieben habe.
Peter D. (peda)
28.05.2025 10:13
>Und wenn man auch nur eine Instruktion eingefügt hat, waren alle >Berechnungen
für die Katz.
Da würde ich auch den Grund dafür sehen, dass das Programm, welches
Günter an Adresse 0x200 programmiert hat für die Adresse 0x300 kodiert
war.
Oder er hat aus vielleicht aus Versehen das Programm in seinen Z80
Computer eingetippt, der ja auch noch rumliegt.
Wolfgang R. schrieb: > Wenn du die Daten schreiben und lesen kannst und sich nichts verändert > hat, dann sind deine RAMs nicht defekt! Das verstehst du falsch. SEINE RAMs SIND defekt. Die des Junior-Computers nicht . . .
Hallo, Falk B. schrieb: > Das verstehst du falsch. SEINE RAMs SIND defekt. Die des > Junior-Computers nicht . . . Falk, lass es einfach gut sein. Ich weiß das dich Günters Verhalten (und auch Josef mit seiner abstrusen 8-Bit-CPU) wahnsinnig macht und kann das auch gut nachvollziehen, aber es hat keinen Zweck immer und immer wieder darauf zurück zu kommen. Nimm es einfach hin, du wirst Günter sowieso nicht erreichen. rhf
Roland F. schrieb: > Falk, lass es einfach gut sein. > Ich weiß das dich Günters Verhalten (und auch Josef mit seiner abstrusen > 8-Bit-CPU) wahnsinnig macht Keine Sekunde. Ich weiß was das Problem dieser Leute ist und ich habe es schon LANGE verstanden und akzeptiert. Aber das Gewusel der Leute hier, die das NICHT kapiert haben und allen Ernstes glauben, dem Günter mit irgendwelchen Hinweisen oder Empfehlungen auch nur eine Sekunde was vermittelen zu können, ist schon amüsant. Naja, nicht wirklich, eher ein Anlaß zum Kopfschütteln. > es einfach hin, du wirst Günter sowieso nicht erreichen. Hab ich keine Sekunde (mehr) vor.
Klaus schrieb: > Da stehen ca. 20 Stück davon im Programm. Danach ein Semikolon und eine > genaue Erklärung, was der Opcode macht. Nö, in dem Programm stehen Mnemonics, die der Assembler in einen für den Prozessor verstehbaren Maschinenbefehl (Opcode) umsetzen soll. Ich frage mich allerdings was der TO mit dem Opcode will, denn den wird er vermutlich noch schlechter verstehen, da das nur Zahlenkolonnen sind. Beispiel (Z80): "inc b" wird zu 0x04. Um das zu verstehen müßte man die komplette Tabelle mit den Mnemonics im Kopf haben.
Günter K. schrieb: > Zum Trost, weil ich selber nichts durch Eingabe erreicht habe, > schreibe ich ein kleines Programm für die 7-Segment-CODE-Anzeige. mit Opcodes - ich lach mich schlapp.
Hans schrieb: > Ich frage mich allerdings was der TO mit dem Opcode will, Eintippen, denn mehr kann der Junior-Computer nicht. Aber so neumodischer Kram wie Assembler will er ja nicht, weil er ja "genau verstehen will, was der Prozessor macht". -> AI (damit meine ich nicht artificial intelligence) > denn den wird > er vermutlich noch schlechter verstehen, da das nur Zahlenkolonnen sind. > Beispiel (Z80): "inc b" wird zu 0x04. Um das zu verstehen müßte man die > komplette Tabelle mit den Mnemonics im Kopf haben. Es hat schon einen Grund, warum in den Anfangsjahren der IT Assembler erfunden wurde und nicht mehr mit Maschinencode programmiert wurde. Aber bestimmte Leute verstehen das halt nicht . . .
Ooohh, soo viele Infos Hallo liebe Leute, Christoph M. schrieb: >>Klaus (feelfree) >>26.05.2025 17:25 > > Das dürfte falsch sein: das ORG muss vor dem Label stehen, sonst ist > z.B. PADD=0x$1A80 statt 0x$1A81. > PAD: .org $1A80 > PADD: .org $1A81 > PBD: .org $1A82 > PBDD: .org $1A83 Ja, der Begriff "Label" erscheint oder erschien mir neu. Weil ich das noch nicht kannte, nannte ich das mal TARGET, oder Ziel. Für mich, der OP-CODES eingeben muss, stelle ich das ganz nach vorne. Für mich als Anfänger, ist es einfacher die MNEMONICS mitzuschleppen, als direkt in ASSEMBLER zu programmieren. Was aber noch wichtig für mich ist, das sind die u/Zeiten/u. Denn ich muss, in dem vorstehenden Programm für mehrere Töne und sei es der Gleiche, in der SR "ausscheren" bzw. dort etwas tun, zB.: ZP-Incrementieren, das reicht innerhalb einer Halbwelle im höchsten Ton. Warum dort(?), weil dort die Zeit, die Kürzeste ist. Ich muss die Arbeit auf mehrere Halbwellen verteilen. Im Moment stelle ich mir vor, dass die Zeit sehr knapp ist. Aber auch der kürzeste Ton wird mehrere Halbwellen haben, Nicht nur die positive- sundern auch die negative Halbwelle, - so dass, die Symmetrie erhalten bleibt, und die Pausen-Länge, die Ton-Höhe, die Ton-Länge bestimmt werden kann, aus dem dann die Gesamt-Länge zusammengesätzt werden kann. b/Nur so, kann ich mich in die Problematik für eine Lösung hineindenken./b Nur sogesehen sind die Vorschläge nicht so schlecht. Irgendwelche überflüssigen Bemerkungen, von wem auch immer, übersehe ich einfach. - Ich übersehe aber nicht, die Zusammenhänge die dazu führen könnten. Gleich bekomme ich Besuch, muss vorbereiten. Liebe Grüße Günter K. (ENK)
Günter: Kannst du ein Bild des Computers posten ?
Hier mal kurz was für die Profis: Ich versuche gerade den cc65 dazu zu bringen, Code für den Junior-Computer zu erzeugen: https://cc65.github.io/ Für verschiedene Computermodelle gibt es unterschiedliche Konfigurationsfiles. Welches ist das kleinst Modell in der Liste des oben aufgeführten Modelle, die dem Junior-Computer am nächsten kommen?
Christoph M. schrieb: > Das dürfte falsch sein: das ORG muss vor dem Label stehen, sonst ist > z.B. PADD=0x$1A80 statt 0x$1A81. Ja, das sehe ich auch so. Assembler arbeiten jede Zeile von links nach rechts ab. Erst wird also PADD auf den gerade gültigen PC gesetzt und danach der PC auf den Wert der org-Anweisung. Oft erlauben Assembler solche Fehler auch nicht. Ein Label darf nicht in einer Zeile mit einer Präprozessoranweisung stehen. Gute Programmierer schreiben ein Label immer in eine extra Zeile ohne weitere Statements. Das erhöht die Übersichtlichkeit.
Günter K. schrieb: > b/Nur so, kann ich mich in die Problematik für eine Lösung > hineindenken./b Kannst du nicht. Du könntest aber eines der hier vielfache geposteten Programme, die teilweise ganze Tonleiter oder Melodien spielen, mit richtigen Tonlängen, versuchen zu verstehen. Aber das willst du ja nicht. Stattdessen schwadronierst du über alles, nur nichts über was dich weiterbringt.
Peter D. schrieb: > Christoph M. schrieb: >> Das dürfte falsch sein: das ORG muss vor dem Label stehen, sonst ist >> z.B. PADD=0x$1A80 statt 0x$1A81. > > Ja, das sehe ich auch so. > Assembler arbeiten jede Zeile von links nach rechts ab. > Erst wird also PADD auf den gerade gültigen PC gesetzt und danach der PC > auf den Wert der org-Anweisung. Kannst Du Dich noch an Single-Pass oder Double-Pass-Assembler erinnern? Beim Double-Pass wurden beim zweiten Durchlauf die noch offenen Labels bestimmt. War natuerlich nur spannend bis schnelle Massenspeicher (vulgo 8"-Disketten) auf den Markt kamen :-) > Gute Programmierer schreiben ein Label immer in eine extra Zeile ohne > weitere Statements. Das erhöht die Übersichtlichkeit. Unabhaengig von Sprache und CPU: Da hast Du recht, da hast Du so recht. Aussergewoehnliche Programmierer wuerden sogar einen Kommentar spendieren (frei nach: Real programmers don’t comment their code. If it was hard to write it should be hard to read).
:
Bearbeitet durch User
Christoph M. schrieb: > Hier mal kurz was für die Profis: Ich versuche gerade den cc65 dazu zu > bringen, Code für den Junior-Computer zu erzeugen: > > https://cc65.github.io/ > > Für verschiedene Computermodelle gibt es unterschiedliche > Konfigurationsfiles. Welches ist das kleinst Modell in der Liste des > oben aufgeführten Modelle, die dem Junior-Computer am nächsten kommen? So aus der kurzen Liste muesste der Sym-1 die kleinste Maschine (RAM bei 0x0000-0x0fff, beim Junior waere das 0x0000-0x07ff [ich habe die Expansion-Card]). Es fehlt natuerlich Stdio.h (Du hast kein I/O), es fehlt Disk i/o.
Peter D. schrieb: > Oft erlauben Assembler solche Fehler auch nicht. Ein Label darf nicht in > einer Zeile mit einer Präprozessoranweisung stehen. Eigentlich nimmt man für solche Konstantendefinitionen auch SET, EQU oder =, je nach Syntax des Assemblers. Also
1 | PAD: equ $1A80 |
2 | PADD: equ $1A81 |
3 | PBD: equ $1A82 |
4 | PBDD: equ $1A83 |
:
Bearbeitet durch User
Christoph M. schrieb: > Hier mal kurz was für die Profis: Ich versuche gerade den cc65 dazu zu > bringen, Code für den Junior-Computer zu erzeugen: Thomas W. (datenreisender) 28.05.2025 15:54 >So aus der kurzen Liste muesste der Sym-1 die kleinste Maschine (RAM bei >0x0000-0x0fff, beim Junior waere das 0x0000-0x07ff [ich habe die >Expansion-Card]). Ich habe es hier mal mit dem "blink" Programm versucht: Beitrag "6502 C-Compiler cc65" Compilieren tut es, auch wenn ich als Platform 'none' auswähle. > Es fehlt natuerlich Stdio.h (Du hast kein I/O), es > fehlt Disk i/o. Da liegt ein wenig die Herausforderung: Man muss irgendwie ein Maschinenmodell ohne diese Peripheriebibliotheken verwenden, damit nicht einige riesige Library mit-gelinkt wird. Ich könnte die relevanten Code-Teile aus dem Compiler-Output heraus kopieren und dann Assemblieren, aber dass ist mühsam und eigentlich muss der Prozess ja in der Lage sein, den Hex-Code an der richtigen Stelle zu erzeugen.
Christoph M. schrieb: > der Prozess ja in der Lage sein, den Hex-Code an der richtigen Stelle zu > erzeugen. www.ams80.com
> www.ams80.com
Ja schon. Aber in der cc65 Tool-Chain befindet sich ja auch der ca65
Assembler, mit dem es auch gehen müsste. Die Betonung liegt auf
'müsste', weil wie im anderen Thread schon angemerkt, bräuchte ein
C-Compiler ja auch einen Start-Up code.
Christoph M. schrieb: > Ja schon. Aber in Du macht es auch immer gern möglichst umständlich und kompliziert, was? Beitrag "Re: Einfache CPU, einfacher Rechner, nur zum Lernen, Erfahrung?" Einfacher und SINNVOLLER geht es in diesem Rahmen nicht.
Cyblord -. schrieb: > dann kommt dazu dass plötzlich jeder C64-Opa hier > meint, jetzt sei die Stunde irgendwelchen Kruden Details oder Anekdoten > zu Assembler rauszuhauen. Liebe Leute, das hatte ich überlesen, lieber Cyblord, bitte, wie war das gemeint? Bitte was heißt: "... jeder C64-Opa hier ...", gibts hier noch mehr? Bitte was heißt: "... die Stunde irgendwelchen Kruden Details ..."? Bitte was ist gemeint mit: "... Anekdoten > zu Assembler rauszuhauen." Ich bin kein Fachmann, in dieser Sache, das habe ich auch nie behauptet. Jetzt kommt noch die Antwort auf die Frage: Cyblord -. schrieb: > Vielleicht sollte der TE auch nochmal klarstellen was genau sein > (Lern)Ziel ist. Nun ja: Ich möchte, durch das logische Verhalten des Computers verstehen, - und Sachen machen, was man mit dem Computer machen kann. Es braucht nicht nur der JC zu sein, aber ich möchte verstehen. Natürlich, ich finde, der JC ist ein mit dem 6502 schöner Computer, bei dem ich auch noch viele Befehle lernen muss. Zwar stelle ich es mir mit einem Timer leichter vor, aber es ist eine Herausforderung, so wie Klaus es vorschlägt. - Vielleicht sollte ich auch nicht so vorschnell sein, -und so finde ich, erstmal die dazugehörenden Gedanken zusammenfassen, bevor ich sie so wie ich es mir vorstelle, zu Papier bringen und dann erst vorstellen. Jetzt muss ich noch einkaufen gehen. Liebe Grüße Günter K. (ENK)
Günter K. schrieb: > Zwar stelle ich es mir mit einem Timer leichter vor, aber es ist eine > Herausforderung, so wie Klaus es vorschlägt. Es ist vielleicht für einen im IT-/Programmierbereich normal vorgebildeten Menschen eine kleine Herausforderung. Für dich ist es jedoch schlicht unmöglich. > Ich möchte, durch das logische Verhalten des Computers >verstehen Also vergiss dein Vorhaben, Assembler zu lernen. Such dir was Einfacheres und besser zu Bedienendes. Grundsätzlich hast Du ja kein Problem damit, einen Computer zu bedienen, wenn ich mir deine mit Excel erstellten Programmierversuche so anschaue.
:
Bearbeitet durch User
Vielleicht sind die bisherigen Programme für Günter auch zu kompliziert. Es stellt sich also die Frage: Was wäre das einfachste Programm, das etwas tut. Man könnte z.B. die Ports so beschreiben, dass das erste Siebensegment-Display eine '8' anzeigt. Weiß jemand, wie man das macht?
Christoph M. schrieb: > Man könnte z.B. die Ports so beschreiben, dass das erste > Siebensegment-Display eine '8' anzeigt. > Weiß jemand, wie man das macht? Ja. Ich. Im Anhang findest Du den IO-Teil des Juniors. Das Display ist gemultiplexed und PB1-PB4 waehlen die Stelle des Displays aus, PA0-PA6 waehlen das entsprechende Segment des Displays aus. Damit Du wirklich ein "Zeichen" auf dem Diplay angezeigt bekommst, musst Du das Display dann alle paar Millisekunden updaten. Die Beschreibung findest Du im Elektor-Junior Buch II, p. 131. Die Routinen SHOW und CONVD findest Du auch erklaert. Und die Beschreibung ist sogar recht gut, selbst ich habe das damals als 16-Jaehriger verstanden. Fuer Guenter ist das nix, die Ton-Erzeugung ab p.45 im gleichen Buch bekommt er ja auch nicht hin. ---- P.S.: Das war ein wenig falsch oder vereinfacht: Man kann mit Auswahl von Pb1-4 eine Stelle auswaehlen und dann ein Pattern auf dieser Stelle anzeigen. Aber: Es ist eigentlich fuer Multiplexing gerechnet, die 68Ohm-Widerstaende sind etwas zu klein, und die Stroeme ins das Display etwas zu gross.
:
Bearbeitet durch User
Thomas W. (datenreisender)
29.05.2025 09:57
>PB1-PB4 waehlen die Stelle des Displays aus, PA0-PA6
Danke dafür.
Dann müsste
1 | lda #$ff |
2 | sta PBDD ; PORT B alles auf Ausgang |
3 | sta PADD ; PORT A alles auf Ausgang |
4 | sta PAD ; alle Segmente an |
5 | lda #2 |
6 | sta PBD ; erstes Digit auswählen |
7 | brk |
auf der ersten Anzeige eine helle '8' erzeugen. Korrekt?
Christoph M. schrieb: > Thomas W. (datenreisender) > 29.05.2025 09:57 >>PB1-PB4 waehlen die Stelle des Displays aus, PA0-PA6 > > Danke dafür. > Dann müsste >
1 | > lda #$ff |
2 | > sta PBDD ; PORT B alles auf Ausgang |
3 | > sta PADD ; PORT A alles auf Ausgang |
4 | > sta PAD ; alle Segmente an |
5 | > lda #2 |
6 | > sta PBD ; erstes Digit auswählen |
7 | > brk |
8 | > |
> auf der ersten Anzeige eine helle '8' erzeugen. Korrekt? Noe. Du hast den 74145 vergessen (Du hattest die Schaltplaene selbst gepostet Beitrag "Re: Einfache CPU, einfacher Rechner, nur zum Lernen, Erfahrung?"). Die Adresse der Displaystellen sind 0x08,0x0a,0x0c,0x0e,0x10 und x012. Mit einem beherzten lda #0x08 solltest Du die erste Stelle mit ca. 50 - 70mA bestromen :-) Schoen hell, aber die Effizienz der 40 Jahren alten Displays sind so oder so nicht mehr so prall.
Falk B. schrieb: > Es hat schon einen Grund, warum in den Anfangsjahren der IT Assembler > erfunden wurde und nicht mehr mit Maschinencode programmiert wurde. Aber > bestimmte Leute verstehen das halt nicht . . . Natürlich hat das einen Grund warum man die Rechner mit einer für Menschen verständlicheren Sprache programmieren wollte. Die Opcodes, die noch dazu für jeden Prozessor anders waren/sind, kann sich eigentlich keiner merken. Die Mnemonics kann man sich leichter merken, zumal sie i.d.R. von der Bezeichnung her mehr oder weniger selbstsprechend waren. Mit der Assemblersprache wurde es auch möglich Code leichter austauschbar zu machen, weil die Übersetzung in den Opcode der zum Prozessor passende Assembler gemacht hat. Und ja natürlich hat man Anfangs die Hexzahlenkolonnen zu Fuß eingehackt, allerdings kenne ich persönlich niemanden, was natürlich nichts bedeuten muß, der Programme im Opcode entwickelt hat. Da stand am Anfang immer ein Assemblerlisting. Meist hat man dann nach den Zeilennummern eine Spalte frei gelassen, wo man nach dem Erstellen des Programmes den Opcode eingetragen hat. War eigentlich auch gar nicht anders möglich, da man die Sprungadressen ja erst berechnen konnte, wenn das Programm fertig war. Ich habe mal eine zeitlang beruflich mit Assembler am E60/E100 (sowjetische PDP11 Clone) arbeiten müssen. Allerdings hat man dort die Mnemonics in einem recht einfachen Editor eingegeben und dann mit dem Assembler übersetzen lassen. Allerdings hat der Assembler das Objektfile dann auf Diskette gespeichert und man mußte das natürlich nicht mehr per Hand eintippen.
Thomas W. (datenreisender) 29.05.2025 11:04 >Mit einem beherzten lda #0x08 solltest Du die erste Stelle mit ca. 50 - >70mA bestromen :-) Schoen hell, aber die Effizienz der 40 Jahren alten >Displays sind so oder so nicht mehr so prall. (5V-1.6V)/68 Ohm = 50mA .. Da wäre die Frage, wie groß der Spannungsabfall am 74154 und dem ULN ist. Da geht bestimmt noch mal was weg, so dass es keinen "KillerPoke" für den Juniorcomputer gibt. Falls ich es bisher unterging: Ich habe keinen Juniorcomputer, sondern nur die Virtualisierung auf dem PiPico: Beitrag "6502 Emulator PiPico" Deshalb frage ich genau nach, wie die Hardware anzusteuern ist. Beim Ablesen aus dem Schaltplan verdreht man gerne mal Bits- und Polaritäten. Plötzlich ist die Anzeige dann Low- statt High-aktiv.
Christoph M. schrieb: > Thomas W. (datenreisender) > 29.05.2025 11:04 >>Mit einem beherzten lda #0x08 solltest Du die erste Stelle mit ca. 50 - >>70mA bestromen :-) Schoen hell, aber die Effizienz der 40 Jahren alten >>Displays sind so oder so nicht mehr so prall. > > (5V-1.6V)/68 Ohm = 50mA .. Da wäre die Frage, wie groß der > Spannungsabfall am 74154 und dem ULN ist. Da geht bestimmt noch mal was > weg, so dass es keinen "KillerPoke" für den Juniorcomputer gibt. Nein, den "Killerpoke" gibt es nicht, aber ein "Kill-Switch" war die Abschaltung des Displays: Der Spike hat die CPU oft aus dem Takt geworfen. > Deshalb frage ich genau nach, wie die Hardware anzusteuern ist. Beim > Ablesen aus dem Schaltplan verdreht man gerne mal Bits- und Polaritäten. > Plötzlich ist die Anzeige dann Low- statt High-aktiv. Wenn man auf Port A (PAD) eine 0x00 schreibt bekommt man eine "8" ein Display, schreibt man eine 0x7f rein bekommt man eine "Leerstelle" (alles lt. Junior Buch II, mein Junior liegt z.Z. im Schrank).
>Wenn man auf Port A (PAD) eine 0x00 schreibt bekommt man eine "8" ein >Display, schreibt man eine 0x7f rein bekommt man eine "Leerstelle" Das ist die wichtige Information :-)
Christoph M. schrieb: > Oh, das ist jetzt eine neue Erkenntnis. Ich dachte die ganze Zeit, wir > diskutieren hier über einen Junior-Computer mit 6502. Oh maan du bist echt nicht die hellste Kerze im Leuchter oder?
Günther, das wäre doch eine schöne Aufgabe für dich: Wie zeigt man eine 4 statt einer 3 ?
1 | ; Junior Computer Siebensegmentansteuerung |
2 | ; |
3 | ; 7 segement codes |
4 | ; $C0, # 0 |
5 | ; $F9, # 1 |
6 | ; $A4, # 2 |
7 | ; $B0, # 3 |
8 | ; $99, # 4 |
9 | ; $92, # 5 |
10 | ; $82, # 6 |
11 | ; $F8, # 7 |
12 | ; $80, # 8 |
13 | ; $90 # 9 |
14 | |
15 | ; MOS6532 PIA addrese $1A80 |
16 | PAD=$1A80 |
17 | PADD=$1A81 |
18 | PBD=$1A82 |
19 | PBDD=$1A83 |
20 | |
21 | .org 300 |
22 | lda #$ff |
23 | sta PBDD ; PORT B alles auf Ausgang |
24 | sta PADD ; PORT A alles auf Ausgang |
25 | |
26 | lda #$B0 ; Zahl 3 |
27 | sta PAD ; Segmente schreiben |
28 | |
29 | lda #8 ; Adresse 8 für erstes Display |
30 | sta PBD ; erstes Digit auswählen |
31 | |
32 | brk |
Hex-Code zum Eintippen in den Junior-Computer:
1 | 0300: A9 FF 8D 83 1A 8D 81 1A |
2 | 0308: A9 80 8D 80 1A A9 08 8D |
3 | 0310: 82 1A 00 |
Christoph M. schrieb: > Günther, das wäre doch eine schöne Aufgabe für dich: Wie zeigt man eine > 4 statt einer 3 ? Du bist ein Optimist ;-) Na wenn schon, dann bitte als Tabelle oder wenigstens als direkt nutzbare Konstante. Denn sonst hat man wieder haufenweise magische Zahlen, die man eigentlich nicht haben will.
1 | ; 7 segement codes |
2 | Z0 = $C0 |
3 | Z1 = $F9 |
4 | Z2 = $A4 |
5 | Z3 = $B0 |
6 | Z4 = $99 |
7 | Z5 = $92 |
8 | Z6 = $82 |
9 | Z7 = $F8 |
10 | Z8 = $80 |
11 | Z9 = $90 |
12 | |
13 | lda #Z3 |
So klappt das nicht: Um den BRK zu benutzen muss der Reset-Vector $1c00 in $1A7E (= 0x00) und $1a7f = (0x1c) geschrieben werden. Ich bin mir sicher, dass Guenter das nie gemacht hat (das haette er bestimmt mit einer PowerPoint-Folie erklaert). Wenn der Vektor gesetzt waere, wuerde das Display kurz flackern und dann wieder den Programmcounter (0x0314) anzeigen. Es ist auch ganz gross in Kapitel 3 ("Programmieren") auf p.57 des Junior-Computer Buch I erklaert. Das ist doch alles Humbug.
:
Bearbeitet durch User
Thomas W. schrieb: > Ich bin mir > sicher, dass Guenter das nie gemacht hat (das haette er bestimmt mit > einer PowerPoint-Folie erklaert). wie auch? Der Junior hat nur RAM von 0x000..0x03FF. Die Adresse 0x1A7E liegt im Eprom, dass man bekanntlich nicht beschreiben kann. Ich weiß ja nicht woher du deine Infos hast, aus dem Buch ganz sicher nicht.
Thomas Z. schrieb: > Thomas W. schrieb: >> Ich bin mir >> sicher, dass Guenter das nie gemacht hat (das haette er bestimmt mit >> einer PowerPoint-Folie erklaert). > > wie auch? Der Junior hat nur RAM von 0x000..0x03FF. Die Adresse 0x1A7E > liegt im Eprom, dass man bekanntlich nicht beschreiben kann. Noe. Die 6532 (RIOT, RAM + IO + Timer) ist bei 0x1A00 - 0x1AFF. Fuer Dich dann: 0x1A00 - 0x1A7F sind 128 Bytes RAM im RIOT, 0x1A80 - 0x1A83 ist IO und dann ganz viele Timer und Flankendetektoren (PA7). > Ich weiß ja > nicht woher du deine Infos hast, aus dem Buch ganz sicher nicht. Fuer Anfaenger: Junior Buch I und II, speziell Buch II, Kapitel 6, Page 33 bis 99, Elektor-Verlag, 1980. P.S.: Mit Bild: Beitrag "Re: Einfache CPU, einfacher Rechner, nur zum Lernen, Erfahrung?"
:
Bearbeitet durch User
Hallo liebe Leute, ich hatte auch das Junior-Buch II, hier schon auf dem Schirm gehabt. Da las ich auch von den Flanken-Detektoren. (Jetzt aber nicht mehr gefunden.) Unter anderem las ich von einer Art-Klaviatur. Heute auf Chr.-Himmelfahrt, fand ich noch 6 Tasten;(für 6 Töne) für diese Tasten, fand ich ein schönes Lied (welches ich noch nicht nenne). Diese 6 Tasten, werde ich auf eine Europa-Platine löten. Das Lied hat nur 6 Töne, aber -zum Scherz-, passen diese, - so, auf einer Europa-Platine, dass ich nur wenig Brücken legen brauche, die Leiterbahnen in Längsrichtung (-weitgehend-*) nicht unterbrochen werden. Die Schalter haben 4 Anschlüsse, von der je 2 auf der Leiterbahn liegen. (*-Schutz-Dioden-). Die 6 Tasten, passen auf die Breite der Platine, - in Längs-Richtung liegen die Leiterbahnen der Platine. Dafür wird das Lied programmiert, die Taster auf sortiert. Nach der üblichen C-Dur-Tonleiter hat das Lied keine Halbtöne. (Je nach Ansicht-weise aber wohl, dann liege C, D, E, höher. – Diese Sichtweise ist aber nicht wichtig!).Das Lied, spielt aber leider, nicht automatisch. In diesem Falle hier, muss man Programmieren. - Ein solches "Programm" schrieb ich schon mal für den C64 in Maschinensprache. Warum schreibe ich "Programm" zwischen "" - ? Weil dieses "Programm" im Wesentlichen, nur Zuweisungen waren. Das ist sehr lange her. Die Tastensetzung machte ich in diesem Falle nach der Fingerzählung für die Violine, z.B.: 1., 2., 3. u. 4. Finger, wobei der 4. Finger die volle Quinte ist. (Manchmal ist er bei der Violine im Notenblatt vorgeschrieben.) - (ich spiele aber keine Violine mehr. Das Banjo ging beim Umzug zu Bruch.) Die Ordnung der Abstände auf den Violinen-Brett, sind nicht gleich. Wohl aber die Zählung nach Noten. - So, setzte ich die Tasten auf dem C64; - und für den Halbton (beim Notenzeichen) eine zusätzliche Taste. Der Prozessor hieß 65010 und steuerte direkt die Sound-Register, die man direkt absprechen konnte. Der C64 hatte keine 64K sondern nur 52K der Rest war 'gespiegelt' wie man es nannte. Bestimmte Bus-Leitungen stellten kein CS (Chip Select) zur Verfügung, das wirkt sich so aus -als wenn- dort auch Daten vorhanden wären. Der PET hatte nur 4 K. - Mein CBM-PET hatte nur 8 K, den hatte ich selbst erweitert auf 32 K. Danach wurde er erweitert auf 80 Zeichen, Gros-Klein-Schrift und Zusatz-Monitor; und für einige weitere Software-Erweiterungen; - das hatte ich selber nicht mehr gemacht. - Gute Nacht liebe Leute! Liebe Grüße Günter K. (ENK)
:
Bearbeitet durch User
Hallo Liebe Leute, guten Morgen, ich habe eine kurze Frage, welche Funktion hat ORG. - ? Liebe Grüße Günter K. (ENK)
Günter K. schrieb: > In diesem Falle hier, muss man Programmieren. Was du leider nicht kannst und auch nie können wirst. Wie kommt man nur auf die völlig wahnsinnige Idee, wenn man es noch nicht mal geschafft hat, 2 verschiedene Töne abzuspielen? Das ist wie ein 3-jähriger, der es gerade geschafft hat, mit seinem Fahrrad mit Stützrädern sich den ersten Meter vorwärts zu bewegen, und dann verkündet, er steige jetzt aufs Einrad um. Günter K. schrieb: > welche Funktion hat ORG Abkürzung für Origin, zu deutsch Ursprung -> die Adresse wo der Code abgelegt wird.
Klaus schrieb: > Das ist wie ein 3-jähriger, der es gerade geschafft hat, mit seinem > Fahrrad mit Stützrädern sich den ersten Meter vorwärts zu bewegen, und > dann verkündet, er steige jetzt aufs Einrad um. 3-Jährige sind prädestiniert das zu schaffen (und fast nur die!). Die fliegen ein paarmal kapital auf die Nase, heulen, steigen wieder auf und fahren. Bei Erwachsenen ist das nahezu aussichtslos.
Hallo liebe Leute, Thomas W. schrieb: > Christoph M. schrieb: > >> Man könnte z.B. die Ports so beschreiben, dass das erste >> Siebensegment-Display eine '8' anzeigt. >> Weiß jemand, wie man das macht? Ja, Wolfgang R. schickte mir mal so etwas, hier in die Liste. Ich hatte es ausprobiert, und es hatte geklappt!! - Darüber freute ich mich sehr! DANKE lieber Wolfang R. Das muss ich mir nochmal heraussuchen. Das war dadurch, weil ich mich erinnerte, als ich den JC gekauft hatte, dass der JC: scheinbar selbständig "Junior" auf dem DISPLAY schrieb. Nun das ist ja -so- lange her, dass ich nicht mehr weiß, wie es dazu kam. Vermutlich ein Auszug aus dem MONITOR. Und so, wie ich es jetzt sehe, könnte man: "DISPLAY" auch auf dem DISPLAY durchlaufen lassen, denn es sind 7 statt 6 Zeichen, oder mal "DSPLAY" schreiben. Das JC-Buch II downloade ich mir nochmal auf meinen Computer. Dankeschön für Eure Ideen!! Eines muss ich ganz ehrlich sagen, ich bin nicht so gebildet, und ich behalte auch nicht alles, aber noch vieles. Nachher kaufe ich noch weitere 7 Schälterchen, u. Dill-Schälterchen. Dann kann ich so noch weitere Töne dazu wählen (ander abwählen); dann wird die Europakarte mehr bestückt. (Für die Spielerei!) Dann kann man -irgendwie-, mehr Töne wählen. Die LEGO-Bausteine passen auch auf diese Schalterart. Somit, könnte man auch lange Tasten bauen; diese brauche aber 2 Taster zum wippen. So, ich fahre jetzt in die Stadt. Muss mich beeilen! Liebe Grüße Günter K. (ENK)
Günter K. schrieb: > > Das war dadurch, weil ich mich erinnerte, als ich den JC gekauft hatte, > dass der JC: scheinbar selbständig "Junior" auf dem DISPLAY schrieb. > Nun das ist ja -so- lange her, dass ich nicht mehr weiß, wie es dazu > kam. Ganz einfach: Du hast die Elektor 05/1980 gesehen (siehe Anhang). Und das Prograemmchen zum Anzeigen des Textes "Junior" kam spaeter. > Vermutlich ein Auszug aus dem MONITOR. Noe.
Günter K. schrieb: > Nachher kaufe ich noch weitere 7 Schälterchen Sag mal, willst Du uns eigentlich verarschen? Liest Du nicht was wir schreiben? Du schaffst es nicht, 2 Töne hintereinander abzuspielen, willst aber nun wieder 15 Schritte weiter gehen? Nochmal für dich ganz klar: DU SCHAFFST DAS NICHT.
Klaus schrieb: > DU SCHAFFST DAS NICHT. Du auch nicht. Beitrag "Re: Einfache CPU, einfacher Rechner, nur zum Lernen, Erfahrung?"
Günter schrieb:
> Welche Funktion hat ORG
1 | Die ORG-Direktive (kurz für "Origin") im 6502-Assembler legt die Startadresse im Speicher fest, ab der der nachfolgende Code oder die Daten abgelegt werden sollen. Mit ORG bestimmst du also, an welcher Adresse im Speicher dein Programm oder ein bestimmter Abschnitt davon beginnt. Das ist besonders wichtig, wenn du Programme für Systeme schreibst, bei denen der Code an einer festen Speicherstelle erwartet wird, wie z.B. bei ROMs oder beim Startvektor eines Rechners |
Hallo Günter, für solche Fragen nimmst du am besten https://www.perplexity.ai/ Wenn du folgendes eintippts: 6502 assembler: welche Funktion hat ORG kommt die obige Antwort. Die ist deutlich ausführlicher, als das was wir dir hier erklären können und du verstehst sie besser. Wenn dann was unklar ist, frage die KI einfach weiter.
Hallo liebe Leute, lieber Christoph M., Du hast ja schon alles richtig gesagt, DANKESCHÖN! Die https://www.perplexity.ai/ hat hier dieses Mal nicht richtig reagiert Als ich die Frage nach dem FLAG stellte aber wohl; auch hierfür ein DANKESCHÖN dafür. Und Leute, vor allen Dingen Klaus, ich habe mir schon Gedanken gemacht, (Wie gewüscht, ohne TIMER) nachher bin ich zu einer Geburtstagsfeier eingeladen. Gestern war Grillen, das war sehr schön und freue mich jetzt zur Geburtstags-Feier zu gehen. Das Programm, welches ich schreiben werde heißt: Martinshorn.(asm) Allerdings leider nur, vorläufig NUR wie gewohnt in Maschinensprache mit beigefügten MNEMONICS. Später, wenn ich mich mal mit dem Compiler und den Loops beschäftigt habe, Dann weiß ich vielleicht teilweise, was da passiert. Kurzum, ich habe mir schon Gedanken gemacht. Liebe Grüße Günter K. (ENK)
Günter K. schrieb: > Martinshorn LOL. Bist du wirklich so extrem beratungsresistent oder doch ein Troll?
Klaus schrieb: > LOL. Bist du wirklich so extrem beratungsresistent oder doch ein Troll? Dann besiege doch mal dein Helfersyndrom und sehe ein dass das hier alles keinen Sinn macht. Egal ob Troll oder völlig weggetreten.
Cyblord -. schrieb: > Dann besiege doch mal dein Helfersyndrom Mach ich - versprochen! - spätestens nachdem Du dein Mecker- und Rant-Syndrom in den Griff bekommst.
Klaus schrieb: > Mach ich - versprochen! - spätestens nachdem Du dein Mecker- und > Rant-Syndrom in den Griff bekommst. Traurig wenn man das eigene Verhalten vom Verhalten anderer abhängig machen muss. Entweder du hältst es für sinnvoll hier zu helfen oder nicht. Was hat das mit mir zu tun?
Cyblord -. schrieb: > Traurig wenn man Ironie erst mit passenden Smilies versteht. Cyblord -. schrieb: > Was hat > das mit mir zu tun? Tja, wer hat mir denn den Ratschlag gegeben?
Klaus schrieb: > wenn man Ironie erst mit passenden Smilies versteht. Nur dass es keine Ironie war und das wissen wir beide. Armselig ist es übrigens auch, erst mal Unsinn zu labern und dann hinterher "Ironie!" zu rufen. Steh zu deinen Aussagen!
Moin, Ich bin der Meinung, daß man Günter auf seine eigene Art und Weise lernen lassen muß. In seinem Alter ist das vielleicht ganz natürlich. Ich merke es auch bei mir selber, daß ich mich nicht mehr so flexibel wie früher bin. Deshalb kann ich die Dichotomie zwischen Euch und ihm gut verstehen. Ich bewundere andrerseits auch Eure verständnisvolle Geduld und Ausdauer. Persönlich würde ich zu Arduino oder Bascom auf Arduino raten. Da hat man eben eine komplett ausgearbeitete Arbeitsumgebung und standardisierte HW. Auch in einer Hochsprache wie BASIC oder auch C kann man die Prinzipien des Programmieren ausreizen. Und letztlich lassen sich benützbare Gerätschaften damit bauen. Da wäre sogar eine der vielen Arduino Baukoffer, gefüllt mit vielen netten Peripheriebausteinen und Steckbrett praktisch. Duck und weg...
Hallo Günter, hier noch mal das verbesserte Siebensegmentprogramm. Am Anfang habe das .org beschrieben. Dank dem Hinweis von Thomas wird das Programm jetzt mit einer Endlosschleife quasi "angehalten", so dass die Zahl stehen bleibt und nicht gleich verschwindet.
1 | ; Junior Computer Siebensegmentansteuerung |
2 | ; |
3 | ; original version: |
4 | ; 2025-05-29, mchris |
5 | ; improvements: Falk B., Thomas W. |
6 | ; |
7 | ; 7 segement codes |
8 | |
9 | Z0 = $C0 |
10 | Z1 = $F9 |
11 | Z2 = $A4 |
12 | Z3 = $B0 |
13 | Z4 = $99 |
14 | Z5 = $92 |
15 | Z6 = $82 |
16 | Z7 = $F8 |
17 | Z8 = $80 |
18 | Z9 = $90 |
19 | |
20 | ; MOS6532 PIA addrese $1A80 |
21 | PAD=$1A80 |
22 | PADD=$1A81 |
23 | PBD=$1A82 |
24 | PBDD=$1A83 |
25 | |
26 | .org $300 ; Startaddresse für den Assemblercode |
27 | |
28 | lda #$ff |
29 | sta PBDD ; PORT B alles auf Ausgang |
30 | sta PADD ; PORT A alles auf Ausgang |
31 | |
32 | lda #Z3 ; Zahl 3 |
33 | sta PAD ; Segmente schreiben |
34 | |
35 | lda #8 ; Adresse 8 für erstes Display |
36 | sta PBD ; erstes Digit auswählen |
37 | |
38 | end: |
39 | jmp end ; springe immer wieder zum ende (Programm bleibt quasi stehen) |
Hier noch der Hex-Code zum eintippen.
1 | 0300: A9 FF 8D 83 1A 8D 81 1A |
2 | 0308: A9 99 8D 80 1A A9 08 8D |
3 | 0310: 82 1A 4C 12 03 |
Das Designziel hier war ein möglichst kurzer Code, so dass man nicht so viel tippen muss.
Cyblord -. schrieb: > Armselig ist es übrigens auch, anderen Ratschläge geben zu wollen während man selbst vollkommen immun gegen jedwede Kritik ist. > Steh zu deinen Aussagen! Selbstverständlich. Das Gesagte gilt!
Björn W. (bwieck)
31.05.2025 16:38
>Der Hexcode stellt Zahl 4 dar..
Krass, habe es gerade ausprobiert, du hast tatsächlich Recht. Ich hätte
nicht gedacht, dass jemand so genau hinschaut. Wie hast du denn das
gesehen?
Da muss mir wohl beim kopieren ein Fehler unterlaufen sein ..
aber jetzt:
1 | 0300: A9 FF 8D 83 1A 8D 81 1A |
2 | 0308: A9 B0 8D 80 1A A9 08 8D |
3 | 0310: 82 1A 4C 12 03 |
Christoph M. schrieb: > Da muss mir wohl beim kopieren ein Fehler unterlaufen sein .. > > aber jetzt: Ist dir klar dass der TE sich absolut gar nichts aus deinen kleinen Aufgaben macht, ja sie nicht mal wahrnimmt? Ich meine klar, du machst nicht den Eindruck als ob es dich juckt ob dir jemand bei deinem Schwafeln zuhört, aber selbst DU könntest ja jetzt auch mal kapiert haben, dass beim TE kein Licht brennt.
Cyblord -. schrieb: > Ist dir klar dass der TE sich absolut gar nichts aus deinen kleinen > Aufgaben macht, ja sie nicht mal wahrnimmt? Ist dir klar, dass wir uns absolut gar nichts aus deinen ständigen Stänkereien machen, weil der Cyblord halt mal so ist wie er ist?
Christoph M. schrieb: > Wie hast du denn das > gesehen? Och.. Hat bestimmt damit zu tun, daß ich früher viel mit Maschinencode Monitoren auf dem C64 gespielt habe.. Da bleibt offenbar was hängen ;)
Hallo Günter, um zu lernen, wie man ein System programmiert, ist es am einfachsten, bestehenden Code zu nehmen und schrittweise Änderungen daran vorzunehmen. Hier mal ein Programm, dass den Timer benutzt und bis 3 zählt. Als Übung kannst du die Zahlenausgabe ändern oder den Sprung so ändern, dass das Zählen wiederholt wird.
1 | ; Junior Computer Siebensegmentansteuerung |
2 | ; bis 3 zählen |
3 | ; |
4 | ; original version: |
5 | ; 2025-05-32, mchris |
6 | ; |
7 | ; 7 segement codes |
8 | |
9 | Z0 = $C0 |
10 | Z1 = $F9 |
11 | Z2 = $A4 |
12 | Z3 = $B0 |
13 | Z4 = $99 |
14 | Z5 = $92 |
15 | Z6 = $82 |
16 | Z7 = $F8 |
17 | Z8 = $80 |
18 | Z9 = $90 |
19 | |
20 | .org $300 ; Startaddresse für den Assemblercode |
21 | |
22 | lda #$ff |
23 | sta PBDD ; PORT B alles auf Ausgang |
24 | sta PADD ; PORT A alles auf Ausgang |
25 | lda #8 ; Adresse 8 für erstes Display |
26 | sta PBD ; erstes Digit auswählen |
27 | |
28 | lda #Z1 ; Zahl 1 |
29 | jsr show |
30 | |
31 | lda #Z2 ; Zahl 2 |
32 | jsr show |
33 | |
34 | lda #Z3 ; Zahl 3 |
35 | jsr show |
36 | |
37 | end: |
38 | jmp end |
39 | |
40 | show: |
41 | sta PAD ; Segmente schreiben |
42 | |
43 | jsr wait |
44 | jsr wait |
45 | rts |
46 | |
47 | wait: |
48 | lda #255 |
49 | sta TIMER_DIV1024 ; start timer mit prescaler => ~2Hz |
50 | wait1: |
51 | lda TIMER_READ |
52 | bne wait1 ; Warte, bis timer 0 |
53 | rts |
54 | |
55 | ; MOS6532 PIA addrese $1A80 |
56 | PAD=$1A80 |
57 | PADD=$1A81 |
58 | PBD=$1A82 |
59 | PBDD=$1A83 |
60 | TIMER_READ=$1A84 ; timer read register |
61 | TIMER_DIV1024=$1A97 ; address to start timer prescaler 1024 and no Interrupt |
Hallo Christoph, du bist deiner Zeit voraus... rhf
Ich weiß nicht, ob das schon erwähnt wurde, aber das Spiel hier wäre gerade auf Steam im Sale (~11€): https://store.steampowered.com/app/1444480/Turing_Complete/ Laut Beschreibung könnte das sehr gut geeignet sein, um die Grundlagen zu verstehen und damit rumzuspielen. ...wenn auch ohne physische Hardware...
>Ich weiß nicht, ob das schon erwähnt wurde, aber das Spiel hier wäre >gerade auf Steam im Sale (~11€): Mittlerweile gibt es ja haufenweise Online-Schaltungssimulatoren, wie z.B. der hier: https://everycircuit.com/ Da ließe sich wahrscheinlich auch eine grundlegende CPU nachbauen.
Christoph M. schrieb: > Mittlerweile gibt es ja haufenweise Online-Schaltungssimulatoren, wie > z.B. der hier: > > https://everycircuit.com/ > > Da ließe sich wahrscheinlich auch eine grundlegende CPU nachbauen. NEIN, denkst du WIRKLICH dass man mit einem Schaltungs- oder gar einem Digitale Logik Simulator eine CPU nachbauen kann? Ich sag nur WOW WOW WOW.
Cyblord -. schrieb: > Ist dir klar dass der TE sich absolut gar nichts aus deinen kleinen > Aufgaben macht, ja sie nicht mal wahrnimmt? Halloo, einen schönen Sonntag, liebe Leute, :-)) Ja das Progrämmchen, konnte ich gar nicht wahrnehmen; ich war gar nicht zu Hause. Ich war ja auf einer Geburtstagfeier. Jetzt wird erst mal gut gefrühstückt, dann hole ich das Labornetzgerät nach hier und den kleinen Junior. Dann gebe ich die Hex-Zeichen ein; das sieht wirklich interessant aus. :-) Die folgenden E-Mails muss ich erst noch lesen. DANKSCHÖN für Eure Beiträge! Mit lieben Grüßen Günter K. (ENK)
Günter K. schrieb: > Dann gebe ich die Hex-Zeichen ein; das sieht wirklich interessant aus. Es ging ja eher darum zu VERSTEHEN was dieses Programm tut und warum. Denn es nutzt diesmal deinen heiß geliebten TIMER. Das wäre die Gelegenheit für dich zu verstehen wie der funktioniert. Vom HEX Zeichen eintippen hat man genau gar nichts. Es bringt einen nicht weiter. Und deshalb sind die ganzen Programme und Aufgaben hier komplett für die Tonne weil DU sowieso niemals nicht auch nur versuchen würdest zu kapieren was diese Programme tun. Der Christoph ist ein bisschen langsamer als der Rest hier und braucht deshalb ein paar Tage länger um das zu verstehen. Aber es wird kommen.
:
Bearbeitet durch User
Hallo, Cyblord -. schrieb: > Der Christoph ist ein bisschen langsamer als der Rest hier und braucht > deshalb ein paar Tage länger um das zu verstehen. Es ist schon interessant zu lesen wie dich diese Diskussion triggert und du auch wirklich jeden, der etwas Konstruktives beträgt, in deiner typisch überheblich, arroganten Art und Weise angehst. rhf
Günter K. (enk) 31.05.2025 13:13 >Das Programm, welches ich schreiben werde heißt: Martinshorn.(asm) >Allerdings leider nur, vorläufig NUR wie gewohnt in >Maschinensprache mit beigefügten MNEMONICS. Vielleicht wäre auch der typische Alarmton, wie man ihn bisweilen bei verschiedenen Autos hört, ein Versuch wert:
1 | ; Junior Computer Alarmton |
2 | ; |
3 | ; original version: |
4 | ; 2025-05-31, mchris |
5 | |
6 | ; Programmstart |
7 | .org $300 ; Startaddresse für den Assemblercode |
8 | |
9 | lda #$1 ; Lautsprecher an PORT B0 anschließen |
10 | sta PBDD ; PB0 als Ausgang setzen |
11 | |
12 | loop: |
13 | ldx #$FF ; Ton bestimmende Konstante |
14 | jsr chirp |
15 | jmp loop |
16 | |
17 | chirp: |
18 | txa ; x in Akku kopieren |
19 | tay ; Akku nach x kopieren |
20 | |
21 | delay: |
22 | dey ; y runterzählen |
23 | bne delay ; wenn nicht Null wiederholen |
24 | |
25 | lda PBD ; Lautsprecher lesen |
26 | eor #1 ; Bit rumdrehen |
27 | sta PBD ; Lautsprecher schreiben |
28 | |
29 | dex ; Frequenz erhöhen (Chirp-Effekt) |
30 | bne chirp ; Wiederholen, bis x = 0 |
31 | rts |
32 | |
33 | ; MOS6532 PIA Adressen |
34 | PBD = $1A82 |
35 | PBDD = $1A83 |
Hier noch der HEX-Code zum eintippen:
1 | 0300: A9 01 8D 83 1A A2 FF 20 |
2 | 0308: 0D 03 4C 05 03 8A A8 88 |
3 | 0310: D0 FD AD 82 1A 49 01 8D |
4 | 0318: 82 1A CA D0 F0 60 |
Und nicht vergessen: Der Lautsprecher muss hier an Bit0 von PortB angeschlossen werden.
:
Bearbeitet durch User
Roland F. schrieb: > Es ist schon interessant zu lesen wie dich diese Diskussion triggert und > du auch wirklich jeden, der etwas Konstruktives beträgt, in deiner > typisch überheblich, arroganten Art und Weise angehst. Naja, allerdings ist in seinen Aussagen schon ein Fünkchen Wahrheit. Über die Art und Weise wie sie vorgetragen werden kann man halt streiten. Man könnte es ganz gewiß auch anders formulieren. Der Günter scheint mir schon ein bischen beratungsresistent zu sein. Es haben hier ihm schon einige gesagt, daß seine Vorgehensweise wohl nicht die ganz Richtige ist, um es mal vorsichtig auszudrücken. Am Ende ist jeder seines eigenen Glückes Schmied.
Roland F. schrieb: > auch wirklich jeden, der etwas Konstruktives beträgt, in deiner > typisch überheblich, arroganten Art und Weise angehst. Es hilft aber kein noch so konstruktiver Beitrag. Kapierst du das denn noch immer nicht?
:
Bearbeitet durch User
Cyblord -. schrieb: > Es hilft aber kein noch so konstruktiver Beitrag. Günter helfen die nicht, aber jedem anderen Interessierten. DEINE Beiträge helfen dagegen tatsächlich niemandem, aber das wirst DU nie kapieren.
:
Bearbeitet durch User
Klaus schrieb: > DEINE Beiträge helfen dagegen tatsächlich niemandem Was nicht stimmt, da ich am Anfang auch konstruktive Posts geschrieben habe die einem normalen Menschen auch weitergeholfen hätten.
Christoph M. schrieb: > aber jetzt: > 0300: A9 FF 8D 83 1A 8D 81 1A > 0308: A9 B0 8D 80 1A A9 08 8D > 0310: 82 1A 4C 12 03 Hallo Christoph M. dass man sich da vertuen kann, das ist normal, wir sind Menschen. Und genau darum, möchte ich die Beziehung zur Maschine behalten. Ich stelle das jetzt mal 'n bisschen anders dar, und danach, noch was anders. (Auch wenn es stupide erscheint.) 8 9 A B C D E F 0 1 2 3 4 5 6 7 > 0300: A9 FF 8D 83 1A 8D 81 1A > 0308: A9 B0 8D 80 1A A9 08 8D > 0310: 82 1A 4C 12 03 0 1 2 3 4 5 6 7 8 9 A B C D E F Ich hatte auch schon mal Hexdumps gesehen, die die Zählung bis F hintereinander geführt. - Jedoch, das soll kein meckern von mir sein. Darum mache ich das jetzt so, wie Hans Otten. Also von 0300 bis 031C: Nun Kopiere ich die Adressen ab 0301 neu dazu. Aber ohne die Kopie zu zerstören. Das ist jetzt ein neues Experiment, denn (das klappte noch nicht.) Sondern nur auf dem Editor (die Liste kommt.) Bei dem Editor muss man zuerst den Cursor setzen, sonst überschreibt er. Die entstandenen Doppelkopien werden gelöscht. - Nun wird es aber kompliziert, bis ich selbst ein Assembler geschrieben habe, bis man auf diesem Wege den einfachen 6502-Computer verstanden hat. Wenn er erweitert ist, kriegt er einen 48 x 64 Zeichen-Bildschirm(3x4) und eine große Tastatur. So klein das Hexdamp auch aussieht, als Liste doch zu groß. Es kommt in den nächsten Beitrag, und in Exel. Ich kann es erst verstehen, wenn ich weiß was der Rechner macht. Nochmal DANKSCHÖN für Eure Beiträge! Mit lieben Grüßen Günter K. (ENK) Fortsetzung folgt,
Hallo Liebe Leute, befor ich die Liste schicke, eine Frage: Was kann ich jetzt mit dem geladenen Programm tun? Ich habe es eingetippt. Liebe Grüße Günter K. (ENK)
Günter K. schrieb: > Ich kann es erst verstehen, wenn ich weiß was der Rechner macht. GOLD! > Was kann ich jetzt mit dem geladenen Programm tun? > Ich habe es eingetippt. DoppelGOLD! Woher soll ich wissen was ich denke bevor ich höre was ich sage?
:
Bearbeitet durch User
Christoph M. schrieb: > Vielleicht wäre auch der typische Alarmton, wie man ihn bisweilen bei > verschiedenen Autos hört, ein Versuch wert: > ; Junior Computer Alarmton Ja, hallo, auch das ist gut, dann kommt als 2. der gleiche Ton. Denn es geht ja ums Prinzip. An Stelle des Timers mache ich was anderes, und ich frage mich wirklich, wie Falk das schreibt, ob der Klaus das kann. Jetzt muss ich Mittag zubereiten, bis später. Liebe Grüße Günter K. (ENK)
Hallo Cyblord, Cyblord -. schrieb: > Woher soll ich wissen was ich denke bevor ich höre was ich sage? Ja, das kann ich Dir auch nicht sagen. - Bitte nicht so. Hallo Klaus, Cyblord -. schrieb: dass Klaus schrieb, >> DEINE Beiträge helfen dagegen tatsächlich niemandem Also Klaus, gehe bitte nicht von Voraussetzungen aus, - die Du nicht kennst. Liebe Grüße Günter K. ENK
Günter K. schrieb: > Hallo Liebe Leute, > > befor ich die Liste schicke, eine Frage: > Was kann ich jetzt mit dem geladenen Programm tun? > Ich habe es eingetippt. > Liebe Grüße > Günter K. > (ENK) <AD>0300<GO> Das war's
Ihr Lieben, an alle und Cyblord -. schrieb: > Vom HEX Zeichen eintippen hat man genau gar nichts. Es bringt einen > nicht weiter. Hallo Cyblord, 1. geht es z.Z. noch gar nicht anders, 2. habe ich die Beziehung zum Op-Code, 3. wobei ich wissen muss, dass der auf einem anderen System ganz anders ist. 4. so, läuft der Prozess ab. Hallo Christoph M. Christoph M. schrieb: > von > > Christoph M. > (mchris) > 01.06.2025 11:30 Deine Beiträge sind gut! Leider kann ich sie noch nicht vom PC zun JC übertragen. Es ist in der Planung, aber dann ist es nicht mehr der 6502 sondern ein 8086; eine Peripherie und eine Verbindungsleitung. Leider habe ich keinen Lautsprecher parat. Habe aber einen Kleinen gekauft, Verstärkerchen dazu; das muss ich aber erst löten. Und natürlich habe ich eine Idee 2 Töne mit dem Lautsprecher zu machen. "Tuut - Tuut" mit Pause, ohne Timer. Ja, das geht. Wenn Du es nicht schon eingegeben hast. Es gibt die Möglichkeit, die Laufzeit des Tones zu ermitteln. Ob man dabei einen 2. anderen Ton spielt keine Rolle. Jetzt muss ich Mittag essen, und baue die Sachen an einen andern Ort auf. Dabei mus ich ausschalten, und den Code neu eingeben. Liebe Grüße Günter K. (ENK)
Hallo, Cyblord -. schrieb: > Kapierst du das denn > noch immer nicht? Wenn du andere Beiträge von mir gelesen hättest, wüsstest du das ich sehr wohl "kapiert" habe das Günter wohl nicht zum Ziel kommen wird. Es ging mir in meinem Beitrag an dich auch gar nicht um Günter, sondern eher um dich und wie du hier Leute herunterputzt, die immer noch versuchen Günter zu helfen. rhf
Cyblord -. schrieb: > Kapierst du das denn noch immer nicht? Es ist aber auch nicht gut, sich darüber aufzuregen. Vielleicht solltest Du hier nicht mehr rein schauen!? Ich amüsiere mich jedenfalls köstlich und hole jetzt nochmal Popcorn! Gruß Jobst
Roland F. schrieb: > Es ging mir in meinem Beitrag an dich auch gar nicht um Günter, sondern > eher um dich und wie du hier Leute herunterputzt, die immer noch > versuchen Günter zu helfen. Günter K.(ENK) schreibt DANKESCHÖN! Und ich weiß und sehe, dass Deine Sätze gut gemeint sind. Roland F. schrieb: > sehr wohl "kapiert" habe das Günter wohl nicht zum Ziel kommen wird. Hallo Roland F., "... Günter wohl nicht zum Ziel kommen wird." - Wieso? Natürlich lieber Roland F. ich habe das -Ziel- vor Augen, - bin aber eher Maschinenorientiert, wovon mir allerdings, auch noch 'ne Ecke von fehlt. Die Maschinenorientierung ist wichtig! Darum, weil wir Menschen sind, und acht geben müssen, damit die Maschine nichts tut, was wir nicht überschauen können. Aus diesem Grunde gehört der OP-Code (also Maschinen-Code), fest zum Assembler-Code, mit seinem Assembler durch den Compiler dazu, so dass, sogar der Kommentar und (zuvor dem wenn nötig auch die Zeiten) mitgenommen werden. Wie z.B.: "2 x Hupen" Wenn der Timer nicht benutzt wird, ist das interessant. Beispiele mit Zeiten von Euch, sah ich ja auch schon. So, dass das -Ziel-, dass ein Computer der leichter zu verstehen bleibt. Wenn jemand so in etwa schreibt: "... haufenweise Fachbegriffe rausboxt..." zu dem sage ich jetzt einfach: Das ist Terminologie. Fairerweise, schrieb jemand mit einem Bild dazu Harald K. schrieb: > und da > das nur über Opcodes geht ... > > Denk dran: > > Das hier > https://www.mikrocontroller.net/attachment/662153/junior3_04.jpg ist der > Computer, mit dem Günter unterwegs ist. (Zwichendurch denke ich an einen Satentransfer zu einem passenden PC. dieser hier kann das noch nicht.) DANKESCHÖN!! Liebe Grüße Günter K. (ENK) und das sende ich auch jetzt hier.
:
Bearbeitet durch User
Günter K. schrieb: > Günter wohl nicht zum Ziel kommen wird." - Wieso? Weil du bisher in 4 Monaten ungefähr so viel gelernt hast, wie ein Normalsterblicher in 10 Minuten. Eigentlich sogar noch gar nichts. Stattdessen machst immer völlig sinnlose Dinge, z.B. Hex Codes eintippen. Du kommst keinen Millimeter vorwärts, und merkst es nichtmal.
Hans schrieb: > Naja, allerdings ist in seinen Aussagen schon ein > Fünkchen Wahrheit. Das ist KEIN Qualitätsmerkmal, denn das trifft auf fast jede auch noch so bescheuerte Aussage zu. Mit gutem Willen findet man immer das berühmte Fünkchen Wahrheit... > Über die Art und Weise wie sie vorgetragen werden > kann man halt streiten. Mit Verlaub: Nein. Es gibt Menschen, die permanent andere erniedrigen, um sich selbst zu erhöhen. Darüber gibt es m.E. nix zu streiten -- das ignoriert man konsequent, wenn man klug ist. > Der Günter scheint mir schon ein bischen beratungsresistent > zu sein. Ach echt?! Und das trifft auf die Meinungsführer im Forum, die auch die Frage "Ich habe Probleme mit meiner Freundin im Bett..." mit der herausgeplatzen Empfehlung: "Nimm einen Mikrocontroller!" beantworten würden, wohl nicht zu? Nein, nein, der alte Spruch gilt immer noch: Sachkunde ist einer lebhaften Diskussion nur abträglich... Sachkunde ist aber nicht (nur) der nerdige Technikerblick mit Scheuklappen, sondern auch echtes Verständnis für die Situation (den Wissensstand, die Fähigkeiten) des Gegenüber. Nur mal ganz nebenbei. > Am Ende ist jeder seines eigenen Glückes Schmied. Und warum regt ihr euch dann so auf? Handelt doch einfach danach und lasst ihn doch.
Klaus schrieb: > Cyblord -. schrieb: >> Ist dir klar dass der TE sich absolut gar nichts aus >> deinen kleinen Aufgaben macht, ja sie nicht mal wahrnimmt? > > Ist dir klar, dass wir uns absolut gar nichts aus deinen > ständigen Stänkereien machen, weil der Cyblord halt mal > so ist wie er ist? Leider stimmt das nicht. Wenn Dir die Stänkerein wirklich egal wären, würdest Du ihm nicht anworten.
Christoph M. schrieb: > aber jetzt: > 0300: A9 FF 8D 83 1A 8D 81 1A > 0308: A9 B0 8D 80 1A A9 08 8D > 0310: 82 1A 4C 12 03 Günter K. (enk) 01.06.2025 13:27 >Ich hatte auch schon mal Hexdumps gesehen, die die Zählung bis F >hintereinander geführt. - Jedoch, das soll kein meckern von mir sein. Oft ist es tatsächlich so, dass pro Zeile 16 Byte verwendet werden ( Zählung 0-F ). Für so ein kleines System wie den Junior Computer finde ich 8 Bytes pro Zeile aber deutlich übersichtlicher. >befor ich die Liste schicke, eine Frage: >Was kann ich jetzt mit dem geladenen Programm tun? >Ich habe es eingetippt. Du musst die Startadresse eintippen und dann 'go' drücken. Am besten schaust du dir das Video ab Minute 26:20 hier an: https://www.youtube.com/watch?v=wI82V9meKnY Was das Programm tut ist hier beschrieben: Beitrag "Re: Einfache CPU, einfacher Rechner, nur zum Lernen, Erfahrung?" Dort findest du auch die Übungsaufgabe. Du kannst das Programm selbst von Hand nach deinem Excel-Prinzip neu übersetzen und z.B. die Zahl ändern.
Hippelhaxe schrieb: > Sachkunde ist aber nicht (nur) der nerdige Technikerblick > mit Scheuklappen, sondern auch echtes Verständnis für die > Situation (den Wissensstand, die Fähigkeiten) des Gegenüber. > Nur mal ganz nebenbei. Dann nutze das doch und helfe dem TE entsprechend seinen Fähigkeiten. Was hält dich ab? >> Der Günter scheint mir schon ein bischen beratungsresistent >> zu sein. > > Ach echt?! > > Und das trifft auf die Meinungsführer im Forum Oder hört es bei dir beim whataboutism schon auf?
:
Bearbeitet durch User
Günter K. (enk) 31.05.2025 13:13 >Das Programm, welches ich schreiben werde heißt: Martinshorn.(asm) >Allerdings leider nur, vorläufig NUR wie gewohnt in >Maschinensprache mit beigefügten MNEMONICS. Hier habe ich Dir mal eines als Vorlage gemacht. Dieses mal habe ich als Grundlage das DDS-Verfahren verwendet, um mal was anderes zu machen. Dieses Verfahren war in den 80ern soweit ich weiß noch nicht so stark verbreitet. https://de.wikipedia.org/wiki/Direct_Digital_Synthesis
1 | ; DDS Martinshorn |
2 | ; |
3 | ; https://de.wikipedia.org/wiki/Folgetonhorn |
4 | ; In Deutschland wird die Ausführung des Folgetonhorns |
5 | ; durch DIN 14610 geregelt. Die Tonhöhe von verschiedenen |
6 | ; Hörnern darf sich unterscheiden, muss aber zwischen 360 |
7 | ; Hz (ca. fis′) und 630 Hz (ca. dis″) liegen. |
8 | ; Das Tonintervall muss eine reine Quarte sein |
9 | ; (beispielsweise: a′ und d″) => Frequenzverhältnis 4:3 |
10 | ; |
11 | ; 2025-05-02 mchris |
12 | |
13 | ; MOS6532 PIA Addresses |
14 | PBD = $1A82 |
15 | PBDD = $1A83 |
16 | |
17 | freq1 = 440 |
18 | freq2 = freq1*4/3 ; |
19 | |
20 | ; 16390 = 1second => fs = 16390 |
21 | duration = 12130 ; 0.74 secons |
22 | |
23 | .code |
24 | .org $300 |
25 | |
26 | lda #$01 |
27 | sta PBDD ; Set PB0 (connected to speaker) to output |
28 | |
29 | loop: |
30 | lda #<freq1 |
31 | sta frequency |
32 | lda #>freq1 |
33 | sta frequency+1 |
34 | |
35 | jsr tone |
36 | |
37 | lda #<freq2 |
38 | sta frequency |
39 | lda #>freq2 |
40 | sta frequency+1 |
41 | |
42 | jsr tone |
43 | |
44 | jmp loop |
45 | ; ******************************************************* |
46 | ; tone: |
47 | ; inputs |
48 | ; - frequency (16bit) |
49 | ; - duration (16bit) 16390 = 1 sec |
50 | ; ******************************************************* |
51 | tone: |
52 | ; dphase=frequency*2 |
53 | LDA frequency+1 |
54 | STA dphase+1 |
55 | |
56 | LDA frequency |
57 | STA dphase |
58 | |
59 | asl dphase |
60 | rol dphase+1 |
61 | |
62 | asl dphase |
63 | rol dphase+1 |
64 | |
65 | ; duration = sample count |
66 | ldx #<duration ; low |
67 | ldy #>duration ; high |
68 | iny |
69 | toneloop: |
70 | ; loop calibration delay |
71 | nop |
72 | nop |
73 | nop |
74 | nop |
75 | nop |
76 | nop |
77 | nop |
78 | nop |
79 | |
80 | ; Add dphase to phase (16-bit add) |
81 | lda phase |
82 | clc |
83 | adc dphase |
84 | sta phase |
85 | |
86 | lda phase+1 |
87 | adc dphase+1 |
88 | sta phase+1 |
89 | |
90 | ; Use ROL to move bit 7 of phase+1 into bit 0 (speaker control) |
91 | lda phase+1 |
92 | rol ; Rotate left through carry |
93 | rol |
94 | |
95 | and #$01 ; Keep only the lowest bit |
96 | sta PBD ; Output to speaker |
97 | |
98 | dex |
99 | bne toneloop |
100 | dey |
101 | bne toneloop |
102 | |
103 | rts ; Otherwise, return |
104 | |
105 | ; Variables |
106 | frequency: .res 2 |
107 | phase: .res 2 |
108 | dphase: .res 2 |
und hier wie immer der Code zum Eintippen:
1 | 0300: A9 01 8D 83 1A A9 B8 8D |
2 | 0308: 6B 03 A9 01 8D 6C 03 20 |
3 | 0310: 22 03 A9 4A 8D 6B 03 A9 |
4 | 0318: 02 8D 6C 03 20 22 03 4C |
5 | 0320: 05 03 AD 6C 03 8D 70 03 |
6 | 0328: AD 6B 03 8D 6F 03 0E 6F |
7 | 0330: 03 2E 70 03 0E 6F 03 2E |
8 | 0338: 70 03 A2 62 A0 2F C8 EA |
9 | 0340: EA EA EA EA EA EA EA AD |
10 | 0348: 6D 03 18 6D 6F 03 8D 6D |
11 | 0350: 03 AD 6E 03 6D 70 03 8D |
12 | 0358: 6E 03 AD 6E 03 2A 2A 29 |
13 | 0360: 01 8D 82 1A CA D0 D8 88 |
14 | 0368: D0 D5 60 00 00 00 00 00 |
15 | 0370: 00 |
Christoph M. schrieb: > Hier habe ich Dir mal eines als Vorlage gemacht. DIESMAL wird er es sich anschauen. Ganz sicher!
MChris: Martinshorn! - Oh, nun ist mein alter Text weg! Ich hatte Text eingetippt, nach dem hören Deines Martinshorns war ich So. -begeistert-! -, dass mein Text verloren ging. Jetzt schreibe ich vorher in WORD. Cyblord -. schrieb: > Christoph M. schrieb: >> Hier habe ich Dir mal eines als Vorlage gemacht. > DIESMAL wird er es sich anschauen. Ganz sicher! Ja, DIESESMAL werde ich es mir anschauen. Ganz sicher! Ich bin dabei. … … Sehr gut, fand ich Deinen Vorschlag und auch von Thomas W im Beitrag #7883683: > … und Christoph M. schrieb: >> Man könnte z.B. die Ports so beschreiben, dass das erste >> Siebensegment-Display eine '8' anzeigt. >> Weiß jemand, wie man das macht?> > Ja. Ich. Im Anhang findest Du den IO-Teil des Juniors. > Das Display ist gemultiplexed und PB1-PB4 … PA0-PA6 … - > waehlen die Stelle des Displays aus, PA0-PA6 waehlen … updaten. > Die Beschreibung findest Du im Elektor-Junior Buch II, p. 131. > Die Routinen SHOW und CONVD findest Du auch erklaert. Und die > Beschreibung ist sogar recht gut, selbst ich habe das > damals als 16-Jaehriger verstanden. Günter sagt: Mit 16 war ich wie ein 12-Järiger. > Fuer Guenter ist das nix, … die Ton-Erzeugung ab p.45 im > gleichen Buch bekommt er ja auch nicht hin. ---- P.S.: > Das war ein wenig falsch oder vereinfacht: Man kann mit > Auswahl von Pb1-4 eine Stelle auswaehlen und dann ein Pattern auf > dieser Stelle anzeigen. Aber: Es ist eigentlich fuer Multiplexing > gerechnet, die 68Ohm-Widerstaende sind etwas zu klein, > und die Stroeme in das Display etwas zu gross. Günter sagt: Das verstehe ich zwar: - Multiplexing braucht weniger Strom; aber nicht das Ganze! - Was ich auch besonders gut von Euch finde ist nicht nur Eure LEISTUNG!! - Sondern, dass ich keine Meckereien sehe! Das ist: Sehr gut! Fortsetzung folgt.
:
Bearbeitet durch User
Günter K. schrieb: > DIESESMAL werde ich es mir anschauen. Ganz sicher! Und nichts davon verstehen. Der Algorithmus ist alles andere als nachvollziehbar oder gar selbsterklärend. Günter, bleib erst mal bei einer einzelnen Ton- oder Anzeigenprogramm. Damit hast du für den Rest von 2025 genug zu tun.
Fortsetzung, erstmal das hier: 0 1 2 3 4 5 6 7 8 9 A B C D E F > 0300 A9 FF 8D 83 1A 8D 81 1A A9 B0 8D 80 1A A9 08 8D > 0310: 82 1A 4C 12 03 0 1 2 3 4. Man hat sich ja so, leicht vertan! Ich fragte, in etwa: "Was soll ich da machen?" Thomas W. schrieb: > von Thomas W. (datenreisender) antwortete: Siehe oben. DANKE für EURE Aufmerksamkeit! Was ich sonst noch in dem Zusammenhang tat, sage ich jetzt schon mal: 1.: Ich versuchte die Speicher-ICs: NEC ROY 218-045 IRLAND µPD2114LC zu kaufen. Ich konnte sie nicht bekommen. 2.: Teile für den Aktiv-Lautsprecher. Mal sehen was passiert wenn ich das eingebe, siehe oben. Ob ich das (siehe oben) verstehen werde, weiß ich jetzt noch nicht. Mit lieben Grüßen Günter K. (ENK) Nachtrag: Ich gebe in den PC den OP-CODE ein, dann die MNEMONICS, dann suche ich die vermuteten MARKS raus danach die LABELS; wenn mir auch danach, etwas für den REM einfällt, trage ich auch diese ein und schaue in Deinem Assembler-Programm nach ob da auch noch etwas steht. Falls die LEDs zu hell sind, Oder der Strom über 0,7 A geht, drücke ich RESET.
:
Bearbeitet durch User
Günter K. schrieb: > Ich gebe in den PC den OP-CODE ein, dann die MNEMONICS, > dann suche ich die vermuteten MARKS raus danach die LABELS; > wenn mir auch danach, etwas für den REM einfällt, trage > ich auch diese ein und schaue in Deinem Assembler-Programm nach ob da > auch noch etwas steht. Du machst alles falsch. ALLES!
Thomas W. schrieb: > Es ist auch ganz gross in Kapitel 3 ("Programmieren") auf p.57 des > Junior-Computer Buch I erklaert. Wer sagt, dass ich das nicht können soll? Wolfgang R. hat mir doch so ein ähnliches Programm geschickt, und es hatte funktioniert. - Ob ich es als ein Ganzes verstanden habe, ist eine andere Sache. - Immerhin weiß ich, das die BITs für die Segmente invertiert werden müssen. Wenn man aus einer 3 eine 4 machen will, geht das wie bei einem Streichholz-Rätsel. Es kommt daraf an, wie die 8 Bit, zugordnet sind. Auch wenn das sonst üblich anders ist, muss ich vorher wissen, wie die Anschlüsse liegen, Soetwas lerne ich mir nicht auswendig, es sei denn, - man hält sich an diese Norm; dann auch nicht unbedingt, es sei denn als Vorschrift. __ |__ |__| |__ , | nun könnte ich die Bit-Nummern dabeischreiben, das tue ich aber nicht. Mit lieben Grüßen Günter K. (ENK)
Thomas W. schrieb: > Es ist auch ganz gross in Kapitel 3 ("Programmieren") auf p.57 des > Junior-Computer Buch I erklaert. Wer sagt, dass ich das nicht können soll? Wolfgang R. hat mir doch so ein ähnliches Programm geschickt, und es hatte funktioniert. - Ob ich es als ein Ganzes verstanden habe, ist eine andere Sache. - Immerhin weiß ich, das die BITs für die Segmente invertiert werden müssen. Wenn man aus einer 3 eine 4 machen will, geht das wie bei einem Streichholz-Rätsel. Es kommt daraf an, wie die 8 Bit, zugordnet sind. Auch wenn das sonst üblich anders ist, muss ich vorher wissen, wie die Anschlüsse liegen, Soetwas lerne ich mir nicht auswendig, es sei denn, - man hält sich an diese Norm; dann auch nicht unbedingt, es sei denn als Vorschrift. __ |__ |__| |__ , | nun könnte ich die Bit-Nummern dabeischreiben, das tue ich aber nicht. Mit lieben Grüßen Günter K. (ENK) Klaus schrieb: > Günter K. schrieb: >> Nachher kaufe ich noch weitere 7 Schälterchen > > Sag mal, willst Du uns eigentlich verarschen? Liest Du nicht was wir > schreiben? > Du schaffst es nicht, 2 Töne hintereinander abzuspielen, willst aber nun > wieder 15 Schritte weiter gehen? > Nochmal für dich ganz klar: > > DU SCHAFFST DAS NICHT.
Günter K. schrieb: > Klaus schrieb: >> Günter K. schrieb: >>> Nachher kaufe ich noch weitere 7 Schälterchen >> >> Sag mal, willst Du uns eigentlich verarschen? Liest Du nicht was wir >> schreiben? >> Du schaffst es nicht, 2 Töne hintereinander abzuspielen, willst aber nun >> wieder 15 Schritte weiter gehen? >> Nochmal für dich ganz klar: >> >> DU SCHAFFST DAS NICHT. Falk B. schrieb: > Klaus schrieb: >> DU SCHAFFST DAS NICHT. > > Du auch nicht. > > Beitrag "Re: Einfache CPU, einfacher Rechner, nur zum Lernen, > Erfahrung?" Mit lieben Grüßen Günter K. (ENK)
Zitate ohne eigenen Text und Doppelposts. Geh lieber schlafen. Gute Nacht.
Ihr Lieben, an alle. Günter K. schrieb: von Klaus (feelfree) 03.06.2025 00:28 > Klaus schrieb: >> Günter K. schrieb: >>> Nachher kaufe ich noch weitere 7 Schälterchen >> >> Sag mal, willst Du uns eigentlich verarschen? Liest Du nicht was wir >> schreiben? >> Du schaffst es nicht, >>> Du schaffst es nicht, 2 Töne hintereinander abzuspielen, willst aber nun >>> wieder 15 Schritte weiter gehen? >>> Nochmal für dich ganz klar: >>> >>> DU SCHAFFST DAS NICHT. Bei den 2 Tönen, muss ich die Zeiten einhalten; bei mehreren Schaltern, kann ich die Zeit selber bestimmen. Und was meinst Du mit "uns"? - Wen willst Du "mit" einbeziehen? Meinst Du Dich selber? Mit lieben Grüßen Günter K. (ENK)
Günter K. schrieb: > bei mehreren Schaltern, kann ich die Zeit selber bestimmen. Und, hast du auch schon eine Idee mit welchen Befehlen du die Taster abfrägst? An welchen Portpins die Tasten angeschlossen werden? Wie du in deinem Programm die Zuordnung von Taste zu Tonhöhe bewerkstelligst? Nein? Egal, Christoph wird dir den Hexcode liefern, und bis Weihnachten schaffst du es auch ihn fehlerfrei einzutippen.
Ihr Lieben, Klaus (feelfree) schrieb: > Und, hast du auch schon eine Idee mit welchen Befehlen du die Taster > abfrägst? Und Günter K. antwortet: Hallo Klaus (feelfree) Zu Deiner Frage sage ich: Ja. > > An welchen Portpins die Tasten angeschlossen werden? Antwort: Ja. > Wie du in deinem Programm die Zuordnung von Taste zu Tonhöhe > bewerkstelligst? Du meinst: "Wie Du in Deinem Programm, die Zuordnung zur Tonhöhe bewerkstelligst? Antwort: Ja. > > Nein? Egal, Christoph wird dir den Hexcode liefern, und bis Weihnachten > schaffst du es auch ihn fehlerfrei einzutippen. Hallo Klaus (feelfree) Hoffendlich - ? - -Moment- bitte, :-) Hallo Christoph M., Bitte schreibe mir noch kein Programm, - dass Du das kannst, glaube ich sowieso. Ein solches Programm werde ich alleine schreiben. Natürlich muss ich noch sehr viel lernen das ist klar. Bin auch nicht sicher, obs mir gelingt, aber ich versuche es. Wie ich mich erinnere, hatte ich das Programm von p.57 so in etwa abgetippt, - das richtige Ergebnis war da; natürlich versuche ich auch es zu verstehen, warum das so ist. Solche Artikel werde ich öfter lesen. Gute Nacht liebe Leute mit lieben Grüßen Günter K.
:
Bearbeitet durch User
2114 kreigt man bei aliexpress, hab vor nicht so Lange 10 Stück gekauft. Die funktionieren auch :)
Abschrift vom IC: _________________ | NEC ROY 218-045 | | IRLAND µPD2114LC | |___________________| Hallo Alejandro P. Alejandro P. schrieb: > 2114 kriegt man bei aliexpress, hab vor nicht so Lange 10 Stück > gekauft. > Die funktionieren auch :) sind diese mit den obigen Chips kompatibel? Vielen Dank für Deine Nachricht. Liebe Grüße Günter K. (ENK)
Textberichtigung für richtige Farben der richtigen Zuordnung, ich hatte diese nicht vertauscht. Das Folgende passte nicht in den Kontext vom 03.06.2025 00:28 Günter K. schrieb: > Falk B. schrieb: >> Klaus schrieb: >>> DU SCHAFFST DAS NICHT. >> >> Du auch nicht. >> >> Beitrag "Re: Einfache CPU, einfacher Rechner, nur zum Lernen, >> Erfahrung?" > Mit lieben Grüßen > Günter K. > (ENK) Bis hier ist der noch stehene Text unveändert auf diesem Blatt. Demnach vermute ich das Folgende anders: > Falk B. schrieb: >>> Klaus schrieb: >>> DU SCHAFFST DAS NICHT. Günter schreibt: Das lese ich nun schon oft von Dir. Folglich muss Falk geschrieben haben: > Du auch nicht. Frage an Falk B., war das so? die folgende Zeile hatte keinen LINK hier. > Beitrag "Re: Einfache CPU, einfacher Rechner, nur zum Lernen, > Erfahrung?" > Mit lieben Grüßen > Günter K. > (ENK) PS: Günter schreibt weiter: Klaus (feelfree) Wenn Du mich damit anspornen willst ist das gut, aber bitte höre auf damit, mir dem Mut rauben zu wollen!
Günter K. schrieb: > Wenn Du mich damit anspornen willst ist das gut, > aber bitte höre auf damit, mir dem Mut rauben zu wollen! Anfangs wollte ich dich noch anspornen. Und dir helfen. Zum Beispiel mit diesem Beitrag: Klaus schrieb: > Verändere/erweitere das Programm mit den 440Hz schrittweise: > > - dass es eine andere Tonhöhe abspielt > - dass es den Ton z.B. nur eine bestimmte Zeit abspielt > - dass es 2 verschiedene Töne hintereinander abspielt > > Damit wirst Du ein paar Tage beschäftigt sein. > Dann kommt: > > - dass alle Tonhöhen einer Tonleiter abgespielt werden > - dass alle Noten unabhängig von der Höhe ca. gleich lang abgespielt > werden > > Wieder ein paar Tage bis Wochen. NICHTS davon hast Du in den letzten 2 Wochen gemacht. Stattdessen bestellst Du RAMs, Taster und sonstiges Gedöns mit dem Du absolut nichts anfangen wirst. Wenn Du so weitermachst, kommst Du nicht nur nie zum Ziel, sondern nie auch nur einen Millimeter weiter.
Günter K. schrieb: > Aber auch einen passenden Emulator der CPU auf einen anderen Computer. Da warst Du doch fast schon auf dem richtigen Weg, aber dann bist Du leider falsch abgebogen. Emulatoren hat man früher mal benutzt, wo die Programme noch in PROM oder OTP gespeichert wurden. Heute benutzt man Simulatoren und Debugger. Allen gemeinsam ist eine komfortable Umgebung, wo man die Programme bequem testen kann. Und damit kann man auch wirklich lernen, was eine CPU bis ins kleinste Detail intern macht. Ob Akku, Flags, Register, Stack, Codesegment, Datensegment, Timer, UART, IO-Pins, alles hat man jederzeit bequem im Blick. Und Laufzeiten (CPU-Zyklen) von Programmteilen kann man sich natürlich auch anzeigen lassen. Dein Spielzeug mit den Tasten und 7-Segment Anzeigen erlaubt dagegen nur einen winzigen Blick durchs Schlüsselloch. Der Großteil läuft im Verborgenen ab. Da würden selbst junge Leute, die noch viel mehr flinke Neuronen als unsereiner haben, bald das Handtuch werfen. Zumindest würde sie schnell die Unsinnigkeit einsehen und sich einfach passendere Umgebungen aus dem Internet laden.
Günter K. schrieb: > Textberichtigung für richtige Farben der richtigen Zuordnung, > ich hatte diese nicht vertauscht. > Das Folgende passte nicht in den Kontext vom 03.06.2025 00:28 Biting my tongue... biting my tongue... Ich hab's mir vor einigen Tagen geschworen und hier kundgetan: ich werde diesen Thread nicht mehr kommentieren. Aber es fällt verdammt schwer. Der natürliche Masochismus treibt mich allerdings immer wieder dazu, Updates in diesem Thread zu verfolgen - und es zeigt schon Wirkung: mittlerweile schaue ich mir auch Heidi Klum's "Germany's next top model" mit Wonne an ;-)
Peter D. schrieb: > Allen gemeinsam ist eine komfortable Umgebung, wo man die Programme > bequem testen kann. Und damit kann man auch wirklich lernen, was eine > CPU bis ins kleinste Detail intern macht. Ich habe gerade mal getestet, wie lange es dauert, ein allererstes Programm auf einer virtuellen 6502 zu schreiben, zu assemblieren und zu starten: Man gehe auf https://www.masswerk.at/6502/assembler.html und gebe in das src Fenster links oben folgenden Code ein:
1 | ldx #10 |
2 | loop: |
3 | dex |
4 | bne loop |
Dann drücke man auf die Schaltflache "assemble", anschließend auf "Show in emulator", und dann kann man per "Single Step" Zeile für Zeile durch das Programm schreiten und dabei beobachten, was die Register und Flags so machen. Also das was Günter eigentlich verstehen will, was eine CPU wie die 6502 so macht. Das Ganze hat deutlich unter einer Minute gedauert. Eine Änderung geht in weniger als 10 Sekunden. Günter tippt aber lieber stundenlang Hex-Codes in seinen Junior ein, die er nicht versteht und wenn es nicht funktioniert hat er keine Chance rauszubekommen warum. Kann man so machen. Wenn man sonst alles sinnlose schon gemacht hat in seinem langen Leben.
:
Bearbeitet durch User
Günter K. schrieb: > Wie ich mich erinnere, hatte ich das Programm von p.57 > so in etwa abgetippt, - das richtige Ergebnis war da; > natürlich versuche ich auch es zu verstehen, warum das so ist. > Solche Artikel werde ich öfter lesen. Hattest Du das Prograemmchen eingetippert? Und hattest Du das Ergebnis 0x0a bekommen?
Peter D. schrieb: > Allen gemeinsam ist eine komfortable Umgebung, wo man die Programme > bequem testen kann. Und damit kann man auch wirklich lernen, was eine > CPU bis ins kleinste Detail intern macht. Ich haette in den 80'er gemordet fuer einen In-circuit-Debugger (heute fuer einen 10'er) Vor allen Dingen wo die 6502 extrem dokumentiert ist, bei der 6502 z.B. mit dem Assembler/Simulator bei masswerk.at, der Visuelle Simulator bei http://www.visual6502.org/, Buecher (einfach mal bei https://archive.org/search?query=6502 gucken, die haben mehr Buecher als ich). Und zum Anfassen: https://monster6502.com/ Und eine Sache muss man auch sehen: Wenn man Technologie der Disco-Zeit verwenden will, muss man auch Werkzeuge der Disco-Zeit benutzen. Und das ist manchmal sehr sehr muehsam. Ich habe ein paar Vaxes hier zu stehen, betreiben ist bei den aktuellen Strompreis keine richtige Option mehr. Der C-Compiler (Stand: 1990) ist natuerlich alt, Fortran 77 ist das hoechste der Gefuehle. Die Entwicklungssystem waren 1990 toll, heute inakzeptabel antik. Das groesste Problem ist aber dass das Fachwissen ausstirbt (im woertlichen Sinn).
Thomas W. schrieb: > Das > groesste Problem ist aber dass das Fachwissen ausstirbt Für wen ist es ein Problem, dass heute keiner mehr weiß, wie eine PDP11 oder VAX funktioniert?
Peter D. schrieb: > Ob Akku, Flags, Register, Stack, Codesegment, Datensegment, Timer, UART, > IO-Pins, alles hat man jederzeit bequem im Blick. Und Laufzeiten > (CPU-Zyklen) von Programmteilen kann man sich natürlich auch anzeigen > lassen. Peter D. schrieb: > erlaubt dagegen nur > einen winzigen Blick durchs Schlüsselloch. Ja, ich weiß wie das gemeint ist, also wirklich wenig. Ja, ich habe letzten quasi einen 6510: "von innen gesehen", und den konnte man sogar, "in Betrieb" sehen; Natürlich nur chematisch (aber wie wirklich) auf dem Bidschirm. - Also was es da zu sehen gibt, ist viel zu viel. Viele, viele Transitoren und interne "Leiterbahnen" Pastel-Farben, latend farblich unterschieden. Ein großes Erlebnis, war das allemal! - Sogar die Anschlüsse konnte man ansprechen, nur verstehen kann man das nicht. Also ich könnte mir vorstellen, das ein hochinteligenter -nur- darauf, speziell seinen Doktor oder Professor macht. - Ich selber aber, bin sogar unterschult, in gewisserweise aus Schiksalsgründen. - Und dennoch, ich kann zwar kein Englisch oder viel zu wenig. Aber einige Fachwörter sind nun mal nötig. Es ist aber wichtig, was der Computer bzw. CPU und Controller macht. Doch ich las: Thomas W. schrieb: > Das > groesste Problem ist aber dass das Fachwissen ausstirbt (im woertlichen > Sinn). - Und das darf nicht passieren. Wir brauchen überhaupt Leute, die, den Menschen überhaupt eine funktionsfähige Sprache für Menschen gibt. Das ist nicht verwirrt! - Aber eine solche Sprache, gibt es noch gar nicht, und auch keine Menschen, die uns das beibringen. -Aber für die Zukunft brauchen wir das!- Ich wiederhole: Es gibt keine Menschliche Sprache die funktionell funktioniert, außer die Programmiersprachen für Maschinen, wie Assembler und höhere Programmiersprachen. Wir Menschen sollten das aber auch für den Alltag bekommen. Und ich könnte mir vorstellen, das diese Menchen aus dem Informatik-Bereich kommen. Das ist gleichsam Philosophie, Wissenschalft, Religion u. Politik. Vor kurzem (der letzten Zeit) wusste ich noch nicht mal, dass Assembler einen Compiler braucht. Programmier Hochsprachen sind mir dadurch zu hoch, weil sie so weit, von der Maschinen-Materie weg ist. Ich bin nicht verwirrt, auch wenn es durch meine Ausdrucksweise so erscheint. Übrigens der IBM 360/20 arbeitete schon stellenweise mit 64 BIT als interne 'Register'. Von mir hochgelobt ist der schon leider verstorbene Wolfgang Back und ebenso der Professor Joseph Weizenbaum! Er schrieb das Buch: Computermacht und Gesellschaft. Der PET hatte nur 8K; den hatte ich erweitert auf 32K usw.. Liebe Grüße Günter K. (ENK) PS.: Bitte helft mir, auf der untersten Ebene Maschinentechnisch am Ball (zu kommen und) bleiben.
Günter K. schrieb: > Bitte helft mir, > auf der untersten Ebene > Maschinentechnisch am Ball > (zu kommen und) bleiben. 5 Beiträge weiter oben habe ich ein Programm mit sage und schreibe **drei** Anweisungen gepostet und eine Anleitung dazu, wie du dieses Ausführen kannst. Mach einfach und frag nach, wenn du was nicht hinbekommst oder nicht verstehst.
Hallo liebe Leute, hallo lieber Klaus Klaus schrieb: > Mach einfach und frag nach, wenn du was nicht hinbekommst oder nicht > verstehst. Ok. Dankeschön! Mit lieben Grüßen Günter K. (ENK)
:
Bearbeitet durch User
Ich glaube, die ganze Diskussion ist eine Neuinterpretation von HURZ. https://www.youtube.com/watch?v=MJ7jbQJXF68 Schönen Tag euch allen!
Thomas W. schrieb: > Ich habe ein paar Vaxes hier zu stehen, betreiben ist bei den aktuellen > Strompreis keine richtige Option mehr. Der C-Compiler (Stand: 1990) ist > natuerlich alt, Fortran 77 ist das hoechste der Gefuehle. Die > Entwicklungssystem waren 1990 toll, heute inakzeptabel antik. Das > groesste Problem ist aber dass das Fachwissen ausstirbt (im woertlichen > Sinn). Hallo Thomas W., hallo Leute, bitte was sind Vaxes? Mit lieben Grüßen Günter K. (ENK)
Günter K. schrieb: > Thomas W. schrieb: >> Ich habe ein paar Vaxes hier zu stehen, betreiben ist bei den aktuellen >> Strompreis keine richtige Option mehr. [snip] > > Hallo Thomas W., hallo Leute, > bitte was sind Vaxes? > Mit lieben Grüßen > Günter K. > (ENK) https://blog.hnf.de/das-zeitalter-der-vax/ Am Ende des Beitrags sind die VaxStation 3100 und 4000 (unter dem Monitor), so etwas habe ich hier stehen. Eine MicroVax II (im Space-heater-Cabinet) habe ich auch noch. Bitte keine Sinn-Frage.
:
Bearbeitet durch User
Thomas W. schrieb: > Hattest Du das Prograemmchen eingetippert? Und hattest Du das Ergebnis > 0x0a bekommen? (... glaube fast, mich an 0x0A zu erinnern, vielleicht anders modifiziert) Hallo Thomas W. leider nein. Auf 0x00F3, also im Akku, habe ich: 0x42. Ich weiß aber, dass der Rechner richtig rechnet. In verschiedene Variationen vom Addiern, Subtrahieren, auch logisch über die ALU. Immer kam das richtige Ergebnis heraus; auch die dezimale Addition funktioniert. Wenn ich die Speicherbausteine ausgetauscht habe, oder sonstige, probiere ich es nochmal aus. Es liegt nicht am Akku, denn in anderen Fällen stand dort das richtige Ergebnis. Ich wollte doch, nochmal beantworten, Danke für Deine anderen Informationen. Mit lieben Grüßen Günter K. (ENK)
Günter K. schrieb: > 0x42 Da ist sie ja, die Antwort auf alle Fragen. Besser kann es gar nicht mehr werden.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.