Forum: Mikrocontroller und Digitale Elektronik Erste 65C02 Basteleien.


von Thomas P. (wellnestom)


Lesenswert?

Hi Leute.
Ich habe hier einen nagelneuen WDC65C02 vor mir liegen und will mich mal 
ein bisschen mit der Materie befassen und das Teil auf einem Steckbrett 
zum laufen bekommen.

Jetzt hätte ich für den Anfang mal 2 Fragen die ich aus dem Datenblatt 
nicht wirklich herauslesen konnte.

1. Kann ich an den Daten und Adresspins einfach LED's mit dranhängen um 
zu sehen ob sich was tut (und auch nur weils cool ist)? Ich hab keine 
Angabe gefunden wieviel mA der Prozessor an den Pins liefert.

2. Gibts sowas wie eine minimale Taktrate? Ich würde am Anfang gerne 
über einen Arduino eine sehr langsame Taktrate generieren lassen (so 
1Hz) um an den LED's auch zu erkennen was er macht und ob ichs richtig 
gemacht hab. Oder geht irgendwas flöten wenn 0.5 Sekunden High und dann 
0.5 Sekunden Low am Clockpin anliegen?

Gruß Tom

von Stefan F. (Gast)


Lesenswert?

Ich will ja kein notorischer Spielverderber sein, aber das würde ich 
besser bleiben lassen. Dabei lernst du nichts nützliches.

Wenn du gerade Langeweile hast und die AVR schon kennst, dann schau Dir 
einen 32bit ARM Controller an. Evaluation Kits bekommst du innerhalb von 
48 Stunden original ab 10€:
https://www.amazon.de/STM32-ST-NUCLEO-L073RZ-Nucleo-Development/dp/B01IO2JP60

von (prx) A. K. (prx)


Lesenswert?

Thomas P. schrieb:
> 1. Kann ich an den Daten und Adresspins einfach LED's mit dranhängen um
> zu sehen ob sich was tut (und auch nur weils cool ist)? Ich hab keine
> Angabe gefunden wieviel mA der Prozessor an den Pins liefert.

Iol/Ioh stehen im Datasheet. Treiber dazwischen hängen. 74HC544 tuts.

> 2. Gibts sowas wie eine minimale Taktrate?

Es steht keine maximale Zykluszeit im Datasheet, also nein.

von Thomas P. (wellnestom)


Lesenswert?

Das ist mir schon auch klar. ABER: Es soll gar nichts nützliches 
rauskommen. Es ist nur eine Spielerei auf die ich Lust hab. Die AVR's 
sind tolle Prozessoren aber das ist nicht was ich wirklich will.

Ich mag alte Retro Computer und will einfach aus Spass selber einen 
basteln. Mit einem "alten" Prozessor und verständlicher Hardware und 
Logik.

Arduino's und Teensy's programmiere ich schon lange, das ist nicht mehr 
wirklich interessant. Der alte Weg mit einem Prozessor der eigentlich 
nix kann und man alles irgendwie Softwareseitig in Assembler lösen muß 
fasziniert mich.

von Thomas P. (wellnestom)


Lesenswert?

Danke A. K.

von Wolfgang (Gast)


Lesenswert?

Thomas P. schrieb:
> Ich habe hier einen nagelneuen WDC65C02 vor mir liegen und will mich mal
> ein bisschen mit der Materie befassen und das Teil auf einem Steckbrett
> zum laufen bekommen.

Dafür brauchst du deutlich mehr, als die CPU.
Ohne externen Speicher (SRAM) läuft da gar nichts.

von (prx) A. K. (prx)


Lesenswert?

Stefanus F. schrieb:
> Ich will ja kein notorischer Spielverderber sein, aber das würde ich
> besser bleiben lassen. Dabei lernst du nichts nützliches.

Wenn er den Befehl/Datenfluss beobachten will, dann passt das schon. 
Sowas siehst du bei integrierten Controllern nicht, beim 6502 schon.

von (prx) A. K. (prx)


Lesenswert?

Wolfgang schrieb:
> Dafür brauchst du deutlich mehr, als die CPU.
> Ohne externen Speicher (SRAM) läuft da gar nichts.

Mit Mäuseklavier, LED-Zeilen und manueller Taktung kann man die Zyklen 
durchtakten. Ein Schachprogramm wird so nicht draus, aber lernen kann 
man schon. Allerdings kann man sowas heute auch auf dem Bildschirm im 
Simulator.

von Kriseninterventionsspezialist (Gast)


Lesenswert?

Ein alter VC-20 käme wohl billiger...

von Christian Erker (Gast)


Lesenswert?

Stefanus F. schrieb:
> Ich will ja kein notorischer Spielverderber sein
Dann lass es auch bleiben ;)
> Dabei lernst du nichts nützliches.
Na und? Es ist aber u.U. lustig.

Jetzt mal zum Thema:

Thomas P. schrieb:
> 1. Kann ich an den Daten und Adresspins einfach LED's mit dranhängen um
> zu sehen ob sich was tut (und auch nur weils cool ist)? Ich hab keine
> Angabe gefunden wieviel mA der Prozessor an den Pins liefert.

Laut Datenblatt 700µA High, 3.2mA low bei 5V Versorgung und 
eingehaltenen Logikpegeln. Also .. eher nicht, wobei moderne LEDs 
zugegeben auch bei 100µA noch gut sichtbar leuchten.

Thomas P. schrieb:
> 2. Gibts sowas wie eine minimale Taktrate? Ich würde am Anfang gerne
> über einen Arduino eine sehr langsame Taktrate generieren lassen (so
> 1Hz) um an den LED's auch zu erkennen was er macht und ob ichs richtig
> gemacht hab. Oder geht irgendwas flöten wenn 0.5 Sekunden High und dann
> 0.5 Sekunden Low am Clockpin anliegen?

Im Gegensatz zum originalen 6502 welcher intern teilweise dynamische 
Speicherzellen hatte ist der WDC "fully static", du kannst ihn also bis 
auf 0Hz heruntertakten.

Gruß,
Christian

von Frank K. (fchk)


Lesenswert?

Thomas P. schrieb:
> Hi Leute.
> Ich habe hier einen nagelneuen WDC65C02 vor mir liegen und will mich mal
> ein bisschen mit der Materie befassen und das Teil auf einem Steckbrett
> zum laufen bekommen.

Du hast warscheinlich einen WDC65C02S, wenn er nagelneu ist, oder?

> Jetzt hätte ich für den Anfang mal 2 Fragen die ich aus dem Datenblatt
> nicht wirklich herauslesen konnte.
>
> 1. Kann ich an den Daten und Adresspins einfach LED's mit dranhängen um
> zu sehen ob sich was tut (und auch nur weils cool ist)? Ich hab keine
> Angabe gefunden wieviel mA der Prozessor an den Pins liefert.

http://www.westerndesigncenter.com/wdc/documentation/w65c02s.pdf
Seite 24, "Table 6-2 DC Characteristics"

> 2. Gibts sowas wie eine minimale Taktrate?

Selbes PDF, nächste Seite.
"3.Since this is a static design, the maximum cycle time could be 
infinite."

Das mit dem Lesen üben wir aber noch mal, oder?

fchk

von Thomas P. (wellnestom)


Lesenswert?

Parallele SRAM's und EEPROM's hab ich noch liegen. Schon klar das nur 
die CPU nicht reicht.
Ich will auch gar keine Diskussion starten ob das Sinn macht oder nicht. 
Es wird einfach nur eine Bastelei die sich vielleicht irgendwann mal 
schick neben dem C64 in der Vitrine macht. ;)

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Wenn du ihm am Datenbus ein festes $EA unterschiebst (NOP Stecker), dann 
sollte er lustig Adressen durchzählen.
Der 60C02 arbeitet voll statisch, kann also mit beliebig niedriger 
Taktfrequenz betrieben werden. Die Einspeisung des Taktes ist aber nicht 
ganz trivial, da der kleine Kerl ein 2-Phasensignal möchte.

: Bearbeitet durch User
von (prx) A. K. (prx)


Lesenswert?

Matthias S. schrieb:
> Die Einspeisung des Taktes ist aber nicht
> ganz trivial, da der kleine Kerl ein 2-Phasensignal möchte.

Nope. Ein Takteingang, aber zwei komplementäre Ausgänge. 6502 und 
SC65C02S differieren jedoch etwas. Der 6502 nennt das Phi0(rein) und 
Phi1/2(raus), der SC Phi2(rein) und Phi1O/Phi2C(raus).

Reingeführte 2 Phasen gibts bei den 651x.

: Bearbeitet durch User
von Thomas P. (wellnestom)


Lesenswert?

Puh, so viele Antworten. ;)
Danke euch allen, es ist ein WDC65C02S6TPG-14

von karadur (Gast)


Lesenswert?

Ich würde die Busse mit 74xx245 versehen. Ein SRAM dran.

Wenn man das geschickt macht kann man mit dem Arduino Programme in den 
Ram schreiben und wieder auslesen. Als Anzeigen würde ich 7Segment 
nehmen und Hex dekodieren.

Die 74xx245 können z.T 40mA pro Ausgang.


Hier gibt es einen Basicrechner : 
http://searle.hostei.com/grant/6502/Simple6502.html

von .. (Gast)


Lesenswert?

> ein bisschen mit der Materie befassen und das Teil auf einem Steckbrett

ggf. mal Suchen;     site:6502.org W65C02S



----
ggf. da mal drüberlesen:
https://mysite.du.edu/~jcalvert/tech/6504.htm

Breadboard a Computer
This small system has been tested, and it works!

You will need a fairly large breadboard,
but not necessarily one of the expensive large ones :)

von (prx) A. K. (prx)


Lesenswert?

karadur schrieb:
> Ich würde die Busse mit 74xx245 versehen. Ein SRAM dran.

Bei einfachen Systemen unnötig. Die LEDs abzukoppeln ist sinnvoll, aber 
CPU, ROM, RAM und evtl IO kann man direkt ohne Treiber koppeln, wenn man 
kein Mehrplatinen-Trumm bauen will.

von karadur (Gast)


Lesenswert?

Ist mir klar nur wenn er z.B. Ein Programm vom Arduino ins RAM schreiben 
will muss er trennen.

von (prx) A. K. (prx)


Lesenswert?

Im Datasheet vom W65C02S gibts das, was der 6502 nicht hatte: Ein 
Bus-Enable Signal. Damit gehts auch ohne Treiber.

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

Thomas P. schrieb:
> Das ist mir schon auch klar. ABER: Es soll gar nichts nützliches
> rauskommen. Es ist nur eine Spielerei auf die ich Lust hab. Die AVR's
> sind tolle Prozessoren aber das ist nicht was ich wirklich will.
>
> Ich mag alte Retro Computer und will einfach aus Spass selber einen
> basteln. Mit einem "alten" Prozessor und verständlicher Hardware und
> Logik.
>
> Arduino's und Teensy's programmiere ich schon lange, das ist nicht mehr
> wirklich interessant. Der alte Weg mit einem Prozessor der eigentlich
> nix kann und man alles irgendwie Softwareseitig in Assembler lösen muß
> fasziniert mich.

Ich kann dir morgen einen ATARI 320XE Schaltplan raussuchen und 
empfehle ATRIE intern zur Lektüre

Darin werkelte eine 65C02. Hab auch noch einiges dazu.

Retro ist gut ;)

Namaste

von karadur (Gast)


Lesenswert?

@A.K. ich kannte nur den 6502 und den habe ich vor 35 Jahren benutzt.

von Manfred (Gast)


Lesenswert?

Thomas P. schrieb:
> Der alte Weg mit einem Prozessor der eigentlich
> nix kann und man alles irgendwie Softwareseitig in Assembler lösen muß
> fasziniert mich.

Wie jetzt? Der Prozessor kann genau so wenig oder viel wie jeder andere, 
nämlich genau garnichts, solange man ihm kein Programm gibt.

Es ist schon zweistellige Jahre her, dass ich mit dem 6502 gearbeitet 
habe, natürlich waren da EPROM, RAM und Portbausteine mit auf dem Board 
- welches ich von Hand selbst layoutet habe.

Vom 65SC02 weiß ich, dass der statisch ist: Ich hatte Ärger, dass sein 
Takt den Abgleich eines Empfängers sabotierte, also wurde er angehalten 
und der Quarzoszillator abgeschaltet. Irgendwas war da aber, es mussten 
Phasenbedingungen eingehalten werden, um nach der Pause definert weiter 
zu laufen.

Hier im Regal liegt noch ein InCircuitEmulator von Huntsville, damit 
konnte man den Programmlauf beliebig anhalten und am PC in die Register 
gucken ... lang lang ist's her, ich habe fast alles dazu vergessen.

Was Du mit LEDs und Arduino um einen 6502 herum willst, erschließt sich 
mir nicht.

von .. (Gast)


Lesenswert?

A. K. schrieb:
> Im Datasheet vom W65C02S gibts das, was der 6502 nicht hatte: Ein



Oscillator! RC oder Quartz an PHI2/PHI10... ;)

von hinz (Gast)


Lesenswert?

.. schrieb:
> A. K. schrieb:
>> Im Datasheet vom W65C02S gibts das, was der 6502 nicht hatte: Ein
>
> Oscillator! RC oder Quartz an PHI2/PHI10... ;)

So wie der 6501...

von Manfred (Gast)


Lesenswert?

hinz schrieb:
> So wie der 6501...

Es gibt / gab keinen 6501. Der kleine Bruder des 6502 ist der 6504.

von Thomas P. (wellnestom)


Lesenswert?

Manfred schrieb:
> Der Prozessor kann genau so wenig oder viel wie jeder andere,

Ich meinte damit nur 8 bit, nur 2 Register, kein firlefanz

Manfred schrieb:
> Was Du mit LEDs und Arduino um einen 6502 herum willst, erschließt sich
> mir nicht.

Alles nur zum rumspielen und testen. LED's waren nur so eine Idee um zu 
sehen ob sich was tut. Ein Arduino als Taktgeber kann so langsam Takten 
das ich nicht nur geflimmer hab, sondern es nachvollziehen kann.

Also kann ich jetzt z.B. den Arduino direkt auf die Address Pins legen 
und einfach "mitlesen" um mir dann die aktuelle Adresse Seriell an den 
PC schicken? Dann würde ich mir fürs erste die LED's sparen.

von hinz (Gast)


Lesenswert?

Manfred schrieb:
> hinz schrieb:
>> So wie der 6501...
>
> Es gibt / gab keinen 6501. Der kleine Bruder des 6502 ist der 6504.

Natürlich gabs den 6501, der ist aber ehr der große Bruder des 6502.

von hinz (Gast)


Lesenswert?

hinz schrieb:
> Manfred schrieb:
>> hinz schrieb:
>>> So wie der 6501...
>>
>> Es gibt / gab keinen 6501. Der kleine Bruder des 6502 ist der 6504.
>
> Natürlich gabs den 6501, der ist aber ehr der große Bruder des 6502.

http://www.obelisk.me.uk/electronics/R6501.html

von Axel S. (a-za-z0-9)


Lesenswert?

Thomas P. schrieb:
> Also kann ich jetzt z.B. den Arduino direkt auf die Address Pins legen
> und einfach "mitlesen" um mir dann die aktuelle Adresse Seriell an den
> PC schicken? Dann würde ich mir fürs erste die LED's sparen.

Wenn du diesen Teil weglassen willst, dann kannst du auch gleich bei 
einer Simulation bleiben. Für den 6502 gibt es online einen Simulator 
bis auf Transistor - Ebene. http://www.visual6502.org/

von Thomas P. (wellnestom)


Lesenswert?

Axel S. schrieb:
> Wenn du diesen Teil weglassen willst, dann kannst du auch gleich bei
> einer Simulation bleiben. Für den 6502 gibt es online einen Simulator
> bis auf Transistor - Ebene. http://www.visual6502.org/

Das ist doch alles nur mal fürs erste testen um es mir einfacher zu 
machen. Am Ende wird da kein Arduino mehr dran sein. Und Simulatoren 
sind gut, aber echte Hardware ist schöner. Ich nutze ja auch einen 
echten C64 und keinen Emulator zum spielen.
Und um sowas geht es ja am Ende. Versuchen einen 8bit Computer selber zu 
bauen. Vielleicht sogar besser als der C64. (Was eigentlich schon 
passiert ist wenn man das Basic weglässt...)  ;)

von Gerald B. (geraldb)


Lesenswert?

Wenn du dich für Basteleien mit dem 6502 interessierst, da gibt es auch 
ein aktulles Projekt.
https://steckschwein.de/

von Peter D. (peda)


Lesenswert?

Als 8Bit-CPU dürfte der Z80 interessanter sein. Er unterstützt bis zu 
128 Interruptvektoren. Es gibt auch passende Peripherie-ICs (PIO, SIO, 
CTC, DMA).

von Bastler (Gast)


Lesenswert?

Wie sich der 65C02 bei niedrigen Taktraten verhält, weiß ich nicht. Ich 
bin mal nen anderen Weg gegangen und hab nen 65(C?)22 an einen Mega1284P 
gehängt, um mit dessen Portleitungen den 6502 Bus zu simulieren. Hab nen 
555-Timer an den PHI-Eingang des 6522 angeflanscht. Total asynchron, das 
Ganze. Ging trotzdem einwandfrei.

von (prx) A. K. (prx)


Lesenswert?

Peter D. schrieb:
> Als 8Bit-CPU dürfte der Z80 interessanter sein. Er unterstützt bis zu
> 128 Interruptvektoren. Es gibt auch passende Peripherie-ICs (PIO, SIO,
> CTC, DMA).

Wenn es massgeblich darum geht, auf dem Bus direkt mitzuschnüffeln, ist 
das bei 6502 (oder 68xx) wesentlich leichter, weil ein Taktzyklus einem 
Speicherzyklus entspricht. Man kann also in jedem Schritt einen 
Buszyklus verfolgen. Bei der Z80 mit 3-4 Takten pro Buszyklus und 2 
verschiedenen Zyklustypen ist das wesentlich komplexer.

von Andreas B. (bitverdreher)


Lesenswert?

Peter D. schrieb:
> Als 8Bit-CPU dürfte der Z80 interessanter sein.

Wie AVR vs. Pic
Mit anderen Worten: Du hattest keine Apple II, C64, Atari o.ä., sondern 
einen TRS80, ZX81 oder was auch immer. ;-)
Ich fand die Adressierungsarten des 6502 immer spannend: 
Indiziert/Indirekt indirekt/indiziert, Zero page und dann noch die 
exotischen undokumentierten Befehle.

Bastler schrieb:
> Wie sich der 65C02 bei niedrigen Taktraten verhält, weiß ich nicht.

Meines Wissens ist die CMOS Version voll statisch.
Ich habe es übrigens mal geschafft den 6502 auf 2MHz statt 1MhHz zu 
takten. Das hat allerdings nur mit einem asymetrischen Taktsignal 
geklappt.

von (prx) A. K. (prx)


Lesenswert?

6502A lief ganz offiziell mit 2MHz.

von Andreas B. (bitverdreher)


Lesenswert?

A. K. schrieb:
> 6502A lief ganz offiziell mit 2MHz.

Es gab auch später welche mit 4MHz, aber ich meinte den Originalen.

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


Lesenswert?

Der 6502 ist ein schöner Prozessor mit vielen interessanten 
Adressierungsarten, leider nur mit sehr wenigen Registern.

Gute Ansätze für ein Minimalsystem kann man den Schaltplänen folgender 
SBCs entnehmen:

Elektor Junior Computer
Rockwell AIM-65
Commodore Kim-1

Ein Programm-Eprom muss auf den oberen Speicherbereich 0xFFFF 
(Reset-Vector) gemappt werden! Ohne den startet der Prozessor nicht 
richtig!

von Andreas B. (bitverdreher)


Lesenswert?

Wolfgang R. schrieb:
> Der 6502 ist ein schöner Prozessor mit vielen interessanten
> Adressierungsarten, leider nur mit sehr wenigen Registern.

Das ist ja gerade der Hauptunterschied zu anderen Prozessoren:
Beim 6502 dient die Zeropage quasi als (etwas langsamere) Registerbank.

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

Wolfgang R. schrieb:
> Der 6502 ist ein schöner Prozessor mit vielen interessanten
> Adressierungsarten, leider nur mit sehr wenigen Registern.

Die ersten 256 Byte im RAM arbeiten wie Register.
Immer noch mein Lieblings uC ;)

von (prx) A. K. (prx)


Lesenswert?

So wie ich das verstanden habe, geht es hier nicht um Unterschiede in 
der Anwendbarkeit heute oder damals, sondern um Bastelspielchen auf 
unterster Ebene. Direkt an den Pins zu verfolgen, was die Kiste macht. 
Unterschiede in Befehlssatz, Programmierung oder gar Hochsprachen 
spielen dann keine Rolle. Umso mehr die Unterschiede in der Hardware 
direkt.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Wolfgang R. schrieb:
> Elektor Junior Computer
> Rockwell AIM-65
> Commodore Kim-1

Da darf der CEPAC-65 nicht fehlen, ein Minimalsystem, wenn man noch 
einen 6532 auftreiben kann:
http://retro.hansotten.nl/6502-sbc/cepac-65/

von (prx) A. K. (prx)


Lesenswert?

Für Fans: "WDC also licenses 65C02 cores that run up to 200MHz."
Aber hier gehts ja eher um < 1 Hz.

: Bearbeitet durch User
von (prx) A. K. (prx)


Lesenswert?

Andreas B. schrieb:
>> 6502A lief ganz offiziell mit 2MHz.
>
> Es gab auch später welche mit 4MHz, aber ich meinte den Originalen.

Ich auch:
http://6502.org/documents/datasheets/mos/mos_6500_mpu_preliminary_may_1976.pdf

von Andreas B. (bitverdreher)


Lesenswert?

A. K. schrieb:
> Für Fans: "WDC also licenses 65C02 cores that run up to 200MHz."
Gab (oder gibt) es den auch zu kaufen?
Obwohl, zu spät, mein Ohio Superboard zum Aufpimpen ist schon von 20 
Jahren in der Tonne gelandet.

A. K. schrieb:
> Andreas B. schrieb:
>>> 6502A lief ganz offiziell mit 2MHz.
>>
>> Es gab auch später welche mit 4MHz, aber ich meinte den Originalen.
>
> Ich auch:
> http://6502.org/documents/datasheets/mos/mos_6500_mpu_preliminary_may_1976.pdf

Das war der 6502A. Der war im Ohio und den ersten 6502 Homecomputern 
nicht verbaut.

: Bearbeitet durch User
von (prx) A. K. (prx)


Lesenswert?

Matthias S. schrieb:
> Da darf der CEPAC-65 nicht fehlen, ein Minimalsystem, wenn man noch
> einen 6532 auftreiben kann:

Yep. Ein Mikrocontroller für Bastler. Ging auch noch kleiner mit 28-Pin 
6504 statt 40-Pin 6502. Als Entwicklungsssystem diente ein AIM-65, 
Commodore oder sonst einer der 6502 "PCs", bei dem man sowieso schon 
eine Entwicklungsumgebung drauf hatte - der Unterschied zu echten µCs.

von Peter D. (peda)


Lesenswert?

A. K. schrieb:
> Wenn es massgeblich darum geht, auf dem Bus direkt mitzuschnüffeln, ist
> das bei 6502 (oder 68xx) wesentlich leichter, weil ein Taktzyklus einem
> Speicherzyklus entspricht.

Ich finde das Schnüffeln beim Z80 leichter, da hat man getrennte Signale 
für IO, RAM und Code lesen/schreiben (IORQ, MREQ, M1, RD, WR).

Wie erfolgt denn beim 6502 das Latchen beim Lesen oder Schreiben?
Ich sehe da nur ein Signal Read/Write (RWB).

von Andreas B. (bitverdreher)


Lesenswert?

Peter D. schrieb:
> Ich sehe da nur ein Signal Read/Write (RWB).

Mehr braucht es auch nicht, da sowohl die Register (Zero Page) als auch 
das I/O im Speicher gemappt sind.

von (prx) A. K. (prx)


Lesenswert?

Peter D. schrieb:
> Wie erfolgt denn beim 6502 das Latchen beim Lesen oder Schreiben?
> Ich sehe da nur ein Signal Read/Write (RWB).

Eben. Mehr gibts auch nicht. Taktsignal high kennzeichnet den Zugriff. 
Taktzyklen ohne Zugriff gibts nicht. Wenn grad nichts ansteht, findet 
eben ein Dummy-Read statt.

Was auf eine Adresse sein kann, die sich in der Adressrechnung ohne 
Übertrag nach A8 ergibt. Gibts keinen Übertrag, ist dieser Zyklus 
produktiv. Andernfalls wird er ignoriert und in diesem Takt die obere 
Adresshälfte berechnet.

Jetzt klar, wieso das Teil auf dem Bus einfacher zu tracken ist? ;-)

PS: SYNC kennzeichnet den Opcode-Fetch vgl M1. Nützlich, wenn man das 
mit RDY oder NMI zum Single-Step koppelt.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Andreas B. schrieb:
> Mehr braucht es auch nicht, da sowohl die Register (Zero Page) als auch
> das I/O im Speicher gemappt sind.

Du brauchst mindestens noch ein Strobe, um beim Schreiben zu sagen, daß 
Adressen und Daten stabil sind. Einem Schreibzyklus kann man doch nicht 
die Adressen/Daten unterm Hintern wegändern.
Ein Strobe beim Lesen ist auch nicht schlecht, damit man IC-Ausgänge 
enablen kann, ohne daß die kurzzeitig gegeneinander kämpfen.

von (prx) A. K. (prx)


Lesenswert?

Peter D. schrieb:
> Du brauchst mindestens noch ein Strobe, um beim Schreiben zu sagen, daß
> Adressen und Daten stabil sind. Einem Schreibzyklus kann man doch nicht
> die Adressen/Daten unterm Hintern wegändern.

Dazu wird das Taktsignal Φ2 verwendet. RD,WR Signale lassen sich aus Φ2 
und R/W per Gatter ableiten, wenn nötig. 6800 ist genauso, wobei da aber 
ein VMA-Signal eine gültige Adresse anzeigt und Φ2 als "E" bezeichnet 
wird.

Das kennst du selbst aus Text-LCDs, der HD44780 wurde für den 6800 Bus 
entwickelt. Hitachi war 2nd Source für 6800 und entwickelte da auch 
selber.

: Bearbeitet durch User
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Stefanus F. schrieb:
> Dabei lernst du nichts nützliches.

Und ob man dabei nützliches lernt. Beispielsweise kann man, wenn man den 
Prozessor mit minimalem Takt betreibt, einer Instruktion Takt für Takt 
zusehen -
Anlegen von Adress- und Steuersignalen
Lesen des Opcodes

Anlegen von Adress- und Steuersignalen
Lesen etwaiger Operanden

Anlegen von Adress- und Steuersignalen
Schreiben etwaiger Ergebnisse

Man kann das natürlich als theoretisch zu erlernende Grundlagen ansehen, 
aber es trainiert auch das Lesen von Binärzahlen.

Ich hab' (vor sehr, sehr langer Zeit) meinen ersten Selbstbau-Rechner 
auf diese Art und Weise in Betrieb genommen. Im Eprom (das mir ein 
Freund für das Ding gebrannt hatte) war ein Fehler, und den habe ich mit 
LEDs und einem Assemblerlisting gesucht. Das war sozusagen Debuggen im 
Single-Step-Betrieb, wenn auch ohne Möglichkeit, die Registerinhalte zu 
sehen.

Nach ein paar tausend Taktzyklen war der Fehler gefunden, ein anderer 
Freund mit Eprommer patchte das Programm und dann lief die Kiste ...

: Bearbeitet durch User
von Andreas B. (bitverdreher)


Lesenswert?

Rufus Τ. F. schrieb:
> war ein Fehler, und den habe ich mit
> LEDs und einem Assemblerlisting gesucht.

Da hast Du es ja noch gut gehabt. Ich habe mich beim Ohio mit 
Maschinencode durchgefrickelt und auch so programmiert.

von Stefan F. (Gast)


Lesenswert?

Gab es da nicht ein fertiges Board mit einem diskreten Nachbau der CPU 
und zahlreichen LEDs drauf? Moment, ich google mal...

Da isser: https://monster6502.com/

von Andreas B. (bitverdreher)


Lesenswert?

A. K. schrieb:
> Peter D. schrieb:
>> Du brauchst mindestens noch ein Strobe, um beim Schreiben zu sagen, daß
>> Adressen und Daten stabil sind. Einem Schreibzyklus kann man doch nicht
>> die Adressen/Daten unterm Hintern wegändern.
>
> Dazu wird das Taktsignal Φ2 verwendet. RD,WR Signale lassen sich aus Φ2
> und R/W per Gatter ableiten, wenn nötig. 6800 ist genauso, wobei da aber
> ein VMA-Signal eine gültige Adresse anzeigt und Φ2 als "E" bezeichnet
> wird.
>
Falls es jemanden interessiert:
http://osi.marks-lab.com/reference/files/C1P-UserManual.pdf
Das ganze Adressdecodierung und RAM Logik sieht man auf S.13.

von Holm T. (Gast)


Lesenswert?

A. K. schrieb:
> Peter D. schrieb:
>> Wie erfolgt denn beim 6502 das Latchen beim Lesen oder Schreiben?
>> Ich sehe da nur ein Signal Read/Write (RWB).
>
> Eben. Mehr gibts auch nicht. Taktsignal high kennzeichnet den Zugriff.
> Taktzyklen ohne Zugriff gibts nicht. Wenn grad nichts ansteht, findet
> eben ein Dummy-Read statt.
>
> Was auf eine Adresse sein kann, die sich in der Adressrechnung ohne
> Übertrag nach A8 ergibt. Gibts keinen Übertrag, ist dieser Zyklus
> produktiv. Andernfalls wird er ignoriert und in diesem Takt die obere
> Adresshälfte berechnet.
>
> Jetzt klar, wieso das Teil auf dem Bus einfacher zu tracken ist? ;-)

..nö. Zumindest mir nicht.
Ich halte eine Einzelschrittmimik am Z80 für trivial, habe früher schon 
Sowas gebaut und aktuell sogar ein Bauwerk eines damaligen Freundes auf 
dem Tisch.

Ich verstehe nicht was Du daran für kompliziert hältst, kenne aber auch 
den 6502 nicht wirklich.
Die Tatsache das der Z80 zusätzlich eine IO Adreßraum hat, äußert sich 
in einer zusätzlichen LED für IORQ zu MREQ. Das macht aber weder was 
einfacher noch komplizierter.
Du kannst IORQ auch einfach weglassen und mit dem Z80 ein rein 
Memory-Mapped System bauen, Niemand wird Dich daran hindern.
>
> PS: SYNC kennzeichnet den Opcode-Fetch vgl M1. Nützlich, wenn man das
> mit RDY oder NMI zum Single-Step koppelt.

Demzufolge scheint es da nicht viel Unterschied zu geben.

Gruß,

Holm

von Holm T. (Gast)


Lesenswert?

A. K. schrieb:
> Peter D. schrieb:
>> Du brauchst mindestens noch ein Strobe, um beim Schreiben zu sagen, daß
>> Adressen und Daten stabil sind. Einem Schreibzyklus kann man doch nicht
>> die Adressen/Daten unterm Hintern wegändern.
>
> Dazu wird das Taktsignal Φ2 verwendet. RD,WR Signale lassen sich aus Φ2
> und R/W per Gatter ableiten, wenn nötig. 6800 ist genauso, wobei da aber
> ein VMA-Signal eine gültige Adresse anzeigt und Φ2 als "E" bezeichnet
> wird.
>
> Das kennst du selbst aus Text-LCDs, der HD44780 wurde für den 6800 Bus
> entwickelt. Hitachi war 2nd Source für 6800 und entwickelte da auch
> selber.


Das ist anders, aber nicht einfacher. Wie Du schon sagst läßt sich das 
mit ein paar Gattern inneinander überleiten. I8080 hat IOW und IOR, MEMW 
und MEMR..oder einfach Statussignale die erst decodiert werden müssen.
Das ist das Selbe wie MREQ und RD für MEMR oder MREQ und WR für MEMW, Io 
analog.

Gruß,
Holm

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

Stefanus F. schrieb:
> Gab es da nicht ein fertiges Board mit einem diskreten Nachbau der CPU
> und zahlreichen LEDs drauf? Moment, ich google mal...
>
> Da isser: https://monster6502.com/

Wow - sehr schick - so etwas wäre doch definitiv etwas für die 
Bürowand eines Elektronikunternehmens - jedenfalls deutlich besser als 
irgendwelche geschmacklosen Bilder (lokaler Künstler) :-)

von Guido Körber (Gast)


Lesenswert?

Manfred schrieb:
> Es gibt / gab keinen 6501. Der kleine Bruder des 6502 ist der 6504.

Komisch, mein Rockwell Datenbuch von 1984 hat auf Seite 2-18 einen 
R6501Q im 64 beinigen Gehäuse. Der hat 32 I/O Pins zusätzlich und etwas 
internen Speicher.

von Guido Körber (Gast)


Lesenswert?

65C02 auf Steckbrett wird sportlich. Die Versorgungsspannung ist etwas 
zickig bei denen. Da müssen die Siebkondensatoren ganz nahe beim Chip 
sein, sonst verrechnet der sich.

von Andreas B. (bitverdreher)


Lesenswert?

Guido Körber schrieb:
> Komisch, mein Rockwell Datenbuch von 1984 hat auf Seite 2-18 einen
> R6501Q im 64 beinigen Gehäuse. Der hat 32 I/O Pins zusätzlich und etwas
> internen Speicher.

Die sind wg. Patentproblemem mit Motorola ziemlich schnell wieder 
eingestampft worden.

von (prx) A. K. (prx)


Lesenswert?

Andreas B. schrieb:
>> Komisch, mein Rockwell Datenbuch von 1984 hat auf Seite 2-18 einen
>> R6501Q im 64 beinigen Gehäuse. Der hat 32 I/O Pins zusätzlich und etwas
>> internen Speicher.
>
> Die sind wg. Patentproblemem mit Motorola ziemlich schnell wieder
> eingestampft worden.

Der erste 6501 war pinkompatibel zum 40-pinnigen 6800 und musste deshalb 
eingestampft werden. Der R6501Q ist ein wesentlich später entstandener 
64-Pinner ohne Verwandschaft zum 6800.

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


Lesenswert?

Andreas B. schrieb:
> Die sind wg. Patentproblemem mit Motorola ziemlich schnell wieder
> eingestampft worden.

Gut, dass man sie bei ebay trotzdem problemlos kaufen kann...

von (prx) A. K. (prx)


Lesenswert?

Holm T. schrieb:
> Ich halte eine Einzelschrittmimik am Z80 für trivial,

Gemeint sind hier m.E. Einzelschritte auf dem Bus, nicht einzelne 
Befehle. Also Takt für Takt zum mitlesen.

von Andreas B. (bitverdreher)


Lesenswert?

Wolfgang R. schrieb:
> Gut, dass man sie bei ebay trotzdem problemlos kaufen kann...

Ja, das kleine Q am Ende übersehen. ;-)

von hinz (Gast)


Lesenswert?

Andreas B. schrieb:
> Wolfgang R. schrieb:
>> Gut, dass man sie bei ebay trotzdem problemlos kaufen kann...
>
> Ja, das kleine Q am Ende übersehen. ;-)

Es geht mehr um MCS6501 vs R6501.

von (prx) A. K. (prx)


Lesenswert?

hinz schrieb:
> Es geht mehr um MCS6501 vs R6501.

Eigentlich geht es weder um den einen noch den anderen,
sondern um den W65C02. ;-)

: Bearbeitet durch User
von hinz (Gast)


Lesenswert?

A. K. schrieb:
> hinz schrieb:
>> Es geht mehr um MCS6501 vs R6501.
>
> Eigentlich geht es weder um den einen noch den anderen,
> sondern um den W65C02. ;-)

Viel zu modern!

von Thomas P. (wellnestom)


Lesenswert?

Wahnsinn was ich hier für eine Diskussion losgetreten hab!

Guido Körber schrieb:
> 65C02 auf Steckbrett wird sportlich. Die Versorgungsspannung ist etwas
> zickig bei denen. Da müssen die Siebkondensatoren ganz nahe beim Chip
> sein, sonst verrechnet der sich.

Da hab ich bei den Projekten wie z.B. Steckschwein noch nix von 
Problemen gelesen. Ist auch egal, 100nF's hab ich genug da. ;)

So, hab ihn heut mal auf dem Steckbrett aufgebaut, $EA fest auf die IO 
Pins gelegt und die Adresspins und Clock auf nen Arduino der mit die 
Aktuelle Adresse bei jedem Takt ausliest und seriell an den PC schickt. 
Klappt soweit ohne Probleme. Habs gemütlich mit 1Hz angefangen und als 
das klappte ihn mal ne weile mit 50Hz laufen lassen. Bis jetzt alles 
sauber und stabil.

Nächster Schritt ist unten 32kB RAM und oben 8kB ROM rein zu packen um 
das ganze OE CS WE geschalte zu verstehen.

Gruß Tom

von Holm T. (Gast)


Lesenswert?

A. K. schrieb:
> Holm T. schrieb:
>> Ich halte eine Einzelschrittmimik am Z80 für trivial,
>
> Gemeint sind hier m.E. Einzelschritte auf dem Bus, nicht einzelne
> Befehle. Also Takt für Takt zum mitlesen.

Die Einzelschrittmimik die ich kenne löst auch die Einzelnen Buszyklen 
auf, also ist bei cpir z.B. nicht nur der Befehl, sondern jedes einzelne 
Data-Read zu verfolgen.

Ich verstehe also immer noch nicht wieso Du das für problematisch 
hältst.

Gruß,

Holm

von Guido Körber (Gast)


Lesenswert?

Irgendwo liegt bei mir auch noch ein 65C802 rum :)

von (prx) A. K. (prx)


Lesenswert?

Holm T. schrieb:
> Die Einzelschrittmimik die ich kenne löst auch die Einzelnen Buszyklen
> auf, also ist bei cpir z.B. nicht nur der Befehl, sondern jedes einzelne
> Data-Read zu verfolgen.

CPIR wird nicht als Statemachine-Schleife ausgeführt, sondern der Befehl 
wird in voller Schönheit vollständig wiederholt (*), als bestünde er aus 
einem CPI und einem Sprung zurück auf sich selbst. Also 
CPI,CPI,CPI,CPI,... Dadurch werden zwischen den Iterationen Interrupts 
möglich und es wird der Refresh nicht vergessen. Und natürlich verfolgt 
ein Single Step jede Iteration einzeln.

> Ich verstehe also immer noch nicht wieso Du das für problematisch
> hältst.

Ich schrieb "komplexer", nicht "problematisch".

*: HLT arbeitet genauso, mit Sprung auf sich selbst.
Nonstop wiederholte M1 Zyklen.

: Bearbeitet durch User
von Holm T. (Gast)


Lesenswert?

A. K. schrieb:
> Holm T. schrieb:
>> Die Einzelschrittmimik die ich kenne löst auch die Einzelnen Buszyklen
>> auf, also ist bei cpir z.B. nicht nur der Befehl, sondern jedes einzelne
>> Data-Read zu verfolgen.
>
> CPIR wird nicht als Statemachine-Schleife ausgeführt, sondern der Befehl
> wird in voller Schönheit vollständig wiederholt (*), als bestünde er aus
> einem CPI und einem Sprung zurück auf sich selbst. Also
> CPI,CPI,CPI,CPI,... Dadurch werden zwischen den Iterationen Interrupts
> möglich und es wird der Refresh nicht vergessen. Und natürlich verfolgt
> ein Single Step jede Iteration einzeln.

Ja und?

>
>> Ich verstehe also immer noch nicht wieso Du das für problematisch
>> hältst.
>
> Ich schrieb "komplexer", nicht "problematisch".
>

Hmm..


> *: HLT arbeitet genauso, mit Sprung auf sich selbst.
> Nonstop wiederholte M1 Zyklen.

Sonst wäre kein Refresh möglich.

..und komplexer ist da gar Nichts.

Gruß,

Holm

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Wir haben hier aber gar keinen Z80, sondern es ist ein 65C02. Der hat 
CPIR oder LDIR gar nicht, sondern jeder Befehl wird in 1, 2 oder max. 3 
Zyklen abgearbeitet. Das ist ja gerade neben dem beinharten Timing der 
Trick.

Und das Timing ermöglicht so geniale Konstruktionen wie den im 
Hauptspeicher liegenden Video RAM, der ohne Wartezyklen oder andere 
Tricks von CPU und Display 'gleichzeitig' benutzt wurde.
Siehe den Schaltplan vom Apple ][.

von (prx) A. K. (prx)


Lesenswert?

Matthias S. schrieb:
> sondern jeder Befehl wird in 1, 2 oder max. 3 Zyklen abgearbeitet.

2 bis 7 Zyklen.

von mach neu (Gast)


Lesenswert?

Gibt es den Core auch als Emulation, z. B. auf ARM oder so?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

mach neu schrieb:
> Gibt es den Core auch als Emulation

Äh, natürlich gibt es 6502-Emulatoren. Die ganzen Kisten von Commodore 
vor dem Amiga verwendeten den, die Kisten von Atari vor dem ST taten das 
auch und natürlich alles von Apple vor Mac/Lisa tat das.

Mit nur wenigen Momenten der Suche wirst Du was finden, da bin ich 
sicher.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Matthias S. schrieb:
> Und das Timing ermöglicht so geniale Konstruktionen wie den im
> Hauptspeicher liegenden Video RAM,

Naja, das liegt in erster Linie daran, daß alle Aktivität sich in der 
zweiten Hälfte des Taktzyklus drängelt. Das war beim 6800 genauso, und 
deswegen konnte man, sofern das RAM nur schnell genug war, problemlos 
mit 180° Phasenverschiebung zwei Prozessoren/Controller alternierend auf 
das gleiche RAM zugreifen lassen.

Das konnte man für Video-RAM o.ä. nutzen (stilsicher mit 6845) oder aber 
auch für Multiprozessorsysteme.

Dafür war halt die Taktfrequenz nicht besonders hoch; die meisten 
6502-Systeme wurden mit gerade mal 1 MHz betrieben, mehr als 2 MHz waren 
dann schon selten. Bei 68xx-Systemen sah das genauso aus.

Ursprünglich war das RAM (und auch die EPROMs) so langsam, daß man 
derartiges nicht anstellen konnte.

von (prx) A. K. (prx)


Lesenswert?

Rufus Τ. F. schrieb:
> Ursprünglich war das RAM (und auch die EPROMs) so langsam, daß man
> derartiges nicht anstellen konnte.

Die üblichen EPROMs hatte 450ns Zugriffszeit, mehr als 1 MHz geht da 
nicht. SRAMs wie 2114 1Kx4 waren in der Standardausführung auch nicht 
schneller.

: Bearbeitet durch User
von Tim (Gast)


Lesenswert?

Matthias S. schrieb:
> Wir haben hier aber gar keinen Z80, sondern es ist ein 65C02. Der
> hat
> CPIR oder LDIR gar nicht, sondern jeder Befehl wird in 1, 2 oder max. 3
> Zyklen abgearbeitet. Das ist ja gerade neben dem beinharten Timing der
> Trick.
>
> Und das Timing ermöglicht so geniale Konstruktionen wie den im
> Hauptspeicher liegenden Video RAM, der ohne Wartezyklen oder andere
> Tricks von CPU und Display 'gleichzeitig' benutzt wurde.
> Siehe den Schaltplan vom Apple ][.



Das ist wirklich genial, was der Wozniak da gebaut hat.
Ich habe Tage und Wochen über dem Assembler Code gesessen und 
„mehr“gelernt als in allen Vorlesungen zusammen ??

von wozup (Gast)


Lesenswert?

call -151
c050
c057

nach 37 Jahren kann ich das immer noch nicht vergessen ;)

von Michael U. (amiga)


Lesenswert?

Hallo,

Rufus Τ. F. schrieb:
> Das war beim 6800 genauso,

meine erste Begegnung mit einem µP, da mußte man sich wenigestens nicht 
mit sovielen Registern rumschlagen. ;-)

Hardware drumrum waren der Original-Taktgenerator (MC6870) und ein 128x8 
Ram (MC6810). Dazu D195 (7495) als Latch für Daten und Adressbus mit 
7-Segment-Decodern und VQB71. Tastatur eine 4x5 Matrix als Hex-Tastatur 
mit TTL-Grab, um Daten und Adresse für den 6800 bereitzustellen.
Ich weiß bis heute nicht, ob der 6800 überhaupt voll statisch war, 
zumindest ging ein Single-Step in Hardware bei mir stabil...
LDAA #0x03
LDAB #0x04
STAA 0x0080
oder so ähnlich und es lag Adresse 0x80 mit Daten 0x07 an, Hurra.
Ende dieser Einstigsphase war 6800, 8x 2102 (1kx8 Ram), ein 2708 (1k 
EPORM), ein 6820 (PIA) und ein 6850 (UART). 7-Segment mit 
Software-Multiplex, Tastatur als Matrix, 300Baud Cansas-City Standard 
als Kasseninterface, Monitorprogamm mit den üblichen Funktionen.
Von manchen dieser Erkenntnisse zehre ich wohl heute noch, ich bin mir 
aber sehr sicher, das ich den Drahtverhau heute nicht mehr löten 
würde... ;-)

Das kann er aber gern rund um den 6502 bauen, wenn es Spaß macht.

Gruß aus Berlin
Michael

von Andreas B. (bitverdreher)


Lesenswert?

Tim schrieb:
>> Und das Timing ermöglicht so geniale Konstruktionen wie den im
>> Hauptspeicher liegenden Video RAM, der ohne Wartezyklen oder andere
>> Tricks von CPU und Display 'gleichzeitig' benutzt wurde.
>> Siehe den Schaltplan vom Apple ][.
>
> Das ist wirklich genial, was der Wozniak da gebaut hat.
> Ich habe Tage und Wochen über dem Assembler Code gesessen und
> „mehr“gelernt als in allen Vorlesungen zusammen ??

Das haben der Ohio 1P und andere genauso gemacht. Daß das so von Wozniac 
stammt, möchte ich mal bezweifeln.

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


Lesenswert?

wozup schrieb:
> call -151

Ja... der gute alte Apple Monitor...

Vergesse ich auch nie wieder!

von (prx) A. K. (prx)


Lesenswert?

Michael U. schrieb:
> Ich weiß bis heute nicht, ob der 6800 überhaupt voll statisch war,

War er nicht. DMA über Cycle Stealing durfte man man nur so ein Dutzend 
Takte lang machen, sonst unregistrierten sich die Register.

von Tim (Gast)


Lesenswert?

Andreas B. schrieb:
> Tim schrieb:
>>> Und das Timing ermöglicht so geniale Konstruktionen wie den im
>>> Hauptspeicher liegenden Video RAM, der ohne Wartezyklen oder andere
>>> Tricks von CPU und Display 'gleichzeitig' benutzt wurde.
>>> Siehe den Schaltplan vom Apple ][.
>>
>> Das ist wirklich genial, was der Wozniak da gebaut hat.
>> Ich habe Tage und Wochen über dem Assembler Code gesessen und
>> „mehr“gelernt als in allen Vorlesungen zusammen ??
>
> Das haben der Ohio 1P und andere genauso gemacht. Daß das so von Wozniac
> stammt, möchte ich mal bezweifeln.

Ja, 2 und mehr Jahre später....?

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


Lesenswert?

Zyklische Videoausgabe aus dem Dynamischen Programm-RAM heraus ist schon 
genial, weil es die komplette Refresh-Logik unnötig macht...

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Tim schrieb:
> Ja, 2 und mehr Jahre später....?

Und wohlgemerkt in 2kByte ROM (!). Die anderen ROMs enthielten nur das 
BASIC. Hat man die rausgezogen, startete der Monitor ohne Knurren und 
Brummen.

von Andreas B. (bitverdreher)


Lesenswert?

Tim schrieb:
> Andreas B. schrieb:
>> Tim schrieb:
>>>> Und das Timing ermöglicht so geniale Konstruktionen wie den im
>>>> Hauptspeicher liegenden Video RAM, der ohne Wartezyklen oder andere
>>>> Tricks von CPU und Display 'gleichzeitig' benutzt wurde.
>>>> Siehe den Schaltplan vom Apple ][.
>>>
>>> Das ist wirklich genial, was der Wozniak da gebaut hat.
>>> Ich habe Tage und Wochen über dem Assembler Code gesessen und
>>> „mehr“gelernt als in allen Vorlesungen zusammen ??
>>
>> Das haben der Ohio 1P und andere genauso gemacht. Daß das so von Wozniac
>> stammt, möchte ich mal bezweifeln.
>
> Ja, 2 und mehr Jahre später....?

Apple II und Superboard 1P kamen beide 1977 raus. Ich denke eher, daß 
man zwangsläufig auf diese Idee kommen muß.
Ich hatte mal mal ein einfaches DOS für den Ohio geschrieben. Ich kam 
mir sehr schlau dabei vor, das OS auf die ersten Spuren zu schreiben und 
das Inhaltsverzeichnis auf die mittlere Spur der Disk (Zugriffszeit). 
Später habe ich festgestellt daß CP/M das schon lange so gemacht hatte. 
:-(

von (prx) A. K. (prx)


Lesenswert?

Fairerweise: Auf recht clevere Weise CPU-RAM und Videorefresh zu 
kombinieren ist auch Sinclair bei ZX-80 gelungen, in insgesamt 1kB RAM.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Michael U. schrieb:
> Von manchen dieser Erkenntnisse zehre ich wohl heute noch,

Bei mir war es einige Jahre später, mit einem 6809 und 48 kiB RAM. Auf 
Lochrasterplatinen gefädelt.

Die Kiste lief dann etliche Jahre lang zuverlässig mit 2 MHz Takt ...

von (prx) A. K. (prx)


Lesenswert?

Die Form des Video-Sharings wurde sogar noch bei 68000 Systemen genutzt, 
auf die gleiche Weise. Die konnte ja auch noch den 6800 Bus. Allerdings 
war der Zugriff darauf langsamer, weshalb es in dem System 2 Banks gab, 
eine schnelle und eine langsame.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

A. K. schrieb:
> Fairerweise: Auf recht clevere Weise CPU-RAM und Videorefresh zu
> kombinieren ist auch Sinclair bei ZX-80 gelungen, in insgesamt 1kB RAM.

Das ist wahr, allerdings wurde zumindest beim ZX-81 ja insofern die CPU 
ausgebremst, indem die ULA dem Z80 NOPs unterschob, während der 
Bildschirm abgearbeitet wurde. Ich habe nie so ganz verstanden, warum 
man sich nicht den Refresh Zähler des Z80 zunutze gemacht hat, um mit 
ihm den Videoram auszulesen, die Idee spukte mir immer mal wieder im 
Kopf rum, aber ist im Laufe der Jahre natürlich obsolet geworden.

Der Bauteileaufwand war natürlich beim ZX-81 ungeschlagen niedrig - 
typisch Clive Sinclair.

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


Lesenswert?

A. K. schrieb:
> Auf recht clevere Weise CPU-RAM und Videorefresh zu
> kombinieren ist auch Sinclair bei ZX-80 gelungen, in insgesamt 1kB RAM.

Der ZX-81 hat aber statische RAMs auf dem Motherboard, die brauchen 
keinen Refresh...

von Andreas B. (bitverdreher)


Lesenswert?

Ich vermute mal, die ursprünglich Idee kam von Don Lancaster:
https://en.wikipedia.org/wiki/TV_Typewriter#TV_Typewriter_Cookbook
Wäre mal interessant da reinzuschauen.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

A. K. schrieb:
> Die Form des Video-Sharings wurde sogar noch bei 68000 Systemen genutzt,
> auf die gleiche Weise.

Jep. Gutes Beispiel ist der klassische Macintosh (128k/512k/SE), der auf 
die Art auch gleich noch den Sound produzierte, der die gleiche 
Samplefrequenz wie die Zeilenfrequenz des Videos hatte...

von Andreas B. (bitverdreher)


Lesenswert?

Wolfgang R. schrieb:
> A. K. schrieb:
>> Auf recht clevere Weise CPU-RAM und Videorefresh zu
>> kombinieren ist auch Sinclair bei ZX-80 gelungen, in insgesamt 1kB RAM.
>
> Der ZX-81 hat aber statische RAMs auf dem Motherboard, die brauchen
> keinen Refresh...

Die RAms nicht, aber die Videologik.

von Peter D. (peda)


Lesenswert?

Beim Z80-Homecomputer (KC85) waren auch die CPU- und Videozugriffe 
ineinander verschachtelt. Daher mußte der CPU-Quarz auch eine ganz 
bestimmte Frequenz haben.
Ich glaube, die Videoausgaben wurden in den Refreshzyklus eingeblendet, 
statt der Refreshadresse. Da die Videoausgabe die Adresse hochzählte, 
funktionierte der DRAM-Refresh weiterhin.

von Michael U. (amiga)


Lesenswert?

Hallo,

A. K. schrieb:
> Michael U. schrieb:
>> Ich weiß bis heute nicht, ob der 6800 überhaupt voll statisch war,
>
> War er nicht. DMA über Cycle Stealing durfte man man nur so ein Dutzend
> Takte lang machen, sonst unregistrierten sich die Register.

gerade mal das Datenblatt des MC6800 runtergeladen. Ich habe es wohl 
über /HALT realisiert, Takt lief ja durch. Damit darf man das ja machen. 
Damals kannte ich aber nichtmal den Unterschied. ;)

Gruß aus Berlin
Michael

von mach neu (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> Mit nur wenigen Momenten der Suche wirst Du was finden, da bin ich
> sicher.

Für PC ja klar, gibt s bis zum Abwinken, aber für ARM oder einen anderen 
embedded (nicht raspberry)???

von S. R. (svenska)


Lesenswert?

Man bekommt solche Emulationen auch als C-Code.
Den kompiliert man dann für das System der Wahl.

von GeraldB (Gast)


Lesenswert?

A. K. schrieb:
> Fairerweise: Auf recht clevere Weise CPU-RAM und Videorefresh zu
> kombinieren ist auch Sinclair bei ZX-80 gelungen, in insgesamt 1kB RAM.

Nicht wirklich. Der ZX-80 konnte entweder das Programm ausführen oder 
etwas auf dem Monitor anzeigen. Beides gleichzeitig ging nicht.

Wenn das Programm lief, dann war der Monitor schwarz.
Wenn der Monitor etwas anzeigte, dann war die Programmausführung 
angehalten.

von Axel S. (a-za-z0-9)


Lesenswert?

mach neu schrieb:
> Rufus Τ. F. schrieb:
>> Mit nur wenigen Momenten der Suche wirst Du was finden, da bin ich
>> sicher.
>
> Für PC ja klar, gibt s bis zum Abwinken, aber für ARM oder einen anderen
> embedded (nicht raspberry)???

Das ist doch vollkommen Wumpe. Eine Emulation eines CPU-Kerns kann man 
in 100% architekturunabhängigem C schreiben. Im Grunde ist das nur eine 
etwas größere Statemachine.

Wenn man da nicht schlampt oder absichtlich eine Abhängigkeit von der 
Zielarchitektur einbaut, dann compiliert das auf einem ARM genauso wie 
auf einem x86 PC.

Geschwindigkeit ist natürlich eine andere Frage. Aber ein 6502 ist 
gemessen an heutigen Architekturen so lahm, daß man sich anstrengen muß, 
um die Emulation noch langsamer zu machen, als das Original.

von Peter S. (cbscpe)


Lesenswert?

Thomas P. schrieb:
> Wahnsinn was ich hier für eine Diskussion losgetreten hab!
>
> Guido Körber schrieb:
>> 65C02 auf Steckbrett wird sportlich. Die Versorgungsspannung ist etwas
>> zickig bei denen. Da müssen die Siebkondensatoren ganz nahe beim Chip
>> sein, sonst verrechnet der sich.
>
> Da hab ich bei den Projekten wie z.B. Steckschwein noch nix von
> Problemen gelesen. Ist auch egal, 100nF's hab ich genug da. ;)
>
> So, hab ihn heut mal auf dem Steckbrett aufgebaut, $EA fest auf die IO
> Pins gelegt und die Adresspins und Clock auf nen Arduino der mit die
> Aktuelle Adresse bei jedem Takt ausliest und seriell an den PC schickt.
> Klappt soweit ohne Probleme. Habs gemütlich mit 1Hz angefangen und als
> das klappte ihn mal ne weile mit 50Hz laufen lassen. Bis jetzt alles
> sauber und stabil.
>
> Nächster Schritt ist unten 32kB RAM und oben 8kB ROM rein zu packen um
> das ganze OE CS WE geschalte zu verstehen.
>
> Gruß Tom

Hallo Tom,

65C02 auf Steckbrett ist absolut problemlos, einfach ein paar 100nF in 
die GND/VCC Schiene stecken und gut ist. Bei mir lief ein 65C02 mit 
11MHz ohne das geringste Problem.

http://forum.6502.org/viewtopic.php?f=4&t=3458&hilit=romulus+1st

da es für 11MHz beim ROM schwierig wird habe ich dem 6502 einen AVR 
spendiert der ihm beim Booten ein paar Instruktionen liefert und so das 
"BootROM" liefert. Der AVR kontrolliert den Takt, d.h. da hat der AVR 
keine Eile. Sobald das "BootROM" über diesen Weg geladen ist übernimmt 
der 65C02 das Szepter. Der AVR liefert weiterhin den Takt aber nun nicht 
via Software sondern via Hardware (PHI2 ist ein Timer output). Der AVR 
übernimmt danach die Aufgabe einen VGA Monitor zu füttern und ein PS/2 
Keyboard zu bedienen.

Gruss

Peter

von Peter D. (peda)


Lesenswert?

GeraldB schrieb:
> Nicht wirklich. Der ZX-80 konnte entweder das Programm ausführen oder
> etwas auf dem Monitor anzeigen. Beides gleichzeitig ging nicht.

Nur gut, daß andere Z80 Kleincomputer mit TV-Ausgang das nicht wußten, 
die konnten das nämlich sehr wohl.

von S. R. (svenska)


Lesenswert?

Es gab aber einige Systeme, die einen Großteil der Bilderzeugung in 
Software erledigt haben. Bei abgeschaltetem Bildschirm liefen 
Berechnungen dann deutlich schneller.

von (prx) A. K. (prx)


Lesenswert?

Peter D. schrieb:
>> Nicht wirklich. Der ZX-80 konnte entweder das Programm ausführen oder
>> etwas auf dem Monitor anzeigen. Beides gleichzeitig ging nicht.
>
> Nur gut, daß andere Z80 Kleincomputer mit TV-Ausgang das nicht wußten,
> die konnten das nämlich sehr wohl.

Die Aussage bezog sich auf die extrem minimalistische Weise, mit der 
ZX-80 und ZX-81 den Videorefresh abwickelten. Nicht auf alle 
Z80-Systeme.

Wenn man den Program Counter als Adresszähler für Videodaten verwendet 
und den Befehlsdekoder zusammen mit der Refresh-Adresse für die 
Erkennung vom Zeilenende, dann kann man schlecht parallel dazu ein 
Programm ausführen.

Der ZX-81 fügte einen Modus hinzu, in dem das Programm in der vertikalen 
Austastlücke ausgeführt wurde. Schnell war das natürlich nicht. Aber die 
Bilddarstellung setzte nicht aus und es war immer noch sparsam in 
Hardware.

: Bearbeitet durch User
von (prx) A. K. (prx)


Lesenswert?

Matthias S. schrieb:
> Ich habe nie so ganz verstanden, warum
> man sich nicht den Refresh Zähler des Z80 zunutze gemacht hat, um mit
> ihm den Videoram auszulesen, die Idee spukte mir immer mal wieder im
> Kopf rum, aber ist im Laufe der Jahre natürlich obsolet geworden.

Das Problem ist das Timing. Das geht nur, wenn die CPU ausschliesslich 
M1 Zyklen ausführt. So kannst du aber kein sinnvolles Programm 
ausführen. Weshalb der ZX-80 das auch nicht tat, d.h. sein "Programm" 
bestand beim Videorefresh innerhalb einer Zeile nur aus NOP und HLT, die 
sich auf dem Bus nur in der PC-Zählung unterscheiden.

: Bearbeitet durch User
von Frederik H. (freetz)


Lesenswert?

Sehr zu empfehlen, wenn man sich ein 6502-System auf Breadboard-Basis 
aufbauen möchte (und dazu eine Menge über die Systemarchitektur lernen 
möchte): Mehrteiliges Video-Tutorial von Ben Eater auf 
https://eater.net/6502

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.