ERá„ÿ”
-;;'Ameisen'-Experiment(;"2;WerdasBildspeichernwill,"<;sollteambestennachherdenF;Bereichvon$5000-$6800!P;(bei192Zeilen)speichern.Z;d-n‰.LIOFFx‰JMPANT‚-ŒDMACTL=$22F–SCREEN=$5000ƒBildab$5000 PADR=$CB‡ZeigerinBitmapªMAXRND=$CD…Max.Zufallswert´MX=255‰Max.X-Position¾MY=191‰Max.Y-PositionÈ;ÒX=$CFŠJetzigePositionÜY=X+1‹derAmeiseæXO=$D1‰LetztePositionðYO=XO+1‰derAmeiseúDUMMY=$D3COLOR1=$2C5„PunktfarbeCOLOR2=$2C6„BackgroundfarbeCOLOR4=$2C8„Rahmenfarbe "RANDOM=$D20AƒZufallsregister,-6INIT…LDA#$21„schmaler@‰STADMACTL‚BildschirmJ;T‰LDA#DL…neueDL^‰STA$230h‰LDA/DLr‰STA$231|;†‰LDA#$0…schwarz‰STACOLOR2š‰LDA#$2…grau¤‰STACOLOR4®‰LDA#$F…weiss¸‰STACOLOR1Â‰JMPCLRS„freimachenÌ-#Ö;NeueDisplay-List(192Zeilen)à-êDL‡.HX7070704Fô‰.DASCREENþ‰.BL127,$F‰.DA#$4F,SCREEN+$1000‰.BL63,$F‰.DA#$41,DL&-0;PLOT<X>,<Y>:;UNPLOT<X>,<Y>#D;LOCATE<X>,<Y>(Farbein<A>)N-XGETPA„STYPADRb‰LDA#0l‰STAPADR+1v‰ASLPADR„;*2€‰ROLPADR+1Š‰ASLPADR„;*4”‰ROLPADR+1ž‰ASLPADR„;*8¨‰ROLPADR+1²‰ASLPADR„;*16¼‰ROLPADR+1Æ‰ASLPADR„;*32Ð‰ROLPADR+1Ú;ä‰LDAPADR+1ƒZeilebe-î‰CLC‰rechnenø‰ADC/SCREEN‚imScreen‰STAPADR+1;GETPARƒTXA†Registerfuer ‰AND#7ƒindizierten*‰PHA†Zugriffvor-4‰TXA†bereiten...>‰LSR„ByteberechnenH‰LSR„(=INT(XPOS/8))R‰LSR„undinsY-Reg.\‰TAYf‰PLA„Bit-Nummerinsp‰TAX„X-Reg.z‰RTS„;ŽPLOT…JSRGETPA„Berechnen˜PLOT2„LDA(PADR),Y¢‰ORABITMAP,X‚..setzen¬‰STA(PADR),Y¶‰RTSÀ;ÊUNPLOTƒJSRGETPA„BerechnenÔ‰LDA(PADR),YÞ‰EORBITMAP,X‚loeschenè‰STA(PADR),Yò‰RTSü;LOCATEƒJSRGETPA„Berechnen LOCATE2‚LDA(PADR),Yƒ..holen‰ANDBITMAP,X$‰RTS.;8BITMAPƒ.HX‚8040201008040201B-!L;ZUFALLSZAHLVON0-<X>IN<A>V-`GRND…LDARANDOMj‰INXt‰STXMAXRND~‰BEQ.2†Beliebig?ˆ.1‡LDARANDOM’‰CMPMAXRND‚no,0-<X>œ‰BCS.1
¦.2‡RTS°-ºSETANTƒLDX#MX…Zufalls-Ä‰JSRGRND„Position
Î‰STAXØ‰LDX#MYâ‰JSRGRND
ì‰STAYö;‰LDARANDOM„Aneinen
‰AND#3‡dervier‰TAXŒSeiten‰LDAINDTAB,Xƒsetzen(‰TAY2‰LDASETTAB,X<‰STAX,YF‰RTSP;ZINDTABƒ.DA#0,#0,#1,#1dSETTABƒ.DA#0,#MX,#0,#MYn-xMOVESUB‚LDARANDOM‚‰AND#7Œ‰TAY–; ‰BNE.1†=0?ª‰INCX‡Ost´‰RTS¾;È.1‡DEY‰=1?Ò‰BNE.2Ü‰INCX‡Nordost
æ‰DECYð‰RTSú;.2‡DEY‰=2?‰BNE.3‰INCX‡Suedost
"‰INCY,‰RTS6;@.3‡DEY‰=3?J‰BNE.4†West
T‰DECX^‰RTSh;r.4‡DEY‰=4?|‰BNE.5†‰DECX‡Suedwest
‰INCYš‰RTS¤;®.5‡DEY‰=5?¸‰BNE.6Â‰DECX‡Nordwest
Ì‰DECYÖ‰RTSà;ê.6‡DEY‰=6?ô‰BNE.7þ‰DECY‡Nord‰RTS;.7‡INCY‡=7!Sued!&‰RTS0-:MOVE…LDAXˆPositionD‰STAXOˆsichern
N‰LDAYX‰STAYOb.1‡JSRMOVESUB„bewegenl;v‰LDAXŠnochim€‰CMP#MXˆScreen?Š‰BCC.3”;ž.2‡LDAXOˆBewegung¨‰STAX…rueckgaengig²‰LDAYO„machenund¼‰STAY…woandershinÆ‰JMP.1„gehenÐ;Ú.3‡LDAYŠnochimä‰CMP#MYˆScreen?î‰BCS.2ø‰RTS‡Ja,allesOK!-ANT†JSRINIT; ‰LDA#MX…Punktin*‰LSR‰dieMitte4‰TAX‰setzen>‰LDA#MYH‰LSRR‰TAY\‰JSRPLOTf;p.1‡JSRSETANTAmeiselos!z‰LDXX‡Figuram„‰LDYY‡Rand?Ž‰JSRLOCATE˜‰BEQ.3¢.2‡LDARANDOM‚ja->ENDE!¬‰STA$D01A¶‰JMP.2À;Ê.3‡LDXX‡AmeiseÔ‰JSRGETPAR‚zeigen!Þ‰JSRPLOT2ƒ(Zeileistè;”vomLocateò;”nochda)ü;	‰JSRMOVE„..bewegen!	;	‰LDXXO†alteA.		‰LDYYO†loeschen
	‰JSRUNPLOT	;	‰LDXX‰woange-$	‰LDYY‰stossen?.	‰JSRLOCATE8	‰BEQ.3…nein,weiterB	;L	‰LDXXO†ja,AmeiseV	‰LDYYO†einfrieren`	‰JSRPLOT„undneuej	‰JMP.1†startent	-~	CLRS…LDA/SCREENˆ	‰STAPADR+1’	‰LDA#SCREENƒ(=0!)œ	‰STAPADR¦	‰TAY°	;º	.1‡STA(PADR),YÄ	‰INYÎ	‰BNE.1Ø	‰INCPADR+1â	‰LDXPADR+1ì	‰CPX/SCREEN+$2000ö	‰BNE.1
‰RTS

-
TEST…JSRINIT
.1‡LDXRANDOM(
‰LDYRANDOM2
‰JSRPLOT<
‰JMP.1F
-