1 REM Ins{nd av Bengt Holgersson <559> 1986-02-02 13.28.27 10 REM +------------------------------+ 20 REM ! H|guppl|snings grafikrutiner ! 30 REM ! f|r er som har en ABC80 och ! 40 REM ! en printer med HR-grafik ! 50 REM ! Testat p} EPSON MX80II & III ! 60 REM ! Uppl|sning 256x256 punkter ! 70 REM ! Origo i nedre v{nstra h|rnet ! 80 REM ! (som ABC800) ! 85 REM ! VER 850202 (Ritar p} sk{rmen)! 90 REM +------------------------------+ 100 REM A$()=GRAFIKMINNE 110 REM N%=FLAGGA F\R NEGATIV RITNING 120 REM I%=LOOPVARIABEL 130 REM A%=ADRESS TILL GRAFIKMINNE 140 REM X%,Y%=KOORDINATER F\R GRAFIK 150 REM Z%=SLASKVARIABEL (FNx%,CALL) 160 REM 170 REM >> INITIERING << 180 REM ________________ 190 DIM A$(31%)=256% : REM M}ste vara f|rsta variabel 200 N%=0% : REM N%<>0% => Rita vitt p} svart bakgrund 210 FOR I%=0% TO 31% 220 A$(I%)=STRING$(256%,N%<>0%) 230 NEXT I% 240 GOSUB 720 : REM L{s in maskinspr}ksprogram 250 IF N% POKE 63781%,47%,166% 260 A%=PEEK(65065%)+SWAP%(PEEK(65066%)) 270 A%=PEEK(A%+4%)+SWAP%(PEEK(A%+5%)) 280 A%=PEEK(A%+2%)+SWAP%(PEEK(A%+3%)) 290 POKE 63750%,A%,SWAP%(A%) : REM Adress till A$(0%) 300 DEFFNP%=CALL(63744%,X%+SWAP%(Y%)) : REM FGPOINT 310 DEFFNL%=CALL(63747%,X%+SWAP%(Y%)) : REM FGLINE 320 REM 330 REM  DEMO Rita spiraler  340 REM Detta {r bara en demo. Det st}r var och en fritt att anv{nda 341 REM dessa rutiner till n}got annat skojigt!! 342 REM Se bara till att X% och Y% h}ller sig inom omr}det 0-255. 343 REM 350 ONERRORGOTO 350 : ; INP(4%)CHR$(12%)'SPIROGRAF' : ; 360 ; 'Hypo- eller Epicycloid:'; : GET V$ : V$=CHR$(ASC(V$) AND 95%) : IF (V$<>'H' AND V$<>'E') GOTO 350 ELSE ; V$ 370 ; 'Fasta cirkeln diameter:'; : INPUT D1 380 ; 'Roterande cirkelns diameter:'; : INPUT D2 390 IF V$='H' IF D2255 ; 'F]R EJ PLATS !!!' : GOTO 360 420 Q=D1/D2 : V%=1% 430 F=ABS(Q*V%-INT(Q*V%+.5)) : IF F>.01 V%=V%+1% : GOTO 430 440 ; 'Antal varv:'V% 450 ; 'Antal punkter per varv:'; : INPUT P% 460 ; 'ok (J)'; : GET T$ : ; : IF (ASC(T$) AND 95%)=78% GOTO 350 470 ; CHR$(12%) : FOR R%=0% TO 22% : ; CUR(R%,0%)CHR$(151%); : NEXT R% 480 U=1/P% : G=(D1+D2)/D2 : H=(D1-D2)/D2 : V=0 : GOSUB 560 : Z%=FNP% 490 FOR V1%=0% TO V%-1% 500 FOR V2=0 TO 1+U/2 STEP U 510 V=2%*PI*(V1%+V2) : GOSUB 560 : Z%=FNL% 520 NEXT V2 : NEXT V1% 530 ; CUR(23%,0%)'Skall det skrivas ut p} printer (N)'; : GET T$ : IF (ASC(T$) AND 95%)<>74% GOTO 200 540 GOSUB 620 550 END 560 IF V$='E' GOTO 580 570 X=(D1-D2)*COS(V)+D2*COS(H*V) : Y=(D1-D2)*SIN(V)-D2*SIN(H*V) : GOTO 590 580 X=(D1+D2)*COS(V)-D2*COS(G*V) : Y=(D1+D2)*SIN(V)-D2*SIN(G*V) 590 X%=X/2+128%+.5 : Y%=Y/2+128%+.5 600 RETURN 601 REM SLUT DEMO  610 REM 620 REM >> SUBRUTIN Skriv ut grafikminnet << 630 REM ____________________________________ 640 OPEN 'PR:' ASFILE 1% 650 ; #1,CHR$(15%); : IF V$='H' ; #1%,'Hypo'; ELSE ; #1%,'Epi'; 660 ; #1,'cycloid D1 ='D1' D2 ='D2' P ='P% 670 ; #1%,CHR$(18%,27%,65%,8%); 680 FOR I%=31% TO 0% STEP -1% : ; #1%,CHR$(27%,75%,0%,1%)A$(I%) : NEXT I% 690 ; #1%,CHR$(27%,65%,12%); 700 RETURN 710 REM 720 REM >> SUBRUTIN L{gg in maskinspr}ksprogrammet << 730 REM ___________________________________________________________ 740 POKE 63744%,195%,8%,249%,195%,42%,249%,0%,0%,237%,83%,49%,250%,213%,205%,57%,250% 750 POKE 63760%,122%,203%,58%,203%,58%,203%,58%,42%,6%,249%,25%,230%,7%,60%,71%,175% 760 POKE 63776%,55%,203%,23%,16%,252%,0%,182%,119%,209%,201%,205%,12%,249%,42%,49%,250% 770 POKE 63792%,235%,34%,49%,250%,62%,1%,50%,53%,250%,50%,54%,250%,124%,146%,50%,52% 780 POKE 63808%,250%,48%,10%,237%,68%,50%,52%,250%,62%,255%,50%,54%,250%,125%,147%,50% 790 POKE 63824%,51%,250%,48%,10%,237%,68%,50%,51%,250%,62%,255%,50%,53%,250%,58%,51% 800 POKE 63840%,250%,254%,0%,32%,6%,58%,52%,250%,254%,0%,200%,58%,51%,250%,71%,58% 810 POKE 63856%,52%,250%,144%,48%,94%,58%,51%,250%,203%,63%,71%,58%,52%,250%,144%,50% 820 POKE 63872%,55%,250%,62%,0%,222%,0%,50%,56%,250%,58%,51%,250%,71%,197%,205%,12% 830 POKE 63888%,249%,58%,56%,250%,230%,128%,32%,31%,58%,52%,250%,71%,58%,51%,250%,144% 840 POKE 63904%,71%,58%,55%,250%,144%,50%,55%,250%,58%,56%,250%,222%,0%,50%,56%,250% 850 POKE 63920%,58%,54%,250%,130%,87%,24%,19%,58%,52%,250%,71%,58%,55%,250%,128%,50% 860 POKE 63936%,55%,250%,58%,56%,250%,206%,0%,50%,56%,250%,58%,53%,250%,131%,95%,193% 870 POKE 63952%,16%,187%,201%,58%,52%,250%,203%,63%,71%,58%,51%,250%,144%,50%,55%,250% 880 POKE 63968%,62%,0%,222%,0%,50%,56%,250%,58%,52%,250%,71%,197%,205%,12%,249%,58% 890 POKE 63984%,56%,250%,230%,128%,32%,31%,58%,51%,250%,71%,58%,52%,250%,144%,71%,58% 900 POKE 64000%,55%,250%,144%,50%,55%,250%,58%,56%,250%,222%,0%,50%,56%,250%,58%,53% 910 POKE 64016%,250%,131%,95%,24%,19%,58%,51%,250%,71%,58%,55%,250%,128%,50%,55%,250% 920 POKE 64032%,58%,56%,250%,206%,0%,50%,56%,250%,58%,54%,250%,130%,87%,193%,16%,187% 930 POKE 64048%,201%,0%,0%,0%,0%,0%,0%,0%,0%,213%,58%,78%,2%,254%,80%,40% 940 POKE 64064%,2%,203%,59%,203%,59%,62%,2%,131%,95%,203%,58%,203%,58%,62%,63%,146% 950 POKE 64080%,79%,58%,247%,34%,254%,6%,123%,40%,5%,205%,245%,34%,24%,3%,205%,247% 960 POKE 64096%,34%,182%,246%,32%,119%,209%,201% 970 RETURN