Robotrontechnik-Forum

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

Robotrontechnik-Forum » Technische Diskussionen » KC85 EDAS: Assembler-Programm kann nur einmal Pixel verschieben » Themenansicht

Autor Thread - Seiten: -1-
000
01.12.2024, 20:26 Uhr
eudatux23

Avatar von eudatux23

Hallo zusammen,

Habe mich die letzten Tage mit Assembler (EDAS 1.64) auf dem KC85/4 beschäftigt. Jetzt als kleines erstes Mini-Projekt wollte ich die linke Text-spalte pixelweise nach oben scrollen lassen.

Das Programm scheint eigentlich zu funktionieren, denn die linke Text-Spalte wird auch ein Pixel nach oben geschoben. Bei jedem weiteren Start des Programms passiert jedoch nichts weiter, der Bildschirminhalt bleibt von da an gleich.

Das Programm wird ab Adresse 3000H im RAM abgelegt.

Was mache ich falsch, habe ich irgend etwas offensichtliches übersehen? Bisher bin ich noch komplett neu in dem Thema und versuche mich da so gut es geht einzuarbeiten.

Hier einmal ein Screen-Capture vom bisherigen Code:



Vielen Dank im Voraus!


Schöne Grüße
Alexander
--
Youtube-Videos über den KC 85/4:
https://www.youtube.com/@eudatux23
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
01.12.2024, 22:14 Uhr
Dresdenboy



Hallo Alexander,

vorweg: ich habe bisher weder mit KC 85 noch EDAS gearbeitet. Aber bisschen Z80 Assembler kann ich. Daher versuche ich es mal mit ersten Hinweisen bzw. Auffälligkeiten als Gedankenanstöße:
- COUNT wird einmal beim Assemblieren auf 0 gesetzt, dann im Loop verändert, hat somit bei einem neuen Aufruf der Routine den letzten Wert aus dem vorherigen Aufruf.
- LD B, 256 funktioniert auf dem Prozessor so nicht, da 256 (hex: 100h) ja schon mehr als die 8 bit benötigt. Ich weiß nicht, was EDAS hier macht, ggf. eine 0 nach B laden?
- Die DB-Werte (Edit: außer der Header natürlich) zu Beginn (wie COUNT) sollten besser woanders abgelegt werden.
- CCF hebt SCF wieder auf

Da kann man sicher noch mehr dazu sagen, aber vllt. hilft es schon.

Viele Grüße,
Matthias
--
___________________________________
Produktionen im Rahmen der "The Computer Art Community" (Demoszene): https://demozoo.org/sceners/64936/, YT-Kanal: https://www.youtube.com/@4lpha0ne/videos
Programmierung seit '86 in BASIC: KC85/3, C64, A1200, PC | ASM: LC-80, C64, KC87, A1200, NeoGeo, PC, Mega 65, µC | Turbo Pascal: BIC, PC | C: RS/6000, Alpha, PC, µC | C++, Java, Javascript, Rust, Lua, Perl, PHP u.a. auf PC
HW: LC-80, BIC A5105 komplett, KC87, KC85/2-4, KCC, C64s, C16, Plus/4s, A500s, A1200, Mega 65, ESP32s, RasPis, PCs, Laptops, MR 610, ...

Dieser Beitrag wurde am 02.12.2024 um 00:05 Uhr von Dresdenboy editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
01.12.2024, 22:29 Uhr
HeikoS



Guten Abend in die Runde,

EDAS kenne ich auch nicht, ich benutzte immer den Arnold Assembler unter Windows/Ubuntu und teste alles im JKCEMU. Aber was mir bei deiner Aufgabenstellung sofort einfiel, war der Befehl LDIR.



Quellcode:

    db    1
    db    7Fh,7Fh
    db    'WORT'
    db    1
    
    ld    hl, 8001h
    ld    de, 8000h
    ld    bc, 0FFh
    ldir
    ret



Der transportiert alles von HL nach DE mit der Länge von BC. Das kann man beim KC85/4 nutzen um genau das zu machen, was du wolltest, eine "Spalte" noch oben schieben.



PS: LDIR ist einer der schönsten Z80/U880 Befehle ... (ED B0 HEX-Code), dass man sich sowas merken kann ;-) , ist schon komisch.
Grüße, Heiko

Dieser Beitrag wurde am 01.12.2024 um 23:14 Uhr von HeikoS editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
01.12.2024, 23:21 Uhr
eudatux23

Avatar von eudatux23

Vielen Dank für die schnellen Tipps!

Es lag daran, dass "Count" wie beschrieben nicht wieder auf 0 zurückgesezt wurde.
Jetzt wird "Count" jeden start mit 0 initialisiert, und es funktioniert prima!

Nochmals herzlichen Dank!

Bei der Gelegenheit habe ich zusammen mit einem Freund das Ganze so weit umgebaut, dass nun die gesamte Höhe dieser Breite durchgescrollt wird und somit die ersten Zeiche "nach oben fliegen". Hier einmal der (natürlich noch nicht optimierte) Sourcecode. Die Header-Zeilen fehlen, aber die sind ja im vorherigen Screenshot enthalten. Bitte entschuldigt die Bildqualität, alles fand auf einem echten KC85/4 statt und wurde per Composite gecaptued:


Und hier eine Demo, wie der Effekt aussieht:


Morgen wird weiter gebastelt, ich halte euch auf dem Laufenden!


Schöne Grüße
Alexander
--
Youtube-Videos über den KC 85/4:
https://www.youtube.com/@eudatux23
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