<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://c64mags.untergrund.net/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://c64mags.untergrund.net/wiki/index.php?action=history&amp;feed=atom&amp;title=DT_84_16</id>
		<title>DT 84 16 - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://c64mags.untergrund.net/wiki/index.php?action=history&amp;feed=atom&amp;title=DT_84_16"/>
		<link rel="alternate" type="text/html" href="http://c64mags.untergrund.net/wiki/index.php?title=DT_84_16&amp;action=history"/>
		<updated>2026-05-17T15:28:08Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.19.0</generator>

	<entry>
		<id>http://c64mags.untergrund.net/wiki/index.php?title=DT_84_16&amp;diff=5976&amp;oldid=prev</id>
		<title>Nyquist at 23:27, 17 January 2011</title>
		<link rel="alternate" type="text/html" href="http://c64mags.untergrund.net/wiki/index.php?title=DT_84_16&amp;diff=5976&amp;oldid=prev"/>
				<updated>2011-01-17T23:27:44Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;http://c64mags.untergrund.net/wiki/index.php?title=DT_84_16&amp;amp;diff=5976&amp;amp;oldid=5558&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Nyquist</name></author>	</entry>

	<entry>
		<id>http://c64mags.untergrund.net/wiki/index.php?title=DT_84_16&amp;diff=5558&amp;oldid=prev</id>
		<title>Nyquist at 13:08, 6 October 2010</title>
		<link rel="alternate" type="text/html" href="http://c64mags.untergrund.net/wiki/index.php?title=DT_84_16&amp;diff=5558&amp;oldid=prev"/>
				<updated>2010-10-06T13:08:12Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[http://translate.google.com/translate?hl=de&amp;amp;ie=UTF-8&amp;amp;sl=de&amp;amp;tl=en&amp;amp;u=http://c64mags.untergrund.net/wiki/index.php%3Ftitle%3DDT_84_16&amp;amp;prev=_t  English Translation]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
              Hallo Leute,&lt;br /&gt;
             ______________&lt;br /&gt;
&lt;br /&gt;
ich  m&amp;amp;ouml;chte Euch auch diesmal wieder ein&lt;br /&gt;
kurzes Programm vorstellen. Programmiert&lt;br /&gt;
habe  ich  es  abermals  mit  dem Turbo-&lt;br /&gt;
Assembler  und ich werde Euch anhand des&lt;br /&gt;
Quelltextes die Funktionsweise erkl&amp;amp;auml;ren.&lt;br /&gt;
&lt;br /&gt;
Das Programm bewirkt folgendes:&lt;br /&gt;
&lt;br /&gt;
Ein  Zeichensatz, der die ersten 64 Zei-&lt;br /&gt;
chen umfasst, soll pixelweise eingeblen-&lt;br /&gt;
det  werden.  Ihr  kennt  diesen  Effekt&lt;br /&gt;
vielleicht  von diversen Programmen, mit&lt;br /&gt;
denen man sog. Notes erstellt.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Dabei  werden  die  Textseiten meist mit&lt;br /&gt;
bestimmten  Effekten  eingeblendet. Hier&lt;br /&gt;
wollen  wir  dasselbe  erreichen. Dieser&lt;br /&gt;
Einblend-Effekt  wird  jedoch nicht nach&lt;br /&gt;
einem zuvor festgelegten Muster bewirkt,&lt;br /&gt;
sondern per Zufall.&lt;br /&gt;
&lt;br /&gt;
Ein  Zeichen besteht aus 8 Bytes und je-&lt;br /&gt;
des  Byte aus 8 Bits. Diese 64 Bits wol-&lt;br /&gt;
len wir per Zufallsgenerator  einblenden&lt;br /&gt;
lassen.  Um dies zu realisieren, ben&amp;amp;ouml;ti-&lt;br /&gt;
gen  wir  einen Zeichensatz und eine Ta-&lt;br /&gt;
belle, die sich aus zuf&amp;amp;auml;llig durcheinan-&lt;br /&gt;
der  gew&amp;amp;uuml;rfelten  Werten  zusammensetzt.&lt;br /&gt;
Anhand  dieser einmaligen Werte soll je-&lt;br /&gt;
des Zeichen eingeblendet werden.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Die  Umsetzung des Ganzen ist eigentlich&lt;br /&gt;
einfach,  das  Ganze l&amp;amp;auml;uft auch nicht im&lt;br /&gt;
IRQ ab.&lt;br /&gt;
&lt;br /&gt;
Nun zum Code:&lt;br /&gt;
&lt;br /&gt;
    *= $1000 (Startadresse ist $1000 =&lt;br /&gt;
              4096 dezimal, das Programm&lt;br /&gt;
              wird somit mit SYS 4096&lt;br /&gt;
              gestartet)&lt;br /&gt;
&lt;br /&gt;
         sei&lt;br /&gt;
         lda #51&lt;br /&gt;
         sta $01&lt;br /&gt;
         ldy #$00&lt;br /&gt;
a1       lda $d000,y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         sta $2000,y&lt;br /&gt;
         lda $d100,y&lt;br /&gt;
         sta $2100,y&lt;br /&gt;
         lda #$00&lt;br /&gt;
         sta $2800,y&lt;br /&gt;
         sta $2900,y&lt;br /&gt;
         iny&lt;br /&gt;
         bne a1&lt;br /&gt;
         lda #55&lt;br /&gt;
         sta $01&lt;br /&gt;
         cli&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gt; Die ersten 64 Zeichen des C64-ROM-&lt;br /&gt;
&amp;amp;gt; Zeichensatzes werden nach $2000-$2200&lt;br /&gt;
&amp;amp;gt; kopiert. Der Bereich von $2800-$2A00&lt;br /&gt;
&amp;amp;gt; wird freigemacht, weil dort der&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;gt; Zeichensatz aus $2000 eingeblendet&lt;br /&gt;
&amp;amp;gt; wird.&lt;br /&gt;
&lt;br /&gt;
         jmp a2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;--------------------------------------&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
rand     inc val&lt;br /&gt;
         ldy val&lt;br /&gt;
         lda $dc04&lt;br /&gt;
         eor $fedc,y&lt;br /&gt;
         eor $d012&lt;br /&gt;
         sta $57&lt;br /&gt;
         rts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
val      .byte 0&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gt; Hier wird eine Zufallszahl von 0-255&lt;br /&gt;
&amp;amp;gt; generiert.&lt;br /&gt;
&amp;amp;gt; Wie dies geschieht, werde ich nicht&lt;br /&gt;
&amp;amp;gt; erkl&amp;amp;auml;ren.&lt;br /&gt;
&amp;amp;gt; Der Wert wird in $57 gespeichert.&lt;br /&gt;
&amp;amp;gt; Das Label 'rand' wird immer dann&lt;br /&gt;
&amp;amp;gt; angesprungen, wenn ein neuer Zufalls-&lt;br /&gt;
&amp;amp;gt; wert ben&amp;amp;ouml;tigt wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;--------------------------------------&amp;gt;&lt;br /&gt;
&lt;br /&gt;
a2       jsr $e518&lt;br /&gt;
         lda #$01&lt;br /&gt;
         sta $0286&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         lda #$93&lt;br /&gt;
         jsr $ffd2&lt;br /&gt;
         ldy #$00&lt;br /&gt;
a3       tya&lt;br /&gt;
         sta $0400,y&lt;br /&gt;
         iny&lt;br /&gt;
         cpy #$40&lt;br /&gt;
         bne a3&lt;br /&gt;
         lda #26&lt;br /&gt;
         sta $d018&lt;br /&gt;
&lt;br /&gt;
         lda #$00&lt;br /&gt;
         sta $58&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gt; Bildschirm wird initialisiert,&lt;br /&gt;
&amp;amp;gt; gel&amp;amp;ouml;scht und alle Zeichen von 0-63&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;gt; ausgegeben. Danach wird der Zeichen-&lt;br /&gt;
&amp;amp;gt; satz ab $2600 eingeschaltet. Da sich&lt;br /&gt;
&amp;amp;gt; dort nur leerer Speicher befindet,&lt;br /&gt;
&amp;amp;gt; sieht man zun&amp;amp;auml;chst nichts auf dem&lt;br /&gt;
&amp;amp;gt; Bildschirm.&lt;br /&gt;
&amp;amp;gt;&lt;br /&gt;
&amp;amp;gt; Die Speicherstelle $58 wird&lt;br /&gt;
&amp;amp;gt; freigemacht, dort wird im folgenden&lt;br /&gt;
&amp;amp;gt; die Anzahl der Zufallszahlen&lt;br /&gt;
&amp;amp;gt; gespeichert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;--------------------------------------&amp;gt;&lt;br /&gt;
&lt;br /&gt;
a4       jsr rand&lt;br /&gt;
         and #$c0&lt;br /&gt;
         bne a4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;gt; Eine Zufallszahl wird mit JSR rand&lt;br /&gt;
&amp;amp;gt; geladen und mit der&lt;br /&gt;
&amp;amp;gt; and #$c0 Verkn&amp;amp;uuml;pfung darauf &amp;amp;uuml;berpr&amp;amp;uuml;ft,&lt;br /&gt;
&amp;amp;gt; ob sich diese auch nur von 0-63&lt;br /&gt;
&amp;amp;gt; erstreckt. Ist der Wert im Akkumulator&lt;br /&gt;
&amp;amp;gt; nicht null, dann wird nach Label a4&lt;br /&gt;
&amp;amp;gt; zur&amp;amp;uuml;ckgesprungen und eine neue Zahl&lt;br /&gt;
&amp;amp;gt; angefordert, da die Zahl in diesem&lt;br /&gt;
&amp;amp;gt; Moment gr&amp;amp;ouml;&amp;amp;szlig;er als 63 ist.&lt;br /&gt;
&lt;br /&gt;
         lda $58&lt;br /&gt;
         bne a5&lt;br /&gt;
a7       ldx $58&lt;br /&gt;
         lda $57&lt;br /&gt;
         sta $03c0,x&lt;br /&gt;
         inc $58&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         lda $58&lt;br /&gt;
         cmp #64&lt;br /&gt;
         beq a8&lt;br /&gt;
         jmp a4&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gt; Die Tabelle der Zufallszahlen wird&lt;br /&gt;
&amp;amp;gt; ab $03c0 gespeichert.&lt;br /&gt;
&amp;amp;gt;&lt;br /&gt;
&amp;amp;gt; Hier wird u.a. die erste Zahl&lt;br /&gt;
&amp;amp;gt; verarbeitet, da diese in jedem Fall&lt;br /&gt;
&amp;amp;gt; einmalig ist. Dazu wird diese&lt;br /&gt;
&amp;amp;gt; gespeichert und der Z&amp;amp;auml;hler in $58 um&lt;br /&gt;
&amp;amp;gt; eins erh&amp;amp;ouml;ht. Da die folgende Prozedur&lt;br /&gt;
&amp;amp;gt; auch auf diesen Bereich zugreift, wird&lt;br /&gt;
&amp;amp;gt; zudem gepr&amp;amp;uuml;ft, ob $58 bei 64 angelangt&lt;br /&gt;
&amp;amp;gt; ist, da in diesem Fall die Tabelle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;gt; voll ist. Wenn ja, wird per BEQ a8&lt;br /&gt;
&amp;amp;gt; die Generierung der Tabelle beendet.&lt;br /&gt;
&lt;br /&gt;
a5       ldy #$00&lt;br /&gt;
a6       lda $03c0,y&lt;br /&gt;
         cmp $57&lt;br /&gt;
         beq a4&lt;br /&gt;
         iny&lt;br /&gt;
         cpy $58&lt;br /&gt;
         bne a6&lt;br /&gt;
&lt;br /&gt;
         jmp a7&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gt; Die Schleife ab Label a5 &amp;amp;uuml;berpr&amp;amp;uuml;ft, ob&lt;br /&gt;
&amp;amp;gt; der aktuelle Zufallswert bereits in&lt;br /&gt;
&amp;amp;gt; der Tabelle vorhanden ist. Wenn ja,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;gt; wird per BEQ a4 zur&amp;amp;uuml;ckgesprungen.&lt;br /&gt;
&amp;amp;gt; Ansonsten wird ab Label a7 der Wert in&lt;br /&gt;
&amp;amp;gt; die Tabelle &amp;amp;uuml;bernommen.&lt;br /&gt;
&amp;amp;gt;&lt;br /&gt;
&amp;amp;gt; Die Generierung dieser Tabelle dauert&lt;br /&gt;
&amp;amp;gt; hier weniger als eine Sekunde.&lt;br /&gt;
&amp;amp;gt; Per Basic dauert es dagegen mehr oder&lt;br /&gt;
&amp;amp;gt; weniger als eine Minute!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;--------------------------------------&amp;gt;&lt;br /&gt;
&lt;br /&gt;
a8       ldy #$20&lt;br /&gt;
         ldx #$00&lt;br /&gt;
         lda #$28&lt;br /&gt;
         stx $fa&lt;br /&gt;
         sty $fb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         stx $fc&lt;br /&gt;
         sta $fd&lt;br /&gt;
&lt;br /&gt;
         stx $f9&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gt; Die Zufallstabelle steht, somit kann&lt;br /&gt;
&amp;amp;gt; mit dem Prozess des eigentlichen&lt;br /&gt;
&amp;amp;gt; pixelweisen Einblendens begonnen&lt;br /&gt;
&amp;amp;gt; werden. Dazu werden die Speicher-&lt;br /&gt;
&amp;amp;gt; adressen des Quell- und Zielzeichen-&lt;br /&gt;
&amp;amp;gt; satzes festgelegt. $f9 wird als Z&amp;amp;auml;hler&lt;br /&gt;
&amp;amp;gt; freigemacht.&lt;br /&gt;
&lt;br /&gt;
         ldx #$00&lt;br /&gt;
&lt;br /&gt;
a12      stx $02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         lda $03c0,x&lt;br /&gt;
         clc&lt;br /&gt;
         adc $03c0,x&lt;br /&gt;
&lt;br /&gt;
         tay&lt;br /&gt;
&lt;br /&gt;
         lda bitpnt,y&lt;br /&gt;
         sta $5a&lt;br /&gt;
         iny&lt;br /&gt;
         lda bitpnt,y&lt;br /&gt;
         sta $5b&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gt; Das x-Register wird zwischenge-&lt;br /&gt;
&amp;amp;gt; speichert, weil dieses als Schleifen-&lt;br /&gt;
&amp;amp;gt; z&amp;amp;auml;hler verwendet, das x-Register aber&lt;br /&gt;
&amp;amp;gt; in dieser Schleife auch anderweitig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;gt; ben&amp;amp;ouml;tigt wird. Aus $03c0 + x wird ein&lt;br /&gt;
&amp;amp;gt; Wert aus der Zufallstabelle gelesen&lt;br /&gt;
&amp;amp;gt; und danach verdoppelt. Der Wert, der&lt;br /&gt;
&amp;amp;gt; sich daraus ergibt (im Akku) wird mit&lt;br /&gt;
&amp;amp;gt; 'tay' ins y-Register kopiert. Am Pro-&lt;br /&gt;
&amp;amp;gt; grammende steht eine weitere Tabelle&lt;br /&gt;
&amp;amp;gt; namens 'bitpnt'. Diese besteht aus&lt;br /&gt;
&amp;amp;gt; 128 Werten und liest sich nacheinander&lt;br /&gt;
&amp;amp;gt; &amp;quot;byte, bit, byte, bit&amp;quot; usw. Dort sind&lt;br /&gt;
&amp;amp;gt; alle Koordinaten aller Bits in einem&lt;br /&gt;
&amp;amp;gt; Zeichen abgelegt.&lt;br /&gt;
&amp;amp;gt;&lt;br /&gt;
&amp;amp;gt; Wird der Zufallswert verdoppelt, zeigt&lt;br /&gt;
&amp;amp;gt; dieser als y-Register exakt in der&lt;br /&gt;
&amp;amp;gt; Tabelle auf die Koordinate des Bits,&lt;br /&gt;
&amp;amp;gt; das wir einblenden wollen.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;gt; Beisp.: Zufallswert 9, verdoppelt 18.&lt;br /&gt;
&amp;amp;gt; Nun z&amp;amp;auml;hlen wir in der Tabelle 'bitpnt'&lt;br /&gt;
&amp;amp;gt; 18 Werte durch (ab Null!). Dort stehen&lt;br /&gt;
&amp;amp;gt; die Werte '1' und '1', also Byte 1,&lt;br /&gt;
&amp;amp;gt; Bit 1. Byte und Bit aus der Tabelle&lt;br /&gt;
&amp;amp;gt; wird in $5a und $5b gespeichert.&lt;br /&gt;
&amp;amp;gt;&lt;br /&gt;
&amp;amp;gt; ********0&lt;br /&gt;
&amp;amp;gt; *+******1&lt;br /&gt;
&amp;amp;gt; ********2&lt;br /&gt;
&amp;amp;gt; ********3&lt;br /&gt;
&amp;amp;gt; ********4&lt;br /&gt;
&amp;amp;gt; ********5&lt;br /&gt;
&amp;amp;gt; ********6&lt;br /&gt;
&amp;amp;gt; ********7&lt;br /&gt;
&amp;amp;gt; 01234567&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;gt; Oder wir z&amp;amp;auml;hlen den Zufallswert 9 von&lt;br /&gt;
&amp;amp;gt; links nach rechts, so erhalten wir die&lt;br /&gt;
&amp;amp;gt; Stelle wie hier in der Zeichen-Matrix.&lt;br /&gt;
&lt;br /&gt;
         ldy $5a&lt;br /&gt;
         ldx $5b&lt;br /&gt;
         lda ($fa),y&lt;br /&gt;
         and bits,x&lt;br /&gt;
         beq a9&lt;br /&gt;
         lda bits,x&lt;br /&gt;
         clc&lt;br /&gt;
         adc ($fc),y&lt;br /&gt;
         sta ($fc),y&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gt; Das Herz der Routine finden wir hier.&lt;br /&gt;
&amp;amp;gt; Wir laden aus dem aktuellen Zeichen,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;gt; das sich im Zeichensatz $fa/$fb&lt;br /&gt;
&amp;amp;gt; befindet, das Byte und pr&amp;amp;uuml;fen zun&amp;amp;auml;chst&lt;br /&gt;
&amp;amp;gt; mit der AND-Verkn&amp;amp;uuml;pfung, ob das Bit,&lt;br /&gt;
&amp;amp;gt; das wir einblenden wollen, &amp;amp;uuml;berhaupt&lt;br /&gt;
&amp;amp;gt; belegt ist. Wenn ja, dann ergibt der&lt;br /&gt;
&amp;amp;gt; Akku den Wert des belegten Bits und&lt;br /&gt;
&amp;amp;gt; das Bit wird in den Zeichensatz&lt;br /&gt;
&amp;amp;gt; hinzuaddiert. Steht im Akku Null, wird&lt;br /&gt;
&amp;amp;gt; nach Label 'a9' gesprungen, da das Bit&lt;br /&gt;
&amp;amp;gt; nicht belegt ist.&lt;br /&gt;
&lt;br /&gt;
a9       lda #$08&lt;br /&gt;
         clc&lt;br /&gt;
         adc $fa&lt;br /&gt;
         sta $fa&lt;br /&gt;
         bcc a10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         inc $fb&lt;br /&gt;
&lt;br /&gt;
a10      lda #$08&lt;br /&gt;
         clc&lt;br /&gt;
         adc $fc&lt;br /&gt;
         sta $fc&lt;br /&gt;
         bcc a11&lt;br /&gt;
         inc $fd&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
a11      ldx $02&lt;br /&gt;
&lt;br /&gt;
         inc $f9&lt;br /&gt;
         lda $f9&lt;br /&gt;
         cmp #64&lt;br /&gt;
         bne a12&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         lda #$00&lt;br /&gt;
         sta $f9&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gt; Hier werden die Zeiger auf die beiden&lt;br /&gt;
&amp;amp;gt; Zeichensatz-Bereiche um 8 erh&amp;amp;ouml;ht und&lt;br /&gt;
&amp;amp;gt; zeigen somit auf das n&amp;amp;auml;chste Zeichen.&lt;br /&gt;
&amp;amp;gt; Das hei&amp;amp;szlig;t, wir blenden nicht erst ein&lt;br /&gt;
&amp;amp;gt; Zeichen komplett ein und danach das&lt;br /&gt;
&amp;amp;gt; n&amp;amp;auml;chste, sondern alle auf einmal.&lt;br /&gt;
&amp;amp;gt; Jeder Wert der Zufallstabelle wird&lt;br /&gt;
&amp;amp;gt; zun&amp;amp;auml;chst auf alle 64 Zeichen ange-&lt;br /&gt;
&amp;amp;gt; wendet.&lt;br /&gt;
&lt;br /&gt;
         ldy #$20&lt;br /&gt;
         ldx #$00&lt;br /&gt;
         lda #$28&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         stx $fa&lt;br /&gt;
         sty $fb&lt;br /&gt;
         stx $fc&lt;br /&gt;
         sta $fd&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gt; Wenn jedes der 64 Zeichen mit dem&lt;br /&gt;
&amp;amp;gt; einen Zufallswert bearbeitet wurde,&lt;br /&gt;
&amp;amp;gt; werden die Zeiger wieder komplett&lt;br /&gt;
&amp;amp;gt; zur&amp;amp;uuml;ckgestellt, damit der n&amp;amp;auml;chste&lt;br /&gt;
&amp;amp;gt; Zufallswert verarbeitet werden kann.&lt;br /&gt;
&lt;br /&gt;
         ldy #$00&lt;br /&gt;
w2       dey&lt;br /&gt;
         ldx #$00&lt;br /&gt;
w1       dex&lt;br /&gt;
         cpx #$a0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         bne w1&lt;br /&gt;
         cpy #$e0&lt;br /&gt;
         bne w2&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gt; Dies ist lediglich eine kleine&lt;br /&gt;
&amp;amp;gt; Warteschleife, die die Einblend-&lt;br /&gt;
&amp;amp;gt; geschwindigkeit kontrolliert. Je h&amp;amp;ouml;her&lt;br /&gt;
&amp;amp;gt; die Werte hinter cpx und cpy sind,&lt;br /&gt;
&amp;amp;gt; desto schneller l&amp;amp;auml;uft die Prozedur ab.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
         ldx $02&lt;br /&gt;
&lt;br /&gt;
         inx&lt;br /&gt;
         cpx #64&lt;br /&gt;
         bne a12&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         rts&lt;br /&gt;
&lt;br /&gt;
&amp;amp;gt; Der oben gespeicherte Wert des x-Re-&lt;br /&gt;
&amp;amp;gt; gisters wird wieder dorthin geladen&lt;br /&gt;
&amp;amp;gt; und erh&amp;amp;ouml;ht. Steht dieser auf 64, so&lt;br /&gt;
&amp;amp;gt; sind alle Zufallswerte verarbeitet und&lt;br /&gt;
&amp;amp;gt; der gesamte Zeichensatz eingeblendet&lt;br /&gt;
&amp;amp;gt; worden. Das Programm wird dann auch&lt;br /&gt;
&amp;amp;gt; mit RTS beendet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;--------------------------------------&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bitpnt   .byte 0,0,0,1,0,2,0,3,0,4,0,5&lt;br /&gt;
         .byte 0,6,0,7&lt;br /&gt;
         .byte 1,0,1,1,1,2,1,3,1,4,1,5&lt;br /&gt;
         .byte 1,6,1,7&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         .byte 2,0,2,1,2,2,2,3,2,4,2,5&lt;br /&gt;
         .byte 2,6,2,7&lt;br /&gt;
         .byte 3,0,3,1,3,2,3,3,3,4,3,5&lt;br /&gt;
         .byte 3,6,3,7&lt;br /&gt;
         .byte 4,0,4,1,4,2,4,3,4,4,4,5&lt;br /&gt;
         .byte 4,6,4,7&lt;br /&gt;
         .byte 5,0,5,1,5,2,5,3,5,4,5,5&lt;br /&gt;
         .byte 5,6,5,7&lt;br /&gt;
         .byte 6,0,6,1,6,2,6,3,6,4,6,5&lt;br /&gt;
         .byte 6,6,6,7&lt;br /&gt;
         .byte 7,0,7,1,7,2,7,3,7,4,7,5&lt;br /&gt;
         .byte 7,6,7,7&lt;br /&gt;
&lt;br /&gt;
bits     .byte 128,64,32,16,8,4,2,1&lt;br /&gt;
&lt;br /&gt;
                 * * *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Soviel  zum  Code. Das zufallsweise Ein-&lt;br /&gt;
blenden eines Zeichensatzes ist nur eine&lt;br /&gt;
M&amp;amp;ouml;glichkeit. Ganz effektiv ist aber auch&lt;br /&gt;
das  Einblenden der Zeichen anhand eines&lt;br /&gt;
bestimmten Musters.&lt;br /&gt;
&lt;br /&gt;
Das Programm befindet sich als Quellcode&lt;br /&gt;
f&amp;amp;Uuml;r  den  Turbo-Assembler  und als .obj-&lt;br /&gt;
File auf der Disk dieser Ausgabe.&lt;br /&gt;
&lt;br /&gt;
Startet  man  das  Programm, so wird der&lt;br /&gt;
Zeichensatz eingeblendet. Danach gelangt&lt;br /&gt;
man wieder zur&amp;amp;Uuml;ck in den normalen Einga-&lt;br /&gt;
bemodus.  Der Grund, wieso man dort kei-&lt;br /&gt;
nen blinkenden Cursor antrifft, ist hof-&lt;br /&gt;
fentlich klar: dieser ist nicht Bestand-&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
teil des Zeichensatzes, weil sich dieser&lt;br /&gt;
jenseits  von  den ersten 64 Zeichen be-&lt;br /&gt;
findet.  Man  kann diesen aber ganz ein-&lt;br /&gt;
fach einbauen.&lt;br /&gt;
&lt;br /&gt;
Versucht es doch mal! :-)&lt;br /&gt;
&lt;br /&gt;
Was  diese  Routine nicht macht ist, den&lt;br /&gt;
Zeichensatz wieder auszublenden.&lt;br /&gt;
&lt;br /&gt;
Das  w&amp;amp;auml;re  vielleicht  auch  eine kleine&lt;br /&gt;
Aufgabe,  der  Ihr  Euch  jetzt  stellen&lt;br /&gt;
k&amp;amp;ouml;nntet.&lt;br /&gt;
&lt;br /&gt;
Dabei  kann man entweder mit der bereits&lt;br /&gt;
generierten  Zufallsliste  arbeiten,  da&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
spricht  nichts  gegen oder man erstellt&lt;br /&gt;
vor dem Ausblenden eine neue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Viel Spa&amp;amp;szlig; w&amp;amp;uuml;nscht Euch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
           Michael Czychowski&lt;br /&gt;
            Chico of CIVITAS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
________________________________________&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nyquist</name></author>	</entry>

	</feed>