verlegen der sichtbaren seite
verlegen der sichtbaren seite
von robbifan » Fr 10. Aug 2007, 19:32
ich kann in der adresse 88/89 den sichtbaren screen verschieben.
habe es gemacht, der bildschirm ist ein wenig verschoben, hatte adresse 88 nur um 2 werte verändert.
wo poke ich denn für die displaylist diese werte rein, damit an der neuen adresse der sichtbare screen wieder richtig ist?
mfg peter
Re: verlegen der sichtbaren seite
von mp-one » Fr 10. Aug 2007, 19:55
robbifan hat geschrieben:ich kann in der adresse 88/89 den sichtbaren screen verschieben.
habe es gemacht, der bildschirm ist ein wenig verschoben, hatte adresse 88 nur um 2 werte verändert.
wo poke ich denn für die displaylist diese werte rein, damit an der neuen adresse der sichtbare screen wieder richtig ist?
mfg peter
Hi Robbi,
die Adresse für den Bildschirmspeicher folgt direkt auf die LMS-Anweisung (Load Memory Scan Counter) des ANTIC. Bei Gr. 0 kann die Display-List z.B. so aussehen:
$70
$70
$70
$42 ANTIC Mode 2 (Gr. 0) mit LMS
$40 Adresse des Bildschirmspeichers
$BC " "
..
..
..
Du müsstest demnach das 5. und 6. Byte ändern, das auf den Start der Display-Liste folgt. Die DL-Adresse kannst Du über die Adressen 560 und 561 erfahren.
Gruß,
Michael
von robbifan » Fr 10. Aug 2007, 21:37
ich meine nicht die adresse des bildschirmspeichers wo der antic die daten herausholt sondern den bildschirm den ich sehe, wo der antic die daten reinpackt. der fängt in turbobasic bei graphics 8 zb bei adresse 41296 an. den möchte ich wechselweise verlegen, sozusagen in turbobasic im hintergrund die zeichnung mit den grafikbefehlen fertig machen und dann umschalten das ich ihn sehe.
ich glaube das wort heisst : page-flipping
von pps » Sa 11. Aug 2007, 09:45
Wenn due das sichtbare Bild ändern möchtest mußt Du in Deiner DL direkt hinter dem LMA den Wert verändern.
Damit Basic in der momentan nicht sichtbaren Seite malt, mußt du in Adresse 88/89 den Wert dieses nicht sichtbaren BS schreiben.
Beispiel:
Bild 1 liegt ab $8000
Bild 2 ab $9000
Zuerst steht in der DL & auch in Adresse 88/89 der Wert $8000.
Du möchtest nun Bild1 zeigen, aber in Bild 2 malen. Dafür schreibst du in 88/89 den Wert $9000.
Wenn das Programm fertig ist möchtest das Du nun genau umgekehrt haben (Bild 2 sichtbar und Bild1 wird bearbeitet). Dafür wird nun in der DL der Wert $9000 eingetragen und in 88/89 $8000.
That´s it.
btw Das ist natürlich nur in Basic nötig. In Assembler wird ja meist nicht über den E: oder S: Handler geschrieben, sondern selbst direkt im Speicher gearbbeitet.
von robbifan » Mi 22. Aug 2007, 20:34
danke für die antwort.
was ist ein : E: oder S: Handler?
erklär mir das einmal.
mfg
von pps » Mi 22. Aug 2007, 22:11
Das sind Routinen vom OS um auf den Bildschirm zuzugreifen.
Der E: Handler ist quasi der eingebaute Editor, den man unter Basic hat. Der S: Handler manipuliert direkt den Bildschirm.
Öffnet man im Basic den E: Handler mittels XIO und schreibt dann ein CHR$(125) nach E: so wird der Bildschirm gelöscht.
Wenn man den E: Handler zum Lesen öffnet und vorher ein paar Basic-Befehle auf dem BS hat, kann man auch ein laufendes Programm sich selbst modifizieren lassen.
Das habe ich noch nie gem8, aber bei einigen Programmen mal gesehen.
Bsp. zum Öffnen:
XIO #1,8,0,"E:"
Nun wird alles, was man an #1 schickt über den Editor auf den Screen gebr8.
PUT #1,125
etc.
von robbifan » Mi 22. Aug 2007, 22:29
XIO #1,8,0,"E:"
wenn ich das oben eingebe in turbobasic im emu oder im normalen ataribasic im emu, kommt eine errormeldung.
mfg
von pps » Do 23. Aug 2007, 09:51
Oh mann, habe lange nicht mehr in BASIC gecoded...
Richtiger Weise muß natürlich ein OPEN #1,8,0,"E:" den Editor öffnen... Wenn man fertig ist muß man den Kanal dann mit CLOSE #1 wieder schließen.
von robbifan » Do 23. Aug 2007, 12:02
jup, alles klar.
mfg peter
von robbifan » Do 23. Aug 2007, 12:25
Der S: Handler manipuliert direkt den Bildschirm.
was kann man mit dem s: handler alles manipulieren?
wo finde ich beispiele hier im forum?
mfg peter