Diese Seite behandelt die ATARI-8-Bit-Computerserie, informiert über die Fujiama-Party und weitere Veranstaltungen und zeigt meinen Weblog.
Moderne Betriebssysteme, Spiele und andere Grafikprogramme haben eins gemeinsam:
Deren Programmierer haben begriffen, dass der Bildschirm nur einen kleinen
Ausschnitt dessen zeigt, was um den User oder Spieler herum so passiert.
Leider gilt dies nicht für unseren kleinen Atari bzw. dessen BASIC-Varianten.
Dessen Befehl DRAWTO quittiert das Zeichnen außerhalb des Bildschirms mit einer
Fehlermeldung - genaugenommen mit zweien.
Und genau hier setze ich an, um Linien abhängig vom Sichtfeld auch außerhalb des
Bildschirms enden zu lassen.
Technisch gesehen besteht eine Linie ja aus vielen aneinander gereihten Pixeln.
Diese Pixel zeichnet der Atari nacheinander. Die Fehlermeldung, wenn
man zu weit rechts bzw. unten zeichnet, kommt erst, wenn der Atari den ersten
Punkt außerhalb des Schirms zeichnen will. Sichtbare Punkte wurden aber schon
gezeichnet.
Fängt man den Fehler mit einem TRAP-Befehl ab (das Try-Catch des alten Mannes),
so erhält man einen flüssigen Ablauf des ganzen.
In Code ausgedrückt müsste das ganze also so aussehen:
100 GRAPHICS 8+16:COLOR 1
Umgekehrt funktioniert das ganze leider nicht. Man kann keine Linie von außerhalb
nach innerhalb des Bildschirms zeichnen, weil das erste Pixel dann bereits einen
Fehler verursacht und die Linie im sichtbaren bereich nicht fortgesetzt würde.
110 TRAP 120:PLOT 160,96:DRAWTO 450,29
120 REM
Eine Kontrolle, ob der Anfang oder das Ende innerhalb des Bildschirms liegen, und
die eventuelle Umkehr der Zeichenrichtung, schafft etwas Abhilfe:
100 GRAPHICS 8+16:COLOR 1
Leider funktioniert das ganze nicht, wenn man links bzw. oberhalb des Bildschirms
zeichnen möchte, denn Atari-BASIC bemängelt hier bereits die negativen Werte, die
dem DRAWTO-Befehl mitgegeben werden, z.B. DRAWTO -10,-10.
110 READ X1,Y1,X2,Y2:IF X1=-999 THEN 490
120 TRAP 150
130 IF X1>319 OR Y1>191 THEN PLOT X2,Y2:DRAWTO X1,Y1
140 PLOT X1,Y1:DRAWTO X2,Y2
150 REM
490 GOTO 490:REM zum Beenden Break drücken!
500 DATA 0,0,450,87
501 DATA 330,16,19,23
502 DATA -999,0,0,0
Auch kann man keine Linie zeichnen, deren Enden außerhalb des Bildschirms liegen,
die aber durch den sichtbaren Bereich durch führt (z.B. von 160, 195 nach 329,96).
Händisches Pixeln der Linie bzw. eine kompatible Maschinenroutine wären hier
hilfreich.
In die ics-Datei, die Ihr bis vor Kurzem noch mit den meisten Kalenderprogrammen abonnieren konntet, hatte ich die ABBUC-Veranstaltungen des laufenden Jahres von der Veranstaltungsübersicht der ABBUC-Webseite eingetragen. Dieses ics-Abonnement endet mit dem neuen Jahr. Stattdessen verweise ich nun auf die Rubrik Treffen und Ausstellungen im ABBUC-Forum.