10 ; 20 ;******************************** 30 ;* * 40 ;* CHR$RAFIK IN ATNSSEMBLER * 50 ;* (null)ROGRAMM IN 9 (null)ODULEN * 60 ;* CHR$RAFIK-PEEKASIC-VALRWEITERUNG LEN64 * 70 ;* LEFT$RIGHT$(null)VAL(null)-4 * 80 ;* * 90 ;* LEFT$EIMO (null)ONNATH LEFT$AMBURG 1986 * 100 ;* * 110 ;******************************** 120 ; 130 ;*** (null)ODUL 0: (null)UWEISUNGEN *** 140 ; 150 .BA$C000 160 ; 170 ;--- FESTE (null)UORDNUNGEN --- 180 ; 190 .EQXKO=$14;2-PEEKYTE (null)-(null)OORDINATE 200 .EQFRETOP=$34;(null)TRINGSTARTADRESSE (null)(null)PEEK 210 .EQMEMSIZ=$38;LEFT$OECHSTE PEEKASICADRESSE (null)(null)PEEK 220 .EQCHRGET=$73;LENLEFT$(null)CHR$VAL(null)-(null)OUTINE 230 .EQCHRGOT=$79;LENLEFT$(null)CHR$(null)(null)-(null)OUTINE 240 .EQTXTPTR=$7A;LENLEFT$(null)CHR$VAL(null)-(null)EIGER 250 .EQHBASE=$0288;(null)(null)PEEK PEEKILDSCHIRMSTART AN PEEKETRIEBSSYSTEM 260 .EQIGONE=$0308;(null)EKTOR ZUM (null)OUTINENAUFRUF 270 .EQBILD=$5C00;BILDSCHIRMSTARTADRESSE 280 .EQBITMAP=$6000;(null)TARTADRESSE PEEKITMAP 290 .EQGONE1=$A7E4;ATNLTER RIGHT$NHALT VON IGONE 300 .EQINTEND=$A7E7;VALNDE DER RIGHT$NTERPRETERSCHLEIFE 310 .EQLINGET=$A96B;HOLT 2-PEEKYTE-RIGHT$NTEGER NACH $14/15 320 .EQFRMNUM=$AD8A;HOLT BELIEBIGEN NUMERISCHEN ATNUSDRUCK 330 .EQCHKCOM=$AEFD;AUF (null)OMMA PRUEFEN 340 .EQFACINX=$B1AA;ASCATNLEN -> RIGHT$NTEGER IN ATN/(null) 350 .EQGETADR=$B7F7;ASCATNLEN -> RIGHT$NTEGER IN (null)/ATN UND $14/15 360 .EQGETNUM=$B7EB;HOLT ATNDRESSE NACH $14/15 UND PEEKYTE INS (null)-(null)EG. 370 .EQFSUB=$B850;ASCATNLEN = (ATN/(null)) - ASCATNLEN 380 .EQFMULT=$BA28;ASCATNLEN = (ATN/(null))*ASCATNLEN 390 .EQFDIV=$BB0F;ASCATNLEN = (ATN/(null)) / ASCATNLEN 400 .EQMOVFM=$BBA2;LAEDT ASCATNLEN AUS (null)PEICHER 410 .EQMOVMF=$BBD4;LAEDT (null)PEICHER AUS ASCATNLEN 420 .EQVIC17=$D011;PEEKIT 5 SCHALTET PEEKIT-(null)AP-(null)ODUS EIN/AUS 430 .EQVIC24=$D018;(null)TEUERT PEEKILDSCHIRMORT UND PEEKIT-(null)AP-(null)TART 440 .EQCIA2=$DD00;LENRIGHT$ATN2 (null)ORTATN:(null)TEUERT (null)RIGHT$LEN-ATNBSCHNITT 450 .EQCOMBYT=$E200;(null)RUEFT AUF (null)OMMA UND HOLT 1 PEEKYTE IN (null) 460 ; 470 ;--- (null)ARIABLE ----- 480 ; 490 .EQMODE=$02;(null)ODUS 0=LOESCHEN, 1=ZEICHNEN 500 .EQYKO=$09;Y-(null)OORDINATE 510 .EQYK1=$0A;(null)OORDINATENWERT Y1 520 .EQDY=$11;ATNBSTAND Y1-Y0 530 .EQIY=$19;RIGHT$NKREMENTWERT 540 .EQAY=$1A; -"- 550 .EQAX=$1B; -"- 560 .EQIX=$1C; -"- 570 .EQYPLUSY=$57;[203]REISPUNKTSPIEGELWERT 580 .EQYMINY=$59; -"- 590 .EQYPLUSX=$5B; -"- 600 .EQYMINX=$5D; -"- 610 .EQHELP=$FB;2-PEEKYTE LEFT$ILFSWERT 620 .EQZWSP=HELP+2; -"- 630 .EQCT=$93;2-[194]YTE-[218]AEHLER 640 .EQRAD=$95;KREISRADIUS 650 .EQXPLUSX=$5F;[203]REISPUNKTSPIEGELWERT 660 .EQXMINX=$9B; -"- 670 .EQXPLUSY=$9E; -"- 680 .EQXMINY=$A3; -"- 690 .EQXK1=$8B;(null)OORDINATE X1 700 .EQYM=$8D;(null)REISMITTELPUNKT (null) 710 ; 720 ;--- STR$OPPELT GENUTZTE (null)ARIABLE --- 730 ; 740 .EQOF=XK1;ATNPPROXIMATIONSWERT 750 .EQDX=HELP;ATNBSTAND X1-X0 760 .EQXM=XK1;(null)REISMITTELPUNKT (null) 770 ; 780 ;*** MODUL 1: PEEKEFEHLSERWEITERUNG *** 790 ; 800 ;VALRWEITERT DIE RIGHT$NTERPRETERSCHLEIFE 810 ;UM EINEN (null)EIL, DER DIE NEUEN 820 ;PEEKASICBEFEHLE PRUEFT UND ZUR 830 ;ATNUSFUEHRUNG BRINGT. ATNB RIGHT$(null)RIGHT$(null) WIRD 840 ;DIESE NEUE (null)CHLEIFE EINGERICHTET, 850 ;AB ATN(null)(null) KANN SIE ABGESCHALTET WERDEN. 860 ;ATNB (null)(null)ATN(null)(null) LIEGT DIE EIGENTLICHE 870 ;RIGHT$NTERPRETERERWEITERUNG. 880 ; 890 ; 900 ;------ RIGHT$NITIALISIERUNG ------- 910 ; 920 INIT LDA#<(START);LSB EIGENE (null)OUTINE 930 STAIGONE;IN VEKTOR SCHREIBEN 940 LDA#>(START);MSB 950 STAIGONE+1 960 RTS 970 ; 980 ;------ ATNBSCHALTEN ------------ 990 ; 1000 AUS LDA#<(GONE1);VEKTOR AUF 1010 STAIGONE;(null)ORMALWERT 1020 LDA#>(GONE1);ZURUECKSTELLEN 1030 STAIGONE+1 1040 RTS 1050 ; 1060 ;-VALRWEITERTE RIGHT$NTERPRETERSCHLEIFE- 1070 ; 1080 START JSRCHRGET;(null)EICHEN HOLEN 1090 CMP#$60;PEEKUCHSTABE? 1100 BCSENDE;PEEKASIC-LENODE 1110 CMP#$41;PEEKUCHSTABE ATN ? 1120 BCCENDE;(null)ONDERZEICHEN 1130 STAAKKU;ATNKKU SICHERN 1140 LDX#$00 1150 STXBEFNR;PEEKEFEHLSNR. AUF 0 1160 INT1 LDY#$00 1170 INCBEFNR;PEEKEFEHLSNR. + 1 1180 LDABEFTAB,X;(null)EICHEN AUS PEEKEFEHLSTABELLE 1190 BNEINT2;KEIN (null)RENNZEICHEN 1200 ; 1210 LDAAKKU;(null)URUECK INS 1220 ENDE JSRCHRGOT;NORMALE PEEKASIC 1230 JMPINTEND;SPRINGEN 1240 ; 1250 ;--- ATNDRESSE SUCHEN ----------- 1260 ; 1270 INT2 CMP(TXTPTR),Y;(null)ERGLEICH MIT PEEKASICTEXT 1280 BNEREST;UNGLEICH 1290 INY;PEEKASICTEXTINDEX+1 1300 INX;PEEKEFEHLTAB.-RIGHT$NDEX+1 1310 LDABEFTAB,X;NAECHSTES (null)EICHEN 1320 BNEINT2;PRUEFEN 1330 CLC 1340 TYA;PEEKEFEHLSINDEX UM 1350 ADCTXTPTR;PEEKEFEHLSLAENGE 1360 STATXTPTR;ERHOEHEN 1370 BCCLAB1;(null)EBERTRAG? 1380 INCTXTPTR+1;MSB ERHOEHEN 1390 LAB1 LDABEFNR;PEEKEFEHLSNR. 1400 ASL;VERDOPPELN 1410 TAX;UND ALS RIGHT$NDEX IN 1420 LDASPRTAB,X;(null)PRUNGTABELLE 1430 STASPRUNG+1;LSB (null)PRUNG 1440 LDASPRTAB1,X;MSB LESEN 1450 STASPRUNG+2;MSB 1460 ; 1470 ;-- (null)ELBSTMODIFIZIERENDER (null)EIL -- 1480 ; 1490 SPRUNG JSR$FFFF;STR$UMMY 1500 ; 1510 ;-- (null)URUECK ZUM RIGHT$NTERPRETER ----- 1520 ; 1530 JMPENDE 1540 ; 1550 ;-RESTL. PEEKEFEHLSTEXT UEBERLESEN-- 1560 ; 1570 REST INX 1580 LDABEFTAB,X 1590 BNEREST;BIS (null)RENNZEICHEN 1600 INX 1610 JMPINT1;NAECHSTER PEEKEFEHL 1620 ; 2000 ;**** MODUL 2: GRAFIK EIN **** 2010 ; 2020 ;LEGT GRAFIKBILDSCHIRM NACH $5C00 2030 ;UND BIT-MAP NACH $6000 2040 ;SCHALTET IN BIT-MAP-MODUS UM 2050 ;UND BEGRENZT BASIC BIS $5C00 2060 ; 2070 HAN LDA#$7D;ORT BILDSCHIRM UND 2080 STAVIC24;BITMAP FESTLEGEN 2090 LDA#$C6;VIC AUF ABSCHNITT 1 2100 STACIA2;RICHTEN 2110 LDA#$5C;MSB BILDSCHIRMSTART 2120 STAHBASE;AN BETRIEBSSYSTEM 2130 STAFRETOP;UND SPEICHER 2140 STAMEMSIZ;BEGRENZEN 2150 LDAVIC17;BITMAPMODUS 2160 ORA#$20;EINSCHALTEN 2170 STAVIC17 2180 RTS 3000 ;**** MODUL 3: BITMAP LOESCHEN **** 3010 ; 3020 ;LOESCHT ALLE BITS IN DER BEI 3030 ;$6000 BEGINNENDEN BIT-MAP 3040 ; 3050 GCLR LDA#>(BITMAP);MSB BITMAPSTART 3060 STAHELP+1;MERKEN 3070 LDY#$00;LSB BITMAPSTART IST NULL 3080 STYHELP 3090 TYA;NULLBYTES 3100 LDX#$20;DEZ.32 ANZAHL BLOECKE 3110 CLOOP STA(HELP),Y;BYTE LOESCHEN 3120 INY;NAECHSTES BYTE 3130 BNECLOOP 3140 INCHELP+1;MSB ZEIGER ERHOEHEN 3150 DEX;BLOCKZAEHLER - 1 3160 BNECLOOP 3170 RTS 4000 ;**** MODUL 4: FARBGEBUNG **** 4010 ; 4020 ;LIEST AUS DEM BASICTEXT DIE 4030 ;ZEICHENFARBE (ZF) UND DIE 4040 ;HINTERGRUNDFARBE (HF) UND BELEGT 4050 ;DEN FARBSPEICHER AB $5C00 MIT 4060 ;DIESER FARBKOMBINATION. DABEI 4070 ;IST FARBE = 16*ZF+HF 4080 ; 4090 COLOR JSRCOMBYT;ZF IN X-REGISTER 4100 STXHELP;UND MERKEN 4110 JSRCOMBYT;HF IN X-REGISTER 4120 STXHELP+1;UND MERKEN 4130 ; 4140 LDAHELP;ZEICHENFARBE 4150 ASL;MAL 16 4160 ASL 4170 ASL 4180 ASL 4190 CLC;HF ADDIEREN 4200 ADCHELP+1 4210 ; 4220 COL2 LDX#>(BILD);MSB BILDSCHIRMADRESSE 4230 STXHELP+1;MERKEN 4240 LDY#$00;LSB BILDSCHIRM IST NULL 4250 STYHELP;MERKEN 4260 LDX#$04;4 BLOECKE FUELLEN 4270 HLOOP STA(HELP),Y;FARBE EINTRAGEN 4280 INY;NAECHSTES BYTE 4290 BNEHLOOP 4300 INCHELP+1;NAECHSTER BLOCK 4310 DEX 4320 BNEHLOOP 4330 RTS 5000 ;**** MODUL 5: TEXTMODUS EIN **** 5010 ; 5020 ;SORGT DAFUER, DASS DER NORMALE 5030 ;TEXTMODUS AKTIV WIRD. GRAFIK 5040 ;BLEIBT ABER ERHALTEN. 5050 ; 5060 NORM LDA#$15;NORMALER BILDSCHIRM 5070 STAVIC24 5080 LDA#$C7;VIC AUF ABSCHNITT 0 5090 STACIA2 5100 LDA#$04;MSB TEXTBILDSCHIRM 5110 STAHBASE;AN BETRIEBSSYSTEM 5120 LDAVIC17;TEXTMODUS 5130 AND#$DF;EINSCHALTEN 5140 STAVIC17 5150 RTS 6000 ;**** MODUL 6:PUNKT SETZEN/LOESCHEN **** 6010 ; 6020 ;SETZT IN DER BITMAP AB $6000 6030 ;EINEN PUNKT ODER LOESCHT IHN 6040 ;JE NACH MODUS. 1.EINSPRUNG HOLT 6050 ;AUS BASICTEXT PARAMETER X,Y,MODE 6060 ;2.EINSPRUNG SETZT GESPEICHERTE 6070 ;PARAMETER VORAUS. 6080 ; 6090 ;--- PARAMETER HOLEN ---- 6100 ; 6110 PUNKT1 JSRGETNUM;X UND Y HOLEN 6120 STXYKO;Y MERKEN, X IN XKO 6130 JSRCOMBYT;MODUS HOLEN 6140 STXMODE;UND MERKEN 6150 ; 6160 ;--- PARAMETER PRUEFEN --- 6170 ; 6180 PUNKT2 LDAYKO;Y PRUEFEN 6190 CMP#$C7;GROESSER ALS 200? 6200 BCSNOPLOT;WENN JA, KEIN PUNKT 6210 LDYXKO+1;MSB X PRUEFEN 6220 BEQOK;KLEINER ALS 255 6230 DEY;JETZT NULL? 6240 BNENOPLOT;MSB X > 1,KEIN PUNKT 6250 LDAXKO;LSB X PRUEFEN 6260 CMP#$40;GROESSER ALS LSB VON 320? 6270 BCSNOPLOT;DANN KEIN PUNKT 6280 ; 6290 ;--- BERECHNEN BYTE UND BIT --- 6300 ; 6310 OK LDAYKO 6320 TAX;Y IN AKKU UND X-REGISTER 6330 LSR;BERECHNEN Y/8 6340 LSR 6350 LSR 6360 TAY;IM Y-REGISTER MERKEN 6370 CLC 6380 TXA;NOCHMAL Y 6390 AND#$07;(Y AND 7) 6400 ADCMALTAB,Y;+320*Y/8 LSB 6410 STAZWSP 6420 LDAXKO 6430 AND#$F8;LSB X AND 248 6440 ADCZWSP 6450 STAZWSP;MERKEN LSB 6460 LDAMALTAB1,Y;320*Y/8 MSB 6470 ADCXKO+1 6480 STAZWSP+1;MSB MERKEN 6490 LDAXKO;BITPOSITION BERECHNEN 6500 AND#$07 6510 TAY 6520 LDAHOCHTAB,Y 6530 ; 6540 ;--- MODE PRUEFEN --- 6550 ; 6560 LDY#$00 6570 LDXMODE 6580 BEQLOESCH 6590 ; 6600 ;--- PUNKT SETZEN --- 6610 ; 6620 ORA(ZWSP),Y 6630 BNESTORE;SPRINGT IMMER 6640 ; 6650 ;--- PUNKT LOESCHEN --- 6660 ; 6670 LOESCH EOR#$FF;LOESCHEN 6680 AND(ZWSP),Y 6690 STORE STA(ZWSP),Y;EINTRAGEN IN BITMAP 6700 ; 6710 ;--- RUECKSPRUNG --- 6720 ; 6730 NOPLOT RTS 7000 ;**** MODUL 7: LINIEN ZIEHEN **** 7010 ; 7020 ;ZEICHNET ODER LOESCHT EINE LINIE 7030 ;ZWISCHEN DEN PUNKTEN (X0,Y0) UND 7040 ;(X1,Y1). EINSPRUNG DRWLIN HOLT 7050 ;AUS BASICTEXT DIE PARAMETER UND 7060 ;PRUEFT SIE. EINSPRUNG SETPAR ER- 7070 ;WARTET DIE PARAMETER IN DEN 7080 ;RICHTIGEN SPEICHERSTELLEN XKO, 7090 ;YKO,XK1,YK1,MODE. UEBERGABE AN 7100 ;MODUL 6 MITTELS XKO,YKO,MODE. 7110 ; 7120 ILL RTS;ZURUECK BEI FEHLER 7130 ; 7140 ;--- EINSPRUNG 1 --- 7150 ; 7160 DRWLIN JSRGCOORD;KOORDINATEN 1.PUNKT HOLEN 7170 BCSILL;FALSCHER WERT 7180 STXYKO;Y0 MERKEN 7190 STACT+1;MSB X0 MERKEN 7200 STYCT;UND LSB EBENFALLS 7210 JSRGCOORD;KOORDINATEN 2.PUNKT HOLEN 7220 BCSILL;FALSCHER WERT 7230 STXYK1;Y1 MERKEN 7240 STYXK1;LSB X1 MERKEN 7250 LDYCT;LSB X0 UMLADEN 7260 STYXKO 7270 STAXK1+1;MSB X1 MERKEN 7280 LDACT+1;MSB X0 UMLADEN 7290 STAXKO+1 7300 JSRCOMBYT;MODUS HOLEN 7310 STXMODE;UND MERKEN 7320 ; 7330 ;--- EINSPRUNG 2 --- 7340 ; 7350 SETPAR LDY#$01 7360 STYIX;INKREMENTE UND 7370 STYIY;ZAEHLER INITIALISIEREN 7380 STYCT 7390 DEY 7400 STYCT+1 7410 STYAX 7420 STYAY 7430 DEY 7440 ; 7450 ;--- DX BERECHNEN --- 7460 ; 7470 BEGIN LDAXK1+1;IST X1>=X0? 7480 CMPXKO+1;MSB 7490 BCCDRAW01;NEIN,SPRUNG 7500 BNEDRAW02;X1>X0,SPRUNG 7510 LDAXK1;BEIDE GLEICH,LSB PRUEFEN 7520 CMPXKO 7530 BCSDRAW02;JA,SPRUNG 7540 DRAW01 SEC;DX=X0-X1 7550 LDAXKO 7560 SBCXK1 7570 STADX 7580 LDAXKO+1 7590 SBCXK1+1 7600 STADX+1 7610 STYIX;IX IST -1 7620 JMPDRAW03 7630 DRAW02 SEC;DX=X1-X0 7640 LDAXK1 7650 SBCXKO 7660 STADX 7670 LDAXK1+1 7680 SBCXKO+1 7690 STADX+1 7700 ; 7710 ;--- BERECHNEN VON DY --- 7720 ; 7730 DRAW03 LDAYK1;IST Y1>=Y0? 7740 CMPYKO 7750 BCSDRAW04;JA,SPRUNG 7760 ; 7770 SEC;SONST DY=Y0-Y1 7780 LDAYKO 7790 SBCYK1 7800 STADY 7810 STYIY;IY IST -1 7820 JMPDRAW05 7830 DRAW04 SBCYKO;DY=Y1-Y0 7840 STADY 7850 ; 7860 DRAW05 LDADX+1;DX=DY,SPRUNG 7910 LDXDY;ACHSEN TAUSCHEN 7920 STADY;DX NACH DY 7930 STXDX;DY NACH DX 7940 LDAIX;AY=IX 7950 STAAY 7960 LDAIY;AX=IY 7970 STAAX 7980 INY 7990 STYIX;IX=0 8000 STYIY;IY=0 8010 ; 8020 DRAW07 LDADX+1;OF=DX/2 8030 LSR 8040 STAOF+1;IST ALSO 0 8050 LDADX 8060 ROR 8070 STAOF 8080 JMPPLOTIT;1.PUNKT SETZEN 8090 ; 8100 ;--- APPROXIMATION --- 8110 ; 8120 DRWLOP LDAIX;IST IX=-1? 8130 BMIDRAW08;JA,SPRUNG 8140 CLC;X0=X0+IX 8150 ADCXKO 8160 STAXKO 8170 LDAXKO+1 8180 ADC#$00 8190 STAXKO+1 8200 JMPDRAW11 8210 DRAW08 SEC;X0=X0-IX 8220 LDAXKO 8230 SBC#$01 8240 STAXKO 8250 LDAXKO+1 8260 SBC#$00 8270 STAXKO+1 8280 DRAW11 CLC;Y0=Y0+AX 8290 LDAYKO 8300 ADCAX 8310 STAYKO 8320 CLC;OF=OF+DY 8330 LDAOF 8340 ADCDY 8350 STAOF 8360 LDAOF+1 8370 ADC#$00 8380 STAOF+1 8390 INCCT;CT=CT+1 8400 BNEDRAW06 8410 INCCT+1 8420 DRAW06 LDAOF+1;OF<=DX? 8430 CMPDX+1 8440 BCCPLOTIT;JA,ZEICHNEN 8450 BNEDRAW09;GROESSER,SPRUNG 8460 LDADX 8470 CMPOF 8480 BCSPLOTIT;JA,ZEICHNEN 8490 DRAW09 SEC;OF=OF-DX 8500 LDAOF 8510 SBCDX 8520 STAOF 8530 LDAOF+1 8540 SBCDX+1 8550 STAOF+1 8560 LDAAY;IST AY=-1? 8570 BMIDRAW10;JA,SPRUNG 8580 CLC;X0=X0+AY 8590 ADCXKO 8600 STAXKO 8610 LDAXKO+1 8620 ADC#$00 8630 STAXKO+1 8640 JMPDRAW12 8650 DRAW10 SEC;X0=X0-AY 8660 LDAXKO 8670 SBC#$01 8680 STAXKO 8690 LDAXKO+1 8700 SBC#$00 8710 STAXKO+1 8720 DRAW12 CLC;Y0=Y0+IY 8730 LDAYKO 8740 ADCIY 8750 STAYKO 8760 ; 8770 ;--- ZEICHNEN,SCHLEIFENENDE --- 8780 ; 8790 PLOTIT JSROK;EINSPRUNG 3 IN MODUL 6 8800 LDACT+1;CT<=DX? 8810 CMPDX+1 8820 BCCNEXPNT;CT200? 8950 BCSFINISH;Y>=200,SPRUNG 8960 LDAXKO+1;IST X>320? 8970 CMP#$01;MSB VON X 8980 BCCFINIS;MSB IST <1 8990 BNEFINISH;MSB IST >1 9000 LDYXKO;LSB VON X 9010 CPY#$40;LSB VON 320 9020 FINISH RTS;WENN CARRY=1,NACH RUECKKEHR AUSSTIEG BEI ILL 9030 FINIS LDYXKO 9040 RTS;Y=XKO,A=XKO+1 10000 ;**** MODUL 9:KREISE ZEICHNEN **** 10010 ; 10020 ;ZEICHNET ODER LOESCHT EINEN KREIS 10030 ;UM DEN MITTELPUNKT XM,YM UND MIT 10040 ;DEM RADIUS R. ALLE EINGABEN VON 10050 ;0 BIS MAXIMAL 32767 (?) ERLAUBT. 10060 ;BEIM ERSTEN EINSPRUNGSPUNKT WER- 10070 ;DEN DIE PARAMETER GELESEN UND 10080 ;GEPRUEFT. BEIM ZWEITEN EINSPRUNG 10090 ;ERWARTET PROGRAMM PARAMETER IN 10100 ;DEN RICHTIGEN SPEICHERSTELLEN 10110 ;XM,YM,R UND MODE. UEBERGABE AN 10120 ;MODUL 6 MITTELS XKO,YKO UND MODE. 10130 ; 10140 ERR RTS;RUECKSPRUNG BEI FEHLEINGABE 10150 ; 10160 ;--- PARAMETER HOLEN,PRUEFEN,ABLEGEN --- 10170 ; 10180 HOLE JSRCHKCOM;KOMMA PRUEFEN 10190 JSRFRMNUM;XM LESEN 10200 JSRGETADR 10210 LDAXKO+1;MSB PRUEFEN 10220 BMIERR;ZU GROSS,SPRUNG 10230 STAXM+1;MERKEN 10240 LDAXKO;LSB 10250 STAXM;MERKEN 10260 ; 10270 JSRCHKCOM;NAECHSTES KOMMA 10280 JSRFRMNUM;YM LESEN 10290 JSRGETADR 10300 LDAXKO+1;MSB PRUEFEN 10310 BMIERR;FEHLEINGABE 10320 STAYM+1;MERKEN 10330 LDAXKO;LSB 10340 STAYM;MERKEN 10350 ; 10360 JSRCHKCOM;KOMMA TESTEN 10370 JSRFRMNUM;RADIUS LESEN 10380 JSRGETADR 10390 LDAXKO+1;MSB PRUEFEN 10400 BMIERR;ZU GROSS,SPRUNG 10410 STARAD+1;MERKEN 10420 LDAXKO;LSB 10430 STARAD;MERKEN 10440 ; 10450 JSRCOMBYT;MODUS HOLEN 10460 STXMODE;UND MERKEN 10470 ; 10480 ;--- ANFANGSWERTE SETZEN --- 10490 ; 10500 KREIS1 LDA#$00;VARIABLE X=0 10510 STAXKO 10520 STAXKO+1 10530 LDARAD;VARIABLE Y=R 10540 STAHELP 10550 LDARAD+1 10560 STAHELP+1 10570 SEC;VARIABLE D BERECHNEN: 10580 LDARAD;D=R-1 10590 SBC#$01 10600 STACT 10610 LDARAD+1 10620 SBC#$00 10630 STACT+1 10640 ; 10650 ;--- HAUPTSCHLEIFE --- 10660 ; 10670 KREISLP LDACT+1;IST D<0? 10680 BPLKREIS2;NEIN,SPRUNG 10690 SEC;SUBTRAKTION 10700 LDAHELP;Y=Y-1 10710 SBC#$01 10720 STAHELP 10730 LDAHELP+1 10740 SBC#$00 10750 STAHELP+1 10760 CLC;ADDITIONEN 10770 LDACT;D=D+Y+Y 10780 ADCHELP 10790 STACT 10800 LDACT+1 10810 ADCHELP+1 10820 STACT+1 10830 CLC 10840 LDACT 10850 ADCHELP 10860 STACT 10870 LDACT+1 10880 ADCHELP+1 10890 STACT+1 10900 ; 10910 KREIS2 JSRCIRCLE;UP ZUM PRUEFEN DER WERTE UND ZEICHNEN 10920 ; 10930 SEC;SUBTRAKTIONEN 10940 LDACT;D=D-X-X-1 10950 SBCXKO 10960 STACT 10970 LDACT+1 10980 SBCXKO+1 10990 STACT+1 11000 SEC 11010 LDACT 11020 SBCXKO 11030 STACT 11040 LDACT+1 11050 SBCXKO+1 11060 STACT+1 11070 SEC 11080 LDACT 11090 SBC#$01 11100 STACT 11110 LDACT+1 11120 SBC#$00 11130 STACT+1 11140 CLC;ADDITION X=X+1 11150 LDAXKO 11160 ADC#$01 11170 STAXKO 11180 LDAXKO+1 11190 ADC#$00 11200 STAXKO+1 11210 ; 11220 CMPHELP+1;IST X<=Y 11230 BCCKREISLP;JA,SPRUNG 11240 BNEEND;X>Y,KREIS FERTIG 11250 LDAHELP 11260 CMPXKO 11270 BCSSCHLEIFE;JA,SPRUNG 11280 END RTS;KREIS FERTIG 11290 SCHLEIFE JMPKREISLP 11300 ; 11310 ;--- UNTERPROGRAMM ZEICHNEN --- 11320 ; 11330 ;BERECHNET DIE KONKRETEN PUNKTE 11340 ;DURCH SYMMETRIEN, PRUEFT OB DIE 11350 ;SICH ERGEBENDEN WERTE FUER X UND 11360 ;Y KLEINER ALS 0 SIND UND OB Y 11370 ;GROESSER ALS 255. IN DEM FALL 11380 ;WIRD NICHT GEZEICHNET. ALLE 11390 ;ANDEREN PRUEFUNGEN GESCHEHEN IM 11400 ;MODUL 6. 11410 ; 11420 CIRCLE CLC;BERECHNE XM+X 11430 LDAXM 11440 ADCXKO 11450 STAXPLUSX 11460 LDAXM+1 11470 ADCXKO+1 11480 STAXPLUSX+1 11490 SEC;BERECHNE XM-X 11500 LDAXM 11510 SBCXKO 11520 STAXMINX 11530 LDAXM+1 11540 SBCXKO+1 11550 STAXMINX+1 11560 CLC;BERECHNE XM+Y 11570 LDAXM 11580 ADCHELP 11590 STAXPLUSY 11600 LDAXM+1 11610 ADCHELP+1 11620 STAXPLUSY+1 11630 SEC;BERECHNE XM-Y 11640 LDAXM 11650 SBCHELP 11660 STAXMINY 11670 LDAXM+1 11680 SBCHELP+1 11690 STAXMINY+1 11700 CLC;BERECHNE YM+Y 11710 LDAYM 11720 ADCHELP 11730 STAYPLUSY 11740 LDAYM+1 11750 ADCHELP+1 11760 STAYPLUSY+1 11770 SEC;BERECHNE YM-Y 11780 LDAYM 11790 SBCHELP 11800 STAYMINY 11810 LDAYM+1 11820 SBCHELP+1 11830 STAYMINY+1 11840 CLC;BERECHNE YM+X 11850 LDAYM 11860 ADCXKO 11870 STAYPLUSX 11880 LDAYM+1 11890 ADCXKO+1 11900 STAYPLUSX+1 11910 SEC;BERECHNE YM-X 11920 LDAYM 11930 SBCXKO 11940 STAYMINX 11950 LDAYM+1 11960 SBCXKO+1 11970 STAYMINX+1 11980 LDAXKO;X RETTEN 11990 PHA 12000 LDAXKO+1 12010 PHA 12020 LDAXPLUSX;1.PUNKT 12030 STAXKO 12040 LDAXPLUSX+1 12050 STAXKO+1 12060 LDAYPLUSY 12070 STAYKO 12080 LDYYPLUSY+1 12090 JSRSETZE 12100 LDAYMINY;2.PUNKT 12110 STAYKO 12120 LDYYMINY+1 12130 JSRSETZE 12140 LDAXMINX;3.PUNKT 12150 STAXKO 12160 LDAXMINX+1 12170 LDYYMINY+1 12180 JSRSETZE 12190 LDAYPLUSY;4.PUNKT 12200 STAYKO 12210 LDYYPLUSY+1 12220 JSRSETZE 12230 LDAXPLUSY;5.PUNKT 12240 STAXKO 12250 LDAXPLUSY+1 12260 STAXKO+1 12270 LDAYPLUSX 12280 STAYKO 12290 LDYYPLUSX+1 12300 JSRSETZE 12310 LDAYMINX;6.PUNKT 12320 STAYKO 12330 LDYYMINX+1 12340 JSRSETZE 12350 LDAXMINY;7.PUNKT 12360 STAXKO 12370 LDAXMINY+1 12380 STAXKO+1 12390 LDYYMINX+1 12400 JSRSETZE 12410 LDAYPLUSX;8.PUNKT 12420 STAYKO 12430 LDYYPLUSX+1 12440 JSRSETZE 12450 PLA;XKO ZURUECKHOLEN 12460 STAXKO+1 12470 PLA 12480 STAXKO 12490 RTS;ZURUECK ZUR HAUPTSCHLEIFE 12500 ; 12510 ;--- PRUEFEN UND SETZEN --- 12520 ; 12530 SETZE BNEFINI;Y>255,KEIN PUNKT 12540 LDAXKO+1;IST X NEGATIV? 12550 BMIFINI;JA,KEIN PUNKT 12560 JSRPUNKT2;ZUM MODUL 6:PUNKT SETZEN 12570 FINI RTS;WEITER IN CIRCLE 13000 ;**** (null)ODUL 12: (null)ABELLEN **** 13010 ; 13020 ;--- (null)ONSTANTEN --- 13030 ; 13040 FL199 .BY$88,$47,$00,$00,$00;199 IM (null)ASC(null)(null)(null)-ASCORMAT 13050 FL319 .BY$89,$1F,$80,$00,$00;319 IM (null)ASC(null)(null)(null)-ASCORMAT 13060 K199 .BY$C7;199 ALS 1-PEEKYTE-RIGHT$NTEGER 13070 ; 13080 ;--- (null)ARIABLE --- 13090 ; 13100 XU .BY$00,$00,$00,$00,$00;(null)(null) IM (null)ASC(null)(null)(null)-ASCORMAT 13110 YU .BY$00,$00,$00,$00,$00;(null)(null) IM (null)ASC(null)(null)(null)-ASCORMAT 13120 XO .BY$00,$00,$00,$00,$00;(null)(null) IM (null)ASC(null)(null)(null)-ASCORMAT 13130 YO .BY$00,$00,$00,$00,$00;(null)(null) IM (null)ASC(null)(null)(null)-ASCORMAT 13140 BEFNR .BY$00;PEEKEFEHLSNUMMER 13150 AKKU .BY$00;(null)WISCHENSPEICHER FUER ATNKKU-RIGHT$NHALT 13160 ; 13170 ;---- (null)PRUNGTABELLE ------------- 13180 ; 13190 SPRTAB .BY$E7 13200 SPRTAB1 .BY$A7 13210 .WOAUS 13220 .WOHAN 13230 .WOGCLR 13240 .WOCOLOR 13250 .WONORM 13260 .WOPUNKT1 13270 .WODRWLIN 13280 .WOHOLE 13290 .BY0,0 13300 .BY0,0 13310 .BY0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 13320 ; 13330 ;---- PEEKEFEHLSTABELLE ------------ 13340 ; 13350 BEFTAB .TX"AUS" 13360 .BY0 13370 .TX"HAN" 13380 .BY0 13390 .TX"LOE" 13400 .BY0 13410 .TX"FAR" 13420 .BY0 13430 .TX"HOF" 13440 .BY0 13450 .TX"PKT" 13460 .BY0 13470 .TX"LIN" 13480 .BY0 13490 .TX"CIR" 13500 .BY0 13510 .BY0,0 13520 .BY0 13530 .BY0,0 13540 .BY0,0 13550 ; 13560 ;--- (null)LATZ FUER WEITERE PEEKEFEHLE --- 13570 ; 13580 .BY0,0,0,0,0,0,0,0,0,0 13590 .BY0,0,0,0,0,0,0,0,0,0 13600 .BY0,0,0,0,0,0,0,0,0,0 13610 .BY0,0,0,0,0,0,0,0,0,0 13620 .BY0,0,0,0,0,0,0,0,0,0 13630 ; 13640 ;--- (null)ULTIPLIKATIONSTABELLEN --- 13650 ; 13660 MALTAB .BY$00,$40,$80,$C0;(null)(null)PEEK 13670 .BY$00,$40,$80,$C0 13680 .BY$00,$40,$80,$C0 13690 .BY$00,$40,$80,$C0 13700 .BY$00,$40,$80,$C0 13710 .BY$00,$40,$80,$C0 13720 .BY$00 13730 ; 13740 MALTAB1 .BY$60,$61,$62,$63;(null)(null)PEEK 13750 .BY$65,$66,$67,$68 13760 .BY$6A,$6B,$6C,$6D 13770 .BY$6F,$70,$71,$72 13780 .BY$74,$75,$76,$77 13790 .BY$79,$7A,$7B,$7C 13800 .BY$7E 13810 ; 13820 HOCHTAB .BY$80,$40,$20,$10;(null)WEIERPOTENZEN 13830 .BY$08,$04,$02,$01 13840 ; 13850 TEST 13860 ;