This is non-commercial site, its content is based on Atari 8-bit home computer contents and references.
If you feel your rights are violated by showing/using any part of contents of your product represented on this page,
please contact me immediatelly so I can remove it!
Listing 1
0 POKE 82,1:PZ=16:TE=11:KO=17
1 DIM V$(1),P$(10),P1$(10),F$(50),FI$(30):F$="-EXP(-X*X-Y*Y)"
2 IF PEEK(1536)<>104 THEN GOSUB 12000
3 ? "":GOTO 10000
4 REM
5 REM | |
6 REM | |
7 REM | |
8 REM | |
9 REM
140 O=N:N=N-1:NA=0.5:M=N/NA:P=M+1
143 COLOR 3
150 B=254.98999999999998:XX=20000:YY=XX+O*P:HH=YY+O*P:LL=HH+P
160 REM PREPOCET
170 XO=(XA-XI)/N:YO=(YA-YI)/M
180 ZI=1e+35:ZA=-ZI:GI=ZI:GA=ZA
190 FOR J=0 TO M
200 POSITION 2,4:? " ";O*(P-J);" "
210 FOR I=0 TO N
215 POSITION 2,4:? " ";O*(P-J)-I+N*P;" "
220 GOSUB 1000
230 IF F>ZA THEN ZA=F
235 IF F<ZI THEN ZI=F
240 IF G>GA THEN GA=G
245 IF G<GI THEN GI=G
250 NEXT I
260 NEXT J
270 ZO=B/(ZA-ZI):GO=B/(GA-GI)
300 REM NORMOVANI
310 FOR J=0 TO M
320 POSITION 2,4:? " ";O*(P-J);" ";:POKE 53279,1
330 FOR I=0 TO N
335 POSITION 2,4:? " ";O*(P-J)-I;" ";
340 GOSUB 1000
350 XY=I+O*J
360 X=XX+XY:G=INT((G-GI)*GO):POKE X,G
370 Y=YY+XY:F=INT((F-ZI)*ZO):POKE Y,F
380 NEXT I
390 NEXT J
400 IF V$="N" THEN GOTO 10000
410 FOR J=0 TO M
420 Y=YY+N+O*J
430 POKE HH+J,PEEK(Y):POKE LL+J,PEEK(Y)
440 NEXT J
450 FOR I=N-1 TO 0 STEP -1
460 POSITION 2,4:? " ";2*M*(I+1);" ";:POKE 53279,1
470 FOR J=0 TO M-1
475 POSITION 2,4:? " ";2*M*(I+1)-J;" ";
480 POKE HH+J,PEEK(HH+J+1)
490 POKE LL+J,PEEK(LL+J+1)
500 NEXT J
510 Y=YY+I+O*M
520 POKE HH+M,PEEK(Y)
530 POKE LL+M,PEEK(Y)
540 FOR J=0 TO M-1
550 Y=YY+I+O*J
560 IF PEEK(Y)<PEEK(HH+J) THEN 590
570 POKE HH+J,PEEK(Y)
580 GOTO 630
590 IF PEEK(Y)>PEEK(LL+J) THEN GOTO 620
600 POKE LL+J,PEEK(Y)
610 GOTO 630
620 POKE Y,255
630 NEXT J:NEXT I
640 RETURN
650 REM
653 COLOR 3
655 IF POV=0 THEN ? " Nebyly zadane hodnoty!":GOTO 10000
660 GRAPHICS 24:POKE 710,PZ:POKE 712,KO:POKE 709,TE:POKE 756,100
670 PLOT 0,0:DRAWTO 319,0:DRAWTO 319,191:DRAWTO 0,191:DRAWTO 0,0:PLOT 0,60:DRAWTO 319,60
720 FOR I=N TO 0 STEP -1
730 FOR J=0 TO M
740 Q=J
750 GOSUB 1200
760 NEXT J
770 NEXT I
780 FOR J=0 TO M
790 FOR I=0 TO N
800 Q=I
810 GOSUB 1200
820 NEXT I
830 NEXT J
840 GOSUB 20000
850 IF PEEK(53279)<>6 THEN GOTO 850
860 GRAPHICS 0:GOTO 10000
1000 X=I*XO+XI:Y=J*YO+YI:G=Y-X*NA
1010 F=-EXP(-X*X-Y*Y)
1030 RETURN
1200 XY=I+O*J:X=XX+XY:Y=YY+XY
1210 X=PEEK(X)*300/B:Y=PEEK(Y)*120/B
1220 IF Y>=120 THEN W=1:RETURN
1230 IF Q=0 OR W=1 THEN COLOR 0:PLOT X,190-Y:COLOR 3:W=0:RETURN
1240 DRAWTO X,190-Y:RETURN
10000 REM
10005 POKE 709,TE:POKE 710,PZ:POKE 712,KO:POKE 752,1:MGF=0
10010 POSITION 1,0
10012 ? " "
10015 ? " ||"
10017 ? " ||||"
10018 ? " ||"
10020 ? " || ||"
10022 ? " || Zadani hodnot ||"
10023 ? " || Zadani funkce ||"
10024 ? " || Vykresleni grafu||"
10026 ? " || Magnetofon ||"
10028 ? " || Barvy ||"
10030 ? " || ||"
10032 ? " ||"
10033 ? " "
10035 VR=5:SP=9:OK=7:GOSUB 25000
10040 ON PO GOTO 10100,10500,650,11000,11500
10050 GOTO 10000
10100 REM
10110 POSITION 2,0:?:?:?:?:POV=1
10115 ? ""
10117 ? "||"
10119 ? ""
10121 ? "| |"
10123 ? "|Pocet rezu(2-30) X: |"
10125 ? "| |"
10127 ? "|Prostor.videni(A/N): |"
10129 ? "| |"
10131 ? "|Xmin: |"
10133 ? "|Xmax: |"
10135 ? "|Ymin: |"
10137 ? "|Ymax: |"
10139 ? ""
10140 POSITION 27,8:? ;:INPUT P$:IF P$=" |" OR P$<"1" OR P$>"9" THEN 10140
10142 N=VAL(P$)
10145 IF N<2 OR N>30 THEN ? "":GOTO 10140
10150 POSITION 29,10:? ;:INPUT V$
10155 IF V$<>"A" AND V$<>"N" THEN ? "":GOTO 10150
10160 POSITION 13,12:? " ";:INPUT P$:TRAP 10160
10162 XI=VAL(P$)
10165 POSITION 13,13:? " ";:INPUT P$:TRAP 10165
10167 XA=VAL(P$)
10170 POSITION 13,14:? " ";:INPUT P$:TRAP 10170
10172 YI=VAL(P$)
10175 POSITION 13,15:? " ";:INPUT P$:TRAP 10175:YA=VAL(P$)
10176 ?:? " Jste si jist? (A/N)";:INPUT P$
10177 IF P$="N" THEN 10100
10178 GOSUB 26000
10179 POKE 82,1:POSITION 1,0
10180 ? ""
10181 ? "||"
10182 ? ""
10185 ? "|Zbyva |"
10187 ? "| |"
10190 ? "| vypoctu |"
10192 ? ""
10200 TRAP 10250:GOSUB 140
10210 GOTO 10005
10250 ? "Byla zadana spatna funkce nebo hodnoty."
10255 ? "F=";F$
10260 GET #16,KEY:GOTO 10000
10500 REM
10510 ? "":POV=0
10520 ? "Zadejte novou funkci."
10525 ? "F=";:INPUT #16,F$
10530 ? "":?
10540 ? "1010 F=";F$:?:?:? "CONT":POSITION 2,0:POKE 842,13:STOP
10545 POKE 842,12:POKE 53774,64:GOTO 10000
11000 REM
11010 POSITION 2,0:?:?:?:?:?:?:MGF=1
11020 ? ""
11025 ? "||"
11030 ? ""
11032 ? "| |"
11034 ? "| 1.Load |"
11036 ? "| 2.Save |"
11038 ? "| 3.Menu |"
11040 ? "| |"
11042 ? ""
11200 VR=10:SP=12:OK=16:GOSUB 25000
11210 IF PO=3 THEN 10000
11220 IF PO=1 THEN 11400
11225 REM
11227 ? "":?:?:?:?
11230 ? "Save <C: T: D:>:";:INPUT #16,FI$
11235 ?:?:? "Ted se nakresli graf. Po jeho nakres- leni se ozve zvukove navesti. Po nem"
11240 ? "pripravte kazetak a stisknete cokoliv"
11245 ?:?:? "Stiskni START"
11250 IF PEEK(53279)<>6 THEN 11250
11255 GOTO 650
11260 OPEN #1,8,0,FI$
11265 FOR K=33104 TO 40784
11270 PUT #1,PEEK(K)
11280 NEXT K:CLOSE #1:GOTO 850
11400 REM
11410 ? "":?:?:? "Zarizeni:<C: T: D:>:";:INPUT #16,FI$
11413 GRAPHICS 8+16:POKE 710,8:POKE 712,5:SETCOLOR 1,1,2:POKE 756,100
11420 OPEN #1,4,0,FI$
11430 FOR K=33104 TO 40784
11435 GET #1,L:POKE K,L
11440 NEXT K:GOTO 850
11500 REM
11505 POSITION 2,0:?:?:?:?:?:PO=1
11510 ? " "
11515 ? " ||"
11520 ? " "
11524 ? " | |"
11525 ? " | 1.Pozadi |"
11527 ? " | 2.Text |"
11530 ? " | 3.Okraje |"
11532 ? " | 4.Konec |"
11533 ? " | |"
11535 ? " "
11540 OK=11:VR=9+PO-1:SP=12:GOSUB 25000
11545 IF PO=4 THEN GOTO 10000
11550 IF PO=1 THEN PZ=PZ+2:POKE 710,PZ
11555 IF PO=2 THEN TE=TE+2:POKE 709,TE
11560 IF PO=3 THEN KO=KO+2:POKE 712,KO
11565 IF PZ>=255 THEN PZ=0
11567 IF TE>=255 THEN TE=0
11570 IF KO>=255 THEN KO=0
11575 GOSUB 25015:GOTO 11545
11600 GOTO 10000
12000 REM
12010 ? "":POKE 710,PZ:POKE 712,KO:POKE 709,TE
12020 ?:?:?
12025 ? ""
12027 ?
12030 ? "Chcete-li si nahrat tento program v"
12035 ? "puvodni verzi, nesmite menit funkci."
12040 ? "Vami zadana funkce se pak nahraje na"
12045 ? "kazetu a pri novem spusteni nesouhla-"
12050 ? "si nektere udaje v programu."
12055 ? "Pokud jste dostal jiz spatnou verzi"
12060 ? "programu, napiste si o spravnou na "
12065 ? "adresu: Libor KLUBAL"
12067 ? " Spojovaci 812"
12069 ? " 749 01 VITKOV"
12070 ? " tel.0654/2503"
12071 LIST 1010:? " F=";F$
12072 ?:? "Jestlize funkce nejsou stejne, mate"
12074 ? "spatnou verzi programu."
12080 ?:?:? "Zastavit program?(A/N)"
12085 INPUT P$:IF P$="A" THEN STOP
12087 ? ""
12099 ? " Kresleni"
12100 ? " "
12110 ? " K R T E K prostorovych"
12112 ? " "
12120 ? " grafu"
12125 ?
12130 ? ""
12135 ? "| Program KRTEK slouzi ke kresleni |"
12140 ? "| prostorovych grafu na pocitacich |"
12145 ? "| ATARI XL/XE. Program vykresluje |"
12150 ? "| graf podle nami zadane funkce a |"
12155 ? "| zakladnich udaju. Pri zadavani |"
12160 ? "| funkce musime znat syntax jazyka. |"
12165 ? "| V programu je zadana funkce ve |"
12200 ? "| tvaru F=-EXP(-X*X-Y*Y). Staci te- |"
12215 ? "| dy zadat jen hodnoty. Pouzivame- |"
12220 ? "| li zarizeni 'T:', muzeme vygene- |"
12230 ? "| rovany obrazek pouzit v programu |"
12235 ? "| DESIGN MASTER 4.0. Zde muzeme |"
12240 ? "| obrazek dale graficky upravit. |"
12245 ? ""
12260 ? "Prosim cekej (cca 1min)"
12265 GOSUB 27000:FOR K=1 TO 10:SOUND 0,50,10,10:NEXT K:SOUND 0,0,0,0
12270 ? "Stiskni START "
12280 GOTO 850
13000 END
20000 COLOR 0:POKE 756,224
20005 PLOT 10,10:UL=USR(1536,ADR("F="),2,0):PLOT 30,10
20010 UL=USR(1536,ADR(F$),LEN(F$),0)
20020 POKE 756,100
20030 PLOT 10,25:UL=USR(1536,ADR("Poet ez-"),11,128):PLOT 53,25
20035 UL=USR(1536,ADR(STR$(O)),LEN(STR$(O)),128):PLOT 10,35
20040 UL=USR(1536,ADR("Prostorov vidn "),18,128):PLOT 10+18*4,35
20045 IF V$="A" THEN P$="zapnuto":GOTO 20055
20050 P$="vypnuto"
20055 UL=USR(1536,ADR(P$),LEN(P$),128):PLOT 10,45
20060 UL=USR(1536,ADR("X <"),3,128):PLOT 10+4*3,45
20065 UL=USR(1536,ADR(STR$(XI)),LEN(STR$(XI)),128):PLOT 22+LEN(STR$(XI))*4,45
20070 UL=USR(1536,ADR(","),1,128):PLOT 22+LEN(STR$(XI))*4+4,45
20075 UL=USR(1536,ADR(STR$(XA)),LEN(STR$(XA)),128):DE=22+LEN(STR$(XI))*4+4+LEN(STR$(XA))*4:PLOT DE,45
20080 UL=USR(1536,ADR(">"),1,128):PLOT DE+20,45
20085 P$=STR$(YI):P1$=STR$(YA)
20090 UL=USR(1536,ADR("Y <"),3,128):PLOT DE+20+12,45:DE=DE+20+12
20095 UL=USR(1536,ADR(P$),LEN(P$),128):PLOT DE+LEN(P$)*4,45
20097 UL=USR(1536,ADR(","),1,128):PLOT DE+LEN(P$)*4+4,45
20100 UL=USR(1536,ADR(P1$),LEN(P1$),128):PLOT DE+LEN(P$)*4+LEN(P1$)*4+4,45
20105 UL=USR(1536,ADR(">"),1,128)
20107 IF MGF=1 THEN GOTO 11260
20110 PLOT 250,50:UL=USR(1536,ADR("Stiskni START"),13,128)
20150 RETURN
24999 END
25000 REM
25010 VRR=VR:POSITION OK,VR:? ""
25015 ST=STICK(0):IF ST=15 THEN ST=STICK(1):IF ST=15 THEN ST=PEEK(764)
25020 IF ST=15 THEN ST=13:POKE 764,255
25025 IF ST=14 THEN VRR=VRR-1:POKE 764,255:IF VRR<VR THEN VRR=SP:POSITION OK,VR:? " "
25030 IF ST=13 THEN VRR=VRR+1:IF VRR>SP THEN VRR=VR:POSITION OK,SP:? " "
25040 POSITION OK,VRR:? "":POSITION OK,VRR+1:? " ":POSITION OK,VRR-1:? " "
25045 IF STRIG(0)=0 OR STRIG(1)=0 OR PEEK(764)=12 THEN POKE 764,255:PO=VRR-VR+1:RETURN
25050 GOTO 25015
26000 REM
26010 IF XI>=XA THEN ? "Chybne meze X!":GOTO 10160
26020 IF YI>=YA THEN ? "Chybne meze Y!":GOTO 10170
26030 RETURN
27000 REM
27005 U=USR(ADR("hhh`"),25600)
27052 RESTORE 27130:FOR K=25864 TO 26071:READ A:POKE K,A:NEXT K
27060 RESTORE 27250:FOR K=26376 TO 26583:READ A:POKE K,A:NEXT K
27070 RESTORE 27350:FOR K=25728 TO 25815:READ A:POKE K,A:NEXT K
27082 RESTORE 27450:FOR K=26112 TO 26367:READ A:POKE K,A:NEXT K:GOSUB 30000:RETURN
27130 DATA 0,16,52,36,36,52,36,0,0,48,36,48,36,36,48,0,0,16,36,32,32,36,16,0,0,48,36,36,36,36,48,0
27140 DATA 0,52,32,32,48,32,52,0,0,52,32,52,32,32,32,0,0,16,36,32,52,36,16,0,0,36,36,36,52,36,36,0
27150 DATA 0,16,16,16,16,16,16,0,0,4,4,4,4,36,16,0,0,36,36,48,48,36,36,0,0,32,32,32,32,32,52,0
27160 DATA 0,36,52,52,36,36,36,0,0,36,52,52,52,52,36,0,0,16,36,36,36,36,16,0,0,48,36,36,48,32,32,0
27170 DATA 0,16,36,36,36,52,20,0,0,48,36,36,48,36,36,0,0,20,32,48,4,36,16,0,0,52,16,16,16,16,16,0
27180 DATA 0,36,36,36,36,36,52,0,0,36,36,36,36,52,16,0,0,36,36,36,52,52,36,0,0,36,36,16,16,36,36,0
27190 DATA 0,36,36,16,16,16,16,0,0,52,4,16,16,32,52,0
27250 DATA 0,0,48,4,20,36,52,0,0,32,32,48,38,38,48,0,0,0,20,32,32,32,20,0,0,4,4,20,38,38,20,0,0,0,16,38,54,32,20,0
27260 DATA 0,4,16,16,54,16,16,0,0,0,16,38,38,20,4,48,0,32,32,48,38,38,38,0,0,16,0,48,16,16,52,0
27270 DATA 0,16,0,16,16,16,16,48,0,32,32,38,48,48,38,0,0,48,16,16,16,16,52,0,0,0,38,52,52,38,38,0,0
27280 DATA 0,48,38,38,38,38,0,0,0,16,38,38,38,16,0,0,0,48,38,38,48,32,32,0,0,20,38,38,20,4,4,0,0,48,38,32,32,32,0
27290 DATA 0,0,20,32,48,4,48,0,0,16,16,16,52,16,20,0,0,0,38,38,38,38,20,0,0,0,38,38,38,16,16,0,0,0,38,38,52,52,38
27300 DATA 0,0,0,38,38,16,38,38,0,0,0,38,38,38,52,4,48,0,0,52,4,16,32,52,0
27350 DATA 0,16,36,36,52,36,16,0
27355 DATA 0,4,20,36,4,4,4,0,0,16,36,4,16,32,52,0,0,48,4,16,4,4,48,0,0,4,20,36,36,52,4,0,0,52,32,48,4,36,16,0
27360 DATA 0,16,36,32,48,36,16,0,0,52,4,4,16,16,32,0,0,16,36,16,36,36,16,0,0,16,36,20,4,36,16,0,0,16,36,36,52,36
27450 DATA 0,0,0,0,0,0,0,0,4,16,48,4,20,36,52,0,0,0,0,0,0,0,0,0,36,20,20,32,32,32,20,0,36,20,4,20,38,38,16,0
27460 DATA 4,16,20,36,52,32,20,0,36,16,20,36,52,32,20,0,5,16,33,36,36,33,16,5,48,4,33,1,1,33,4,48
27465 DATA 4,16,0,48,16,16,52,0
27470 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,16,48,36,36,36,36,0
27480 DATA 4,16,16,36,36,36,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,16,48,36,32,32,32,0,36,16,20,32,48,4,48,0
27490 DATA 0,17,20,16,52,16,20,0,16,16,36,36,36,36,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
27500 DATA 4,16,36,36,36,52,4,48,36,16,52,4,16,32,52,0,36,16,52,4,16,32,52,0,0
27510 DATA 0,0,16,52,16,16,0,0,0,0,16,16,52,16,0,0,0,0,0,16,53,16,0,0,0,0,0,4,53,4,0
30000 REM
30010 S=0:RESTORE 30100
30020 FOR A=1536 TO 1746:READ D:POKE A,D:S=S+D:NEXT A:RETURN
30030 IF S<>25816 THEN ? "Data error !":STOP
30100 DATA 104,104,133,209,104,133,208,104,104,133,210,104,104,133
30110 DATA 214,169,0,133,211,133,205,133,213,165,92,133,216,165,91
30120 DATA 102,216,106,102,216,106,133,212,165,212,201,80,176,103
30130 DATA 106,102,213,165,94,133,203,165,95,133,204,160,0,132,207
30140 DATA 164,211,177,208,41,127,201,96,176,11,201,32,176,4,9,64
30150 DATA 208,3,56,233,32,10,10,38,207,10,38,207,133,206,24,165,207
30160 DATA 109,244,2,133,207,162,8,160,0,177,206,36,214,16,3,32,147
30170 DATA 6,32,191,6,36,214,80,3,32,191,6,230,206,202,208,230,230
30180 DATA 212,36,214,16,6,36,213,48,4,16,4,230,212,230,205,230,211
30190 DATA 198,210,208,147,96,133,215,169,0,133,216,160,3,185,183
30200 DATA 6,36,215,240,7,185,187,6,5,216,133,216,136,16,239,165,216
30210 DATA 36,213,48,4,10,10,10,10,96,1,4,16,32,1,2,4,8,72,164,205
30220 DATA 17,203,145,203,24,165,203,105,40,133,203,144,2,230,204,104,96
32630 FOR K=57344 TO 58368:POKE 25600+(K-57344),PEEK(K):NEXT K
References
Listing downloads
Copyright holder
