Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » Assembler + KC85/4 » Themenansicht

Autor Thread - Seiten: -1-
000
14.09.2018, 22:18 Uhr
EPS



Hallo, ich bin seit kurzem wieder im Retro Fieber und habe meine alten Schätzchen ausgegraben KC85/4, KCc, Schneider CPC464 (zugegeben auch einen KC85 Emulator zum spielen).

Nach 30 Jahren "Abstinenz" wollte ich mal wieder etwas programmieren, vorzugsweise aber nicht wie anno domini in Basic, sondern in Assembler.

In den Jahren dazwischen habe ich dies auf diversen Mikrocontrollern auch gemacht und bin, was Assembler angeht, einigermaßen fit. Aber es steht und fällt natürlich mit dem Hardwareverständnis.

Das mit dem Hardwareaufbau des KC 85/4 ist allerdings doch schon ein paar Monde her, daher die Frage(n) auf die ich nirgends so richtig eine Antwort finde.

Im Systemhandbuch ist ein Beispiel für Basic um die Bilder zu schalten, z.B. Zeige Bild 0 - schreibe Bild 1 etc.pp.

Ebenfalls ist der RAM Aufbau etc. beschrieben und auch das Switchen von Speicherbereichen. Alles soweit verständlich.

Aber mir fehlt ein genaues Beispiel wie ich gezielt z.B. den Pixelram von Bild 0 einschalten und beschreiben kann, respektive den FarbRAM usw., wohlgemerkt in Assembler.

Kann mir da jemand weiter helfen, eine Anleitung, Einweisung, Beispiel o.ä. wäre toll (oder auch ein anderes Forum sollte ich hier falsch sein mit diesem Anliegen).

Vielen Dank im Vorraus.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
16.09.2018, 16:29 Uhr
mwd



Hallo,
das Schalten zwischen Bild 0 und 1 wird über den Ausgabekanal 84H realisiert. Details dazu finden sich im Systemhandbuch im Kapitel 3.3.2. auf Seite 61. Damit der aktuelle Zustand jederzeit verfügbar ist, sollte das an den Kanal 84H ausgegebene Byte auch in der Merkzelle IX+1 (siehe S. 81) gespeichert werden. Z. B.: schaltet folgender Code den Zugriff auf Bild 1, während Bild 0 angezeigt wird.

LD A,IX+1
AND 0FAh ; Bits 1 und 3-7 unberührt lassen
OR 4 ; Anzeige Bild 0, Zugriff auf Bild 1
OUT 84h
LD IX+1,A

Grüße,
Matthias.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
16.09.2018, 16:42 Uhr
EPS



Hey, danke für den Schubser in die richtige Richtung. Ist das die einzige Möglichkeit oder die einzig richtige? Wenn ich es richtig kapiere müsste doch eine "Manipulation" der IRM Arbeitszellen auch funktionieren - oder?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
16.09.2018, 17:12 Uhr
mwd



Keine Ahnung, ob es noch andere Möglichkeiten gibt. Pixel- und Color-RAM der beiden Bilder liegen hintereinander auf der gleichen Adresse. Irgendwie muß die jeweilige Ebene aktiviert werden. Das geht meines Wissens nur über Ausgabekanal 84H. Falls Du das Video-RAM zwischen Adresse AD00h und B700h meinst, das kannst Du direkt beschreiben. Jedoch stehen dort nur die ASCII-Codes des Bildschirminhalts.

Grüße,
Matthias.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
16.09.2018, 17:16 Uhr
EPS



Du hast recht. Da hab ich wohl was durcheinander geschmissen.

Danke nochmals, der KC85 ist in der Hinsicht doch recht speziell.

Jetzt werd ich erst einmal etwas herumexperimentieren um mich (wieder) an den KC85 zu "gewöhnen". 30 Jahre sind echt verdammt lang her...
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
16.09.2018, 17:48 Uhr
Zwangsrentner



Vom KC-Club gab's einen Assembler-Programmierkurs. Liegt bei mir noch irgendwo, weiß aber nicht ob dir das was bringt ca 170 Seiten.
grüsse aussem harz
--
I'm just a truckle, but I don't like to truckle >TIMOTHY TRUCKLE<

Dieser Beitrag wurde am 16.09.2018 um 17:49 Uhr von Zwangsrentner editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
16.09.2018, 21:09 Uhr
maleuma



Hallo EPS,

wenn Du Dich nicht selbst um die richtige Belegung der Ports und IX-Arbeitszellen kümmern willst, kannst Du am KC85/4 auch die ESC-Routinen benutzen. ESC+"1" bis ESC+"4" schaltet zum Beispiel die IRM-Ebenen um. Siehe dazu im Systemhandbuch bei den ESC-Funktionen nach.

Übrigens würde ich das Beispiel von mwd etwas anders schreiben:
LD A,(IX+1) ; aktueller Wert von Port 84h
AND 0FAh ; Bits 1 und 3-7 unberührt lassen
OR 4 ; Anzeige Bild 0, Zugriff auf Bild 1
LD (IX+1),A ; zuerst die Merkzelle aktualisieren
OUT 84h ; dann den Ausgabebefehl senden.

Wenn Du die Reihenfolge der letzten beiden Befehle anders herum schreibst, kann bei einem Interrupt zwischen diesen beiden Befehlen eine falsche Einstellung entstehen.

Um das gleiche mit ESC-Funktionen zu realisieren, programmierst Du:
CALL 0F003H
DB 23H ; OSTR
DB 1BH ; ESC
DB "3" ; Anzeige Bild 0, Zugriff Bild 1
DB 0
--
Mario.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek