Forum: Mikrocontroller und Digitale Elektronik Einfache CPU, einfacher Rechner, nur zum Lernen, Erfahrung?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Harald K. (kirnbichler)


Lesenswert?

Arduino F. schrieb:
> Wobei es alleine von MOV ca 1/2 Dutzend Varianten gibt,

6502 hat exakt null MOV-Instruktionen.

Falsch abgebogen?

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Möglich

von (prx) A. K. (prx)


Lesenswert?

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
von (prx) A. K. (prx)


Lesenswert?

Harald K. schrieb:
> 6502 hat exakt null MOV-Instruktionen.

Dafür aber "transfer". Ist das besser? :)

von Harald K. (kirnbichler)


Lesenswert?

(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.

von Falk B. (falk)


Lesenswert?

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!

von Josef G. (bome) Benutzerseite


Lesenswert?

Harald K. schrieb:
> Wer einen schöneren Befehlssatz sehen will,
> soll sich den des XXX ansehen.

Ich wüsste da auch einen ...

von Thomas W. (datenreisender)


Lesenswert?

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....

von Roland F. (rhf)


Lesenswert?

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?...

von Klaus (feelfree)


Lesenswert?

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?

von Harald K. (kirnbichler)


Lesenswert?

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

von Christoph M. (mchris)


Lesenswert?

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.

von Rbx (rcx)


Lesenswert?

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.

von Harald K. (kirnbichler)


Lesenswert?

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 ...).

von Thomas W. (datenreisender)


Lesenswert?

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

von Soul E. (soul_eye)


Lesenswert?

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.

von Christoph M. (mchris)


Lesenswert?

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.

von Günter K. (enk)


Lesenswert?

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)

von Klaus (feelfree)


Lesenswert?

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?

von Günter K. (enk)


Lesenswert?

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)

von Cyblord -. (cyblord)


Lesenswert?

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.

??

von Klaus (feelfree)


Lesenswert?

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
von Günter K. (enk)


Lesenswert?

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)

von Günter K. (enk)


Lesenswert?

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)

von Klaus (feelfree)


Lesenswert?

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.

von Klaus (feelfree)


Lesenswert?

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.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Günter K. schrieb:
> ich brauche den OP-Code
Glaube ich nicht.

von Klaus (feelfree)


Lesenswert?

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?

von Harald K. (kirnbichler)


Lesenswert?

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 ...

von Klaus (feelfree)


Lesenswert?

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.

von Harald K. (kirnbichler)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

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! ;-)

von Klaus (feelfree)


Lesenswert?

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
von Günter K. (enk)


Lesenswert?

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)

von Roland F. (rhf)


Lesenswert?

Hallo,
Falk B. schrieb:
> Den kann man bestimmt in Rust programmieren, so wie der aussieht! ;-)

:-)

rhf

von Klaus (feelfree)


Lesenswert?

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.

von Günter K. (enk)


Lesenswert?

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)

von Günter K. (enk)


Lesenswert?

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)

von Christoph M. (mchris)


Lesenswert?

>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

von Peter D. (peda)


Lesenswert?

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.

von Klaus (feelfree)


Lesenswert?

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....

von Cyblord -. (cyblord)


Lesenswert?

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.

von Soul E. (soul_eye)


Lesenswert?

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.

von Cyblord -. (cyblord)


Lesenswert?

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
von Günter K. (enk)


Lesenswert?

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.)

von Peter D. (peda)


Lesenswert?

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
von Rbx (rcx)


Lesenswert?

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.

von Cyblord -. (cyblord)


Lesenswert?

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.

von Dergute W. (derguteweka)


Lesenswert?

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

von Christoph M. (mchris)


Lesenswert?

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 )

von Soul E. (soul_eye)


Lesenswert?

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
von Cyblord -. (cyblord)


Lesenswert?

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
von Christoph M. (mchris)


Lesenswert?

Hier gibt es noch den zugehörigen Youtube-6502-Assembler-Kurs:
https://www.youtube.com/watch?v=-s6dttMAt9w

von Falk B. (falk)


Lesenswert?


von Soul E. (soul_eye)


Lesenswert?

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.

von Cyblord -. (cyblord)


Lesenswert?

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.

von Gunnar F. (gufi36)


Lesenswert?

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.

von Cyblord -. (cyblord)


Lesenswert?

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
von Rbx (rcx)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

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?"

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


Lesenswert?

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.

von Cyblord -. (cyblord)


Lesenswert?

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
von Gerhard O. (gerhard_)


Lesenswert?

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
von Christoph M. (mchris)


Lesenswert?

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 ;-)

von Thomas W. (datenreisender)


Lesenswert?

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.

von Günter K. (enk)


Lesenswert?

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
von Günter K. (enk)


Lesenswert?

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)

von Günter K. (enk)


Lesenswert?

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.

von Klaus (feelfree)



Lesenswert?

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
von Christoph M. (mchris)


Angehängte Dateien:

Lesenswert?

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

von Günter K. (enk)


Lesenswert?

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)

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


Lesenswert?

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
von Christoph M. (mchris)


Angehängte Dateien:

Lesenswert?

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
von Thomas W. (datenreisender)


Lesenswert?

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?"

von Klaus (feelfree)


Lesenswert?

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.

von Thomas W. (datenreisender)


Lesenswert?

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.

von Dergute W. (derguteweka)


Lesenswert?

Thomas W. schrieb:
> Irgendwie ist das alles ncht zielfuehrend.

Aber lustig.

scnr,
WK

von Christoph M. (mchris)


Lesenswert?

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 ?

von Christoph M. (mchris)


Angehängte Dateien:

Lesenswert?

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.

von Thomas W. (datenreisender)


Lesenswert?

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).

von Peter D. (peda)


Lesenswert?

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.

von Christoph M. (mchris)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

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 . . .

von Roland F. (rhf)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

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.

von Hans (ths23)


Lesenswert?

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.

von Hans (ths23)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

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 . . .

von Günter K. (enk)


Lesenswert?

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)

von Christoph M. (mchris)


Lesenswert?

Günter: Kannst du ein Bild des Computers posten ?

von Christoph M. (mchris)


Lesenswert?

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?

von Peter D. (peda)


Lesenswert?

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.

von Klaus (feelfree)


Lesenswert?

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.

von Thomas W. (datenreisender)


Lesenswert?

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
von Thomas W. (datenreisender)


Lesenswert?

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.

von Soul E. (soul_eye)


Lesenswert?

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
von Christoph M. (mchris)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

Christoph M. schrieb:
> der Prozess ja in der Lage sein, den Hex-Code an der richtigen Stelle zu
> erzeugen.

www.ams80.com

von Christoph M. (mchris)


Lesenswert?

> 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.

von Falk B. (falk)


Lesenswert?

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.

von Günter K. (enk)


Lesenswert?

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)

von Klaus (feelfree)


Lesenswert?

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
von Christoph M. (mchris)


Lesenswert?

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?

von Thomas W. (datenreisender)


Angehängte Dateien:

Lesenswert?

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
von Christoph M. (mchris)


Lesenswert?

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?

von Thomas W. (datenreisender)


Lesenswert?

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.

von Hans (ths23)


Lesenswert?

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.

von Christoph M. (mchris)


Lesenswert?

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.

von Thomas W. (datenreisender)


Lesenswert?

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).

von Christoph M. (mchris)


Lesenswert?

>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 :-)

von Cyblord -. (cyblord)


Lesenswert?

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?

von Christoph M. (mchris)


Angehängte Dateien:

Lesenswert?

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

von Falk B. (falk)


Lesenswert?

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

von Thomas W. (datenreisender)


Lesenswert?

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
von Thomas Z. (usbman)


Lesenswert?

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.

von Thomas W. (datenreisender)


Lesenswert?

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
von Günter K. (enk)


Lesenswert?

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
von Günter K. (enk)


Lesenswert?

Hallo Liebe Leute,

guten Morgen, ich habe eine kurze Frage,
welche Funktion hat ORG. - ?
Liebe Grüße
Günter K.
(ENK)

von Klaus (feelfree)


Lesenswert?

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.

von Gunnar F. (gufi36)


Lesenswert?

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.

von Günter K. (enk)


Lesenswert?

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)

von Thomas W. (datenreisender)


Angehängte Dateien:

Lesenswert?

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.

von Klaus (feelfree)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?


von Christoph M. (mchris)


Lesenswert?

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.

von Günter K. (enk)


Lesenswert?

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)

von Klaus (feelfree)


Lesenswert?

Günter K. schrieb:
> Martinshorn

LOL. Bist du wirklich so extrem beratungsresistent oder doch ein Troll?

von Cyblord -. (cyblord)


Lesenswert?

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.

von Klaus (feelfree)


Lesenswert?

Cyblord -. schrieb:
> Dann besiege doch mal dein Helfersyndrom

Mach ich - versprochen! - spätestens nachdem Du dein Mecker- und 
Rant-Syndrom in den Griff bekommst.

von Cyblord -. (cyblord)


Lesenswert?

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?

von Klaus (feelfree)


Lesenswert?

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?

von Cyblord -. (cyblord)


Lesenswert?

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!

von Gerhard O. (gerhard_)


Lesenswert?

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...

von Christoph M. (mchris)


Lesenswert?

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.

von Klaus (feelfree)


Lesenswert?

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!

von Björn W. (bwieck)


Lesenswert?

Christoph M. schrieb:
> Hier noch der Hex-Code zum eintippen.

Der Hexcode stellt Zahl 4 dar..

von Christoph M. (mchris)


Lesenswert?

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

von Cyblord -. (cyblord)


Lesenswert?

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.

von Klaus (feelfree)


Lesenswert?

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?

von Björn W. (bwieck)


Lesenswert?

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 ;)

von Christoph M. (mchris)


Lesenswert?

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

von Roland F. (rhf)


Lesenswert?

Hallo Christoph,
du bist deiner Zeit voraus...

rhf

von Markus E. (markus_e176)


Lesenswert?

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...

von Christoph M. (mchris)


Lesenswert?

>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.

von Cyblord -. (cyblord)


Lesenswert?

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.

von Günter K. (enk)


Lesenswert?

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)

von Cyblord -. (cyblord)


Lesenswert?

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
von Roland F. (rhf)


Lesenswert?

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

von Christoph M. (mchris)


Lesenswert?

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
von Hans (ths23)


Lesenswert?

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.

von Cyblord -. (cyblord)


Lesenswert?

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
von Klaus (feelfree)


Lesenswert?

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
von Cyblord -. (cyblord)


Lesenswert?

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.

von Günter K. (enk)


Lesenswert?

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,

von Günter K. (enk)


Lesenswert?

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)

von Cyblord -. (cyblord)


Lesenswert?

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
von Günter K. (enk)


Lesenswert?

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)

von Günter K. (enk)


Lesenswert?

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

von Thomas W. (datenreisender)


Lesenswert?

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

von Günter K. (enk)


Lesenswert?

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)

von Roland F. (rhf)


Lesenswert?

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

von Jobst M. (jobstens-de)


Lesenswert?

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

von Günter K. (enk)


Lesenswert?

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
von Klaus (feelfree)


Lesenswert?

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.

von Hippelhaxe (hippelhaxe)


Lesenswert?

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.

von Hippelhaxe (hippelhaxe)


Lesenswert?

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.

von Christoph M. (mchris)


Lesenswert?

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.

von Cyblord -. (cyblord)


Lesenswert?

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
von Christoph M. (mchris)


Angehängte Dateien:

Lesenswert?

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

von Cyblord -. (cyblord)


Lesenswert?

Christoph M. schrieb:
> Hier habe ich Dir mal eines als Vorlage gemacht.

DIESMAL wird er es sich anschauen. Ganz sicher!

von Günter K. (enk)


Lesenswert?

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
von Klaus (feelfree)


Lesenswert?

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.

von Günter K. (enk)


Lesenswert?

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
von Klaus (feelfree)


Lesenswert?

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!

von Günter K. (enk)


Lesenswert?

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)

von Günter K. (enk)


Lesenswert?

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.

von Günter K. (enk)


Lesenswert?

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)

von Klaus (feelfree)


Lesenswert?

Zitate ohne eigenen Text und Doppelposts. Geh lieber schlafen. Gute 
Nacht.

von Günter K. (enk)


Lesenswert?

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)

von Klaus (feelfree)


Lesenswert?

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.

von Günter K. (enk)


Lesenswert?

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
von Alejandro P. (alejandro_p79)


Lesenswert?

2114 kreigt man bei aliexpress, hab vor nicht so Lange 10 Stück gekauft. 
Die funktionieren auch :)

von Günter K. (enk)


Lesenswert?

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)

von Günter K. (enk)


Lesenswert?

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!

von Klaus (feelfree)


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

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.

von Thilo L. (bc107)


Lesenswert?

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 ;-)

von Klaus (feelfree)


Lesenswert?

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
von Thomas W. (datenreisender)


Lesenswert?

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?

von Thomas W. (datenreisender)


Lesenswert?

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).

von Klaus (feelfree)


Lesenswert?

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?

von Günter K. (enk)


Lesenswert?

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.

von Klaus (feelfree)


Lesenswert?

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.

von Günter K. (enk)


Lesenswert?

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
von Falk B. (falk)


Lesenswert?

Ich glaube, die ganze Diskussion ist eine Neuinterpretation von HURZ.

https://www.youtube.com/watch?v=MJ7jbQJXF68

Schönen Tag euch allen!

von Günter K. (enk)


Lesenswert?

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)

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?


von Thomas W. (datenreisender)


Lesenswert?

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
von Günter K. (enk)


Lesenswert?

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)

von Klaus (feelfree)


Lesenswert?

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
Noch kein Account? Hier anmelden.