Bastelei mit dem 6504

Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Unilein
Fachgebiet Rauchentwicklung
*******

Beiträge: 783
Registriert seit: Apr 2014
Bewertung: 5
#1
19.06.2019, 16:55

Hallo zusammen,

wenn ich in Kürze mein Z80Ardu-Projekt abschließe (wann das sein wird, weiß ich nicht, denn ich arbeite ja noch an der IDE-Schnittstellte und an der Soundkarte und am seriellen Port und an WLAN.... Ich merke schon, das wird nix!), dann werde ich mir mal den 6504 vorknöpfen. Der 6504 ist der kleine Bruder vom 6502. Er steckt in einem 28-Pol-Gehäuse und kann nur 8 Kilobyte Speicher adressieren.

Der Befehlssatz ist wie der des 6502-Prozessors, wie er im Apple II und im C64 (als 6510) arbeitet.

Was ich genau bauen werde, weiß ich noch nicht. Ich habe jedoch 2K EEproms und 2 K SRAM-Bausteine da. Da kann man bestimmt was zaubern.

Viele Güße
Uni
-----

Sic mundus creatus est.
(Dieser Beitrag wurde zuletzt bearbeitet: 12.04.2020, 15:23 von Unilein. Bearbeitungsgrund: Falsche Prozessorbezeichnung )
Zitieren
Unilein
Fachgebiet Rauchentwicklung
*******

Beiträge: 783
Registriert seit: Apr 2014
Bewertung: 5
#2
27.10.2019, 18:18

Hallo zusammen,

heute habe ich mich kurz mit dem 6504 beschäftigt. Dieser Prozessor ist tatsächlich voll Befehlskompatibel zum 6502. Der 6502 springt bei einem der folgenden Ereignisse jeweils einen bestimmten Vektor im Speicher an und führt dann das Programm an der dort hinterlegten Adresse aus:

NMI: $FFFA / $FFFB
RESET: $FFFC / $FFFD
BRK: $FFFE / $FFFF

Da der 6504 aber nur über einen Adressraum von 4 Kilobyte verfügt, stelle ich mir die Frage, wo denn da die entsprechenden Vektoren sind. Natürlich könnte man annehmen, dass sich diese dann am Ende des 4K-Speichers befinden, gefunden habe ich dazu bislang aber nichts. Genauso gut könnte es sein, dass dieser Prozessor gar keine Vektoren hat und der Programmstart grundsätzlich eine feste Adresse hat. Die Adresse $0000 ist es jedenfalls nicht, weil die 65xx-Prozessoren über eine sogenannte Zero-Page verfügen, mit der bestimmte Adressierungsarten möglich sind. Beim 6502 sind das 256 Byte. Wie groß diese Page beim 6504 ist, ist mir nicht bekannt.

Falls jemand etwas weiß, gerne her mit den Infos.

Ich suche derweil weiter.

Gruß,
Uni
-----

Sic mundus creatus est.
(Dieser Beitrag wurde zuletzt bearbeitet: 12.04.2020, 14:43 von Unilein.)
Zitieren
Unilein
Fachgebiet Rauchentwicklung
*******

Beiträge: 783
Registriert seit: Apr 2014
Bewertung: 5
#3
27.10.2019, 18:40

Kaum ist es geschrieben, finde ich im 6502-Forum einen interessanten Link:

http://forum.6502.org/viewtopic.php?f=12...hilit=6503

Es wird beschrieben, dass die Adressen beim 6504 sozusagen "rund laufen". Sobald die letzte Adresse im 4K-Bereich überschritten wird,  wird wieder bei 0 begonnen. Die Adressen $2000, $4000, $8000,.... bis $F000 sind sozusagen alle gleich.

Die Interrupt-Vektoren befinden sich also ab $1FFA, aber auch ab $FFFA.

Gruß
Uni
-----

Sic mundus creatus est.
(Dieser Beitrag wurde zuletzt bearbeitet: 12.04.2020, 15:26 von Unilein. Bearbeitungsgrund: Fehlerhafte Speicherseitenangabe )
Zitieren
Unilein
Fachgebiet Rauchentwicklung
*******

Beiträge: 783
Registriert seit: Apr 2014
Bewertung: 5
#4
12.04.2020, 15:42

Hallo zusammen,

heute habe ich den 6504 mal auf mein Breadboard gepackt. Wirklich simpel anzuschließen, das Teilchen.
Ich habe das Ganze als "NOP-Generator" aufgebaut. Der Prozessor bekommt auf dem Datenbus immer den
OP-Code $EA (=Nop = No Operation ) vorgesetzt. Der Prozessor tut dann nichts Anderes als alle Adressen
zu durchlaufen und dabei nix zu tun.

Das hat auf Anhieb funktioniert. Mit meinem Oszi habe ich auf den Adressleitungen geschaut, ob Aktivität
herrscht.

Der Prozessor läuft mit 1 MHz. Das erscheint wenig, vor Allem, wenn man das mit den 4 MHz des Z80b
vergleicht. Allerdings ist der interne Aufbau des 6504 ein ganz anderer. Die meisten Befehle werden in einem
Takt abgearbeitet.

Was auffällt, ist dass der Baustein recht warm wird (im Vergleich zum Z80). Parallel zum 6504 habe ich noch
einen 8501 (was übrigens ein 6502 in einer anderen Fertigungstechnik ist. Er kam z.B. im Commodore C16
zum Einsatz) aufgebaut. Wie der 6504 wurde er als NOP-Generator beschaltet. Und siehe da: Er wird auch recht
warm! Scheint also ein Phänomen des 6502/6504/8501-Kerns zu sein.

Der 6504 kann 8 Kilobyte adressieren. Man könnte also 4 x 2 Kilobyte (oder auch 1 x 8 Kilobyte) verbauen.
Nur mal so als Idee: 2 Kilobyte ROM und 6 Kilobyte RAM.

Mal schauen, was ich daraus mache... :-)

Gruß,
Uni
-----

Sic mundus creatus est.
Zitieren
Unilein
Fachgebiet Rauchentwicklung
*******

Beiträge: 783
Registriert seit: Apr 2014
Bewertung: 5
#5
12.04.2020, 18:19

Ich hab mal noch einen 6502 dazu gepackt. Der Vollständigkeit halber.

Oben: 8501
Unten Links: 6504
Unten Rechts: 6502

Gruß
Uni

[Bild: 046506e4c2c8c833a10772f13d6abe3f.jpg]
-----

Sic mundus creatus est.
(Dieser Beitrag wurde zuletzt bearbeitet: 12.04.2020, 18:20 von Unilein.)
Zitieren
Unilein
Fachgebiet Rauchentwicklung
*******

Beiträge: 783
Registriert seit: Apr 2014
Bewertung: 5
#6
12.04.2020, 20:30

Hallo zusammen,

ich habe mal ein erstes Design auf mein Breadboard gesteckt. 3 x 2 KByte RAM und 1 x 2 KByte EEProm. Der Systemtakt beträgt 1 MHz. Mehr geht da auch nicht.
Für die Aktivierung des jeweiligen Speicherbausteins befindet sich ein SN74LS139 (Multiplexer) auf dem Board. So wird der Speicher in 4 x 2KByte aufgeteilt.

Ich habe aber bereits einen kleinen Denkfehler in dem Design entdeckt, denn der 6504 (bzw. alle 65xx Prozessoren) beherrscht nur memory mapped IO. Das bedeutet, dass ein Peripherie-Baustein (wie z.B. ein UART) in den Speicherbereich eingeblendet werden muss und dann über direkte Adressierung angesprochen werden muss. Das geht auf Kosten des verfügbaren Speichers, da der jeweilige Bausein eben Adressen im verfügbaren Adressraum benötigt.

Ich werde also wohl einen der RAM-Bausteine gegen einen UART austauschen müssen, damit wir irgendwann auch eine Ausgabe erhalten können.

Alles in Allem wird das wohl ein Breadboard-Projekt bleiben. Es geht mir nur darum, es zum Laufen zu bringen. Mehr als ein "Hello World" ist nicht zu erwarten Big Grin

Gruß
Uni

[Bild: 4ee00f667bf308f475de50a07c508abf.jpg]

Gesendet von meinem wahnsinnig modernen  Gesprächsknochen
-----

Sic mundus creatus est.
(Dieser Beitrag wurde zuletzt bearbeitet: 12.04.2020, 20:40 von Unilein.)
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste