Bewegte Bilder aus dem KC¨ Kurzbeschreibung von MOVE¨ Das Programm MOVE setzt sich aus folgenden Hauptroutinen zu-¨ sammen:¨ 1.Initialisirung (INT)¨ INT mu~ zu Beginn der Arbeit mit dem Programm aufgerufen werden.¨ Es erzeugt wichtige Hilfsvariablen und eine Adre~tabelle.¨ 2.Screen -> Memory (SCME)¨ Diese Routine verlagert ein spezifiziertes Window vom IRM in¨ den RAM.¨ 3.Bildfolge (FOLGE)¨ FOLGE ist dasjenige Teilprogramm,das die einzelnen (mit SCME¨ abgespeicherten Windows) nacheinander wieder in den IRM¨ zur}ckl{dt.¨ Die Bilder befinden sich immer in dem Bereich #4000 bis¨ #7FFF.Diese 16K Byte bilden einen >>Block<<,auf den bei Ver-¨ wendung eines 64-K-RAM-Moduls (M 011) ohne Schwierigkeiten¨ zugegriffen werden kann.Mit Hilfe von Modulumschaltungen¨ (SWITCH) k|nnen nacheinander alle 4 Bl|cke eines 64-K-Moduls¨ in den Bereich ab #4000 gebracht werden.Beim Abspeichern mit¨ SCME mu~ der Nutzer selbst daf}r sorgen.Beim Vorf}hren der¨ Bilder }bernimmt dies jedoch das Programm.¨ Variablen¨ Das Programm ist mit einer Vielzahl von Variablen ausgestat-¨ tet,so da~ es f}r die unterschiedlichsten Zwecke verwendet¨ werden kann.¨ F}r den Nutzer sind folgende Variablen von Bedeutung:¨ 1. YA,YE,XA,XE¨ Damit werden die Begrenzungen des verwendeten Bildschirmfens-¨ ters in demselben Format wie bei dem BASIC-Befehl WINDOW¨ angegeben.¨ 2.W1,W2¨ Um die Bildwechselfrquenz bei der Abarbeitung von FOLGE¨ m|glichts genau einzustellen,durchl{uft das Programm nach der¨ Umspeicherung eines jeden Bildes zwei verschachtelte Warte-¨ schleifen.Die Anzahl der Warteschleifendurchl{ufe wird von¨ W1 ({u~ere Schleife) und W2 (innere Schleife) angegeben.Die¨ Gesamtzeit der Warteschleife ergibt sich somit aus W1xW2.¨ Im laufenden Programm kann der Wert¨ von W1 und W2 durch Bet{tigung der Cursortasten (von 1 bis¨ 255) ge{ndert werden:¨ Curser links : W1:=W1+1¨ (langsammer)¨ Curser rechts: W1:=W1-1¨ (schneller)¨ Curser runter: W2:=W2+1¨ (langsammer)¨ Curser hoch : W2:=W2-1¨ (schneller)¨ 3.MEM¨ Wenn man mit SCME ein Bild im Speicher ablegen will,wird¨ dessen Adresse durch MEM angegeben.Da nach Abarbeiten von¨ SCME MEM auf das erste Byte nach dem Bild im Speicher zeigt,¨ ist die Angabe der Startadrsse nur am Anfang eines Blockes¨ notwendig.Es wird dazu #4000 verwendet.¨ 4.TAB¨ Zur Geschwindigkeitssteigerung des Programms wird eine¨ Adresstabelle benutzt,die die Adressen der 1.Bytes jeder ver-¨ wendeten Pixelzeile im IRM enth{lt.Sie wird beim Aufruf von¨ INIT ab der in TAB angegebenen Adresse angelegt.Die Tabelle¨ hat eine L{nge von 2x(YE-YA+1)x8 Bytes,das hei~t,f}r jede¨ Pixelzeile 2 Byte.Man kann daf}r am besten das Ende des BASIC-¨ Speichers mit CLEAR herabsetzen und dann TAB auf den Beginn¨ des freien Speicherbereiches zeigen lassen.¨ 5.DATE¨ Das Vorf}hren der Bildsequenzen kann sehr variabel gestaltet¨ sein.Dazu zeigt DATE auf den Anfang einer weiteren Tabelle,¨ die eine Menge von Steuerbytes enth{lt.¨ Aufbau der Tabelle ab (DATE):¨ Byte Bedeutung¨ 1. : Anzahl der 16-K-Bl|cke (n)¨ 2. : Modulsteckplatz (1.Block)¨ 3. : Steuerbyte (1.Block)¨ 4. : Anzahl der Bilder (1.Block)¨ 5. : Modulsteckplatz (2.Block)¨ 6. : Steuerbyte (2.Block)¨ 7. : Anzahl der Bilder (2.Block)¨ usw.¨ 3*n-1 : Modulsteckplatz (n-ter Block)¨ 3*n : Steuerbyte (n-ter Block)¨ 3*n+1 : Anzahl der Bilder (n-ter Block)¨ 3*n+2 : Endmarke:0 - Einmaliges Anzeigen aller Bilder¨ 1 - Neustart von vorn¨ Beispiel >>Drehende Erde<<¨ Aus der F}lle der Anwendumgsm|glichkeiten m|chte ich als¨ Beispiel ein einfach zu realisierendes herausgreifen.Das Ziel¨ ist die Darstellung der rotierenden Erde.¨ Dabei gehe ich von dem Vorhandensein eines 64-K-Moduls aus.¨ Um den Eindruck einer sich gleichf|rmig um Ihre Achse¨ drehende Erde hervorzurufen,gen}gt es f}r eine volle Drehung¨ um 360 Grad,80 Ansichten (Phasen) der Erde nacheinander vor-¨ zuf}hren,wobei aufeianderfolgende Ansichten sich um 4,5¨ L{ngengraden unterscheiden.Bei 64K kommen also in jedem 16-K¨ -Block 20 Bilder,die jedes 800 Byte einnehmen k|nnen.Die Erde¨ kann damit 10x10 Zeichen gro~ werden.Allerdingsm}~ten wir nun¨ erst einmal 80 Bilder der Erde zeichnen.Gl}cklicherweise ist¨ diese Arbeit bereits getan.Zur Erzeugung der einzelnen Phasen¨ ziehe ich ein Programm heran,das allgemein bekannt ist.Es¨ handelt sich um das Programm GLOBUS aus >>BASIC-1x1 des¨ Programirens<<.Nat}rlich mu~ einiges in diesem Programm ge-¨ {ndert werden:¨ L|schen der Zeilen 20 bis 60¨ 80 bis 120¨ 135 bis 290¨ 450 bis 485¨ Zus{tzlich mu~ folgendes eigetragen werden:¨ 10 CLEAR,16223:COLOR7,0:WINDOW0,31,0,39:CLS¨ 12 PRINT"Band starten! MC laden.":BLOAD¨ 15 GOTO 140¨ 70 LINEX1,Y1,X2,Y2,7¨ 140 POKE243,11:POKE244,20:POKE245,15:POKE246,24¨ 150 DOKE247,16224,CALL0¨ 160 BM=PI/180:A=-30*BM:B=-23*BM:Q=30*BM:X0=159:Y0=127:H=.5:¨ R=39¨ 170 S1=SIN(A):S2=SIN(B):C1=COS(A):C2=COS(B)¨ 180 CW=360¨ 190 CLS:PRINTAT(2,2);"CW=";CW;" "¨ 200 CIRCLEX0,Y0,R,7¨ 210 C=-(CW+90)*BM:S3=SIN(C):C3=COS(C)¨ 220 RESTORE¨ 445 IFCW<=180THEN460¨ 450 IFCW>=274.5THENST=67:ELSEST=3¨ 455 GOTO465¨ 460 IFCW>=94.5THENST=195:ELSEST=131¨ 465 SWITCH8,ST¨ 470 M=80-CW/4.5:M=M-20*INT(M/20):M=M*800+16384:DOKE239,M¨ 475 CALL106:CW=CW-4.5¨ 480 IFCW>0THEN190¨ 485 END¨ Au~erdem erweist es sich als g}nstig,die Schrittweite in den¨ Zeilen 400 und 430 von 2,5 Grad auf 5 Grad zu erh|hen.¨ Die Programmierung erscheint zun{chst etwas umst{ndlich.Vor¨ allem das st{ndige SWITCHen des Moduls und das laufende Be-¨ schreiben von MEM ist nicht unmittelbar einzusehen.Auf diese¨ Weise kann aber an jeder beliebigen Stelle die rund 16 Stunden¨ dauernde Berechnung unterbrochen werden,um z.B. schon fertige¨ Bl|cke auf Kassette zu sichern.Beim Neustart ist dann nur der¨ Winkel,bei dem die Berechnung fortgesetzt werden soln,in¨ Zeile 180 einzutragen und das Programm mit RUN zu starten,¨ ohne sich um Startadressen oder Modulschaltungen k}mmern zu¨ m}ssen.¨ Nachdem alle 4 Bl|cke auf Kassette vor liegen,ist darauf zum¨ Ansehen der sich drehenden Erde folgendes Programm einzu-¨ geben:¨ 10 CLEAR0,16223:COLOR7,0:WINDOW0,31,0,39:CLS¨ 20 PRINT"Band starten!"¨ 30 PRINT"MC":BLOAD¨ 40 PRINT"Block 1":SWITCH8,67:BLOAD¨ 50 PRINT"Block 2":SWITCH8,3:BLOAD¨ 60 PRINT"Block 3":SWITCH8,195:BLOAD¨ 70 PRINT"Block 4":SWITCH8,131:BLOAD¨ 80 CLS¨ 90 RESTORE¨ 100 FORA=241TO264¨ 110 READA:POKEI,A¨ 120 NEXTI¨ 130 CALL0¨ 140 CALL59¨ 150 END¨ 160 DATA126,24,11,20,15,24,96,63,251,0¨ 170 DATA4,67,20,8,3,20,8,195,20,8,131,20,1¨ Es liest dann selbst{ndig alls Bilder ein und setzt die¨ Variablen.Die Rotationsgeschwindigkeit ist auf 10 Hz einge-¨ stellt,die Erde dreht sich also in 8s einmal um sich selbst.¨ Die maximalm|gliche Geschwindigkeit betr{gt bei dieser¨ Fenstergr|~e }ber 60 Hz,was aber wegen der Bildwiederhol-¨ frequenz des Fernsehers keinen akzeptablen eindruck¨ vermittelt.¨ In der vorliegenden Version ist es nur m|glich,mit einen RAM-¨ Modul (16,64 bzw.256KBYte) zu arbeiten.¨ Nach "Kleinstrechner TIPS 11".¨ Das ausgew{hlte Zeichen von Position cc wird in allen¨ vier Fenstern und }ber der Codierungstabelle angezeigt.¨