200 DIM BOX%(361),HX%(100),HY%(100),FADEN%(5),FUN%(5):CLS:LINE (3,0)-(3,6),1:LINE (0,3)-(6,3),1:GET (0,0)-(7,7),FADEN%:CLS
201 LINE (320,0)-(320,199),1:LINE (0,100)-(639,100),1:ABSCHNITT%=0
210 GOSUB 5000
220 REM Table contents
230 B$=" Type the letter of what you want to do:(c)hange axis, (d)raw function, (w)rite, (p)rint pict., (s)ave picture, (l)ist, (o)ld picture, ":B$=B$+RIGHT$(B$,97):V%=1
235 GOSUB 5600:FLAG%=0
240 FOR A%=V% TO LEN (B$)-78
250 LOCATE 25,1:PRINT MID$(B$,A%,79);
260 A$=INKEY$:IF A$="" THEN 300
270 IF A$="C" OR A$="c" THEN 6000
275 IF A$="D" OR A$="d" THEN 6500
280 IF A$="W" OR A$="w" THEN 7000
285 IF A$="s" OR A$="S" THEN 7500
290 IF A$="L" OR A$="l" THEN 8000
291 IF A$="P" OR A$="p" THEN 4511
292 IF A$="O" OR A$="o" THEN 8500
295 BEEP
300 NEXT
310 V%=70:GOTO 240
999 END
1050 A$=INKEY$:IF A$="" THEN RETURN ELSE IF A$=CHR$ (27) THEN 6760 ELSE RETURN
1100 Y=
1150 A$=INKEY$:IF A$="" THEN RETURN ELSE IF A$=CHR$ (27) THEN 6760 ELSE RETURN
1200 Y=X^4
1250 A$=INKEY$:IF A$="" THEN RETURN ELSE IF A$=CHR$ (27) THEN 6760 ELSE RETURN
1300 Y=X+5
1350 A$=INKEY$:IF A$="" THEN RETURN ELSE IF A$=CHR$ (27) THEN 6760 ELSE RETURN
1400 Y=X^2
1450 A$=INKEY$:IF A$="" THEN RETURN ELSE IF A$=CHR$ (27) THEN 6760 ELSE RETURN
1550 A$=INKEY$:IF A$="" THEN RETURN ELSE IF A$=CHR$ (27) THEN 6760 ELSE RETURN
1650 A$=INKEY$:IF A$="" THEN RETURN ELSE IF A$=CHR$ (27) THEN 6760 ELSE RETURN
1750 A$=INKEY$:IF A$="" THEN RETURN ELSE IF A$=CHR$ (27) THEN 6760 ELSE RETURN
1850 A$=INKEY$:IF A$="" THEN RETURN ELSE IF A$=CHR$ (27) THEN 6760 ELSE RETURN
1950 A$=INKEY$:IF A$="" THEN RETURN ELSE IF A$=CHR$ (27) THEN 6760 ELSE RETURN
4400 REM If no grafics-cart
4405 SCREEN 0,0
4410 PRINT "You don't have a grafics-cart"
4420 PRINT "Do you want to print a grafics?"
4430 GOSUB 5200
4440 IF A$="Y" OR A$="y" THEN 4500 ELSE IF A$="n" OR A$="N" THEN END
4450 BEEP:GOTO 4430
4500 REM Print
4510 FLAG%=1:GOSUB 7510:OPEN NM$ FOR INPUT AS #1
4511 GOSUB 5600:PRINT "What kind of resolution do you want on the printer (1-4,6, H-help)?";
4512 GOSUB 5200
4513 IF A$="H" OR A$="h" THEN 4800
4514 IF ASC (A$)>47 AND ASC (A$)<55 AND ASC (A$)<>53 THEN RES=VAL (A$) ELSE BEEP:GOTO 4512
4515 GOSUB 5600:PRINT "Turn on the printer and press a key";
4516 GOSUB 5200:IF (PEEK(&H410) AND &H30)<>&H30 THEN 4600
4518 LPRINT CHR$ (27);"@"CHR$ (27);"1":OPEN "LPT1:" AS #2:WIDTH #2,255
4519 IF RES=4 THEN 4600
4520 FOR A%=0 TO 202 STEP 7:IF RES <>4 THEN LPRINT CHR$ (13);
4525 LPRINT CHR$ (27);"*";CHR$ (RES);CHR$ (128);CHR$ (2);:FOR B%=0 TO 639
4530 INPUT #1,P%:PRINT #2,CHR$ (P%);
4540 NEXT B%:NEXT A%:GOTO 4420
4600 REM Print with graphics-cart
4610 LPRINT CHR$ (27)"@"CHR$ (27)"1":OPEN "LPT1:" AS #2:WIDTH #2,255
4620 GOSUB 5500:FOR A%=0 TO 6:POT%(6-A%)=2^A%:NEXT A%
5610 IF FLAG%=1 THEN LOCATE 25,1:PRINT " ";ELSE LINE (0,192)-(639,199),0,BF
5620 LOCATE 25,1:RETURN
5700 ESC=0:KOMMA%=0:ZAHL$="":PUFFER%=0
5710 PRINT CHR$ (95);CHR$ (29);
5720 FOR A=0 TO 50:A$=INKEY$:IF A$="" THEN NEXT ELSE 5760
5730 PRINT CHR$ (32);CHR$ (29);
5740 FOR A=0 TO 50:A$=INKEY$:IF A$="" THEN NEXT ELSE 5760
5750 GOTO 5710
5760 IF A$=CHR$ (27) THEN ESC=1:RETURN
5770 AS=ASC (A$):IF (AS<48 OR AS>57) AND AS<>46 AND AS<>13 AND AS<>8 THEN BEEP:GOTO 5710
5780 IF AS>47 AND AS<58 THEN IF PUFFER%<15 THEN ZAHL$=ZAHL$+A$:PUFFER%=PUFFER%+1:PRINT A$;:GOTO 5710 ELSE BEEP:GOTO 5710
5785 IF A$=CHR$ (13) THEN RETURN
5786 IF A$=CHR$ (8) THEN IF PUFFER%<1 THEN BEEP:GOTO 5710 ELSE PUFFER%=PUFFER%-1:B$=RIGHT$ (ZAHL$,1):ZAHL$=LEFT$ (ZAHL$,LEN (ZAHL$)-1):PRINT CHR$(32);CHR$(29);CHR$ (29);:IF B$="." THEN KOMMA%=0:GOTO 5710 ELSE 5710
5790 IF KOMMA%=1 THEN BEEP:GOTO 5710
5800 IF PUFFER%<15 THEN ZAHL$=ZAHL$+CHR$ (46):PUFFER%=PUFFER%+1:PRINT ".";:KOMMA%=1:GOTO 5710
6000 REM Place the axis
6010 GOSUB 5600
6020 PRINT "T-turn axis on and off W-wich field you want to use Esc-main menu";
6030 GOSUB 5200
6040 IF A$="T" OR A$="t" THEN GOSUB 6100:GOTO 6020
6050 IF A$="W" OR A$="w" THEN 6200
6055 IF A$=CHR$(27) THEN 220
6060 BEEP:GOTO 6030
6100 GOSUB 5500
6110 IF ABSCHNITT%=0 THEN LINE (320,0)-(320,199),T:LINE (0,100)-(639,100),T
6112 IF ABSCHNITT%=1 THEN LINE (0,190)-(639,190),T:LINE (10,0)-(10,199),T
6114 IF ABSCHNITT%=2 THEN LINE (629,0)-(629,199),T:LINE (0,190)-(639,190),T
6116 IF ABSCHNITT%=3 THEN LINE (0,10)-(639,10),T:LINE (629,0)-(629,199),T
6118 IF ABSCHNITT%=4 THEN LINE (0,10)-(639,10),T:LINE (10,0)-(10,199),T
6120 IF ABSCHNITT%=5 THEN LINE (0,190)-(639,190),T:LINE (320,0)-(320,199),T
6122 IF ABSCHNITT%=6 THEN LINE (629,0)-(629,199),T:LINE (0,100)-(639,100),T
6124 IF ABSCHNITT%=7 THEN LINE (0,10)-(639,10),T:LINE (320,0)-(320,199),T
6126 IF ABSCHNITT%=8 THEN LINE (10,0)-(10,199),T:LINE (0,100)-(639,100),T
6130 T=T+1:IF T>1 THEN T=0
6140 GOSUB 5000
6150 RETURN
6200 GOSUB 5600:V%=1
6210 B$="Wich field: 0-all num., 1-X and Y are pos., 2-X is neg. y is pos., 3-X and Y is neg., 4-X is pos., Y is neg., 5-Y is pos., 6-X is neg., 7-Y is neg., 8-X is pos., Esc-menu "
6215 B$=B$+LEFT$ (B$,84)
6220 FOR A%=V% TO LEN (B$)-78
6230 LOCATE 25,1:PRINT MID$ (B$,A%,79);
6240 A$=INKEY$:IF A$="" THEN 6310
6250 IF ASC (A$)>47 AND ASC (A$)<57 THEN T=0:GOSUB 6100:ABSCHNITT%=VAL (A$):GOTO 6330
6260 IF A$=CHR$ (27) THEN 6000
6300 BEEP
6310 NEXT
6320 V%=14:GOTO 6220
6330 GOSUB 6100:GOTO 6000
6500 REM Draw functions
6510 GOSUB 5600
6520 PRINT "Esc-menu, wich function do you want to get drawn (0-";H%-1;CHR$(29);") ?";
6530 A$=INKEY$:IF A$="" THEN 6530
6540 IF A$=CHR$(27) THEN 220
6550 IF VAL (A$)<0 OR VAL (A$)>H%-1 THEN BEEP:GOTO 6530
6560 WIFU%=VAL (A$)+1
6570 GOSUB 5600:PRINT "Esc-menu, How many units on the X-axis (0-?)";
6580 GOSUB 5700
6590 IF ESC=1 THEN 6500
6620 XUNIT=VAL (ZAHL$):IF XUNIT=0 THEN XUNIT=320
6630 GOSUB 5600:PRINT "Esc-menu, How many units on the Y-axis (0-?)";
6640 GOSUB 5700
6650 IF ESC=1 THEN 6570
6660 YUNIT=VAL (ZAHL$):IF YUNIT=0 THEN YUNIT=100
6670 GOSUB 5600:PRINT "Esc-menu, shall I connect the points";
6680 GOSUB 5200
6690 IF A$=CHR$ (27) THEN 6630
6691 IF A$="y" OR A$="Y" OR A$="C" OR A$="c" THEN CONNECT%=1:GOTO 6700
6692 IF A$="N" OR A$="n" THEN CONNECT%=0:GOTO 6700
6693 BEEP:GOTO 6680
6700 GOSUB 5600:PRINT "Esc-menu, shall I connect points with X-axis";
6702 GOSUB 5200
6703 IF A$=CHR$ (27) THEN 6670
6704 IF A$="y" OR A$="Y" OR A$="c" OR A$="C" THEN CONAXIS%=1:GOTO 6710
6705 IF A$="N" OR A$="n" THEN CONAXIS%=0:GOTO 6710
6706 BEEP:GOTO 6702
6710 GOSUB 5600:PRINT "Esc-menu, what step ?";
6720 GOSUB 5700:IF ESC=1 THEN 6700
6725 STP=VAL (ZAHL$)
6730 REM Now really draw
6740 ON ABSCHNITT%+1 GOSUB 9800,9820,9820,9820,9820,9840,9860,9840,9860
6745 GOSUB 5500
6746 LOCATE 1,1
6750 ON ABSCHNITT%+1 GOSUB 9000,9050,9100,9150,9200,9250,9300,9350,9400
6760 GOSUB 5000:GOSUB 5600
6770 GOTO 220
7000 REM Write on the screen
7010 GOSUB 5600:PUT (FADX%,FADY%),FADEN%
7020 PRINT "Esc-menu, F7 F8 F9 F10-move, any for writing,^P-draw, ^C-clear screen, ^B-help";
7030 GOSUB 5200
7040 IF A$=CHR$(27) THEN PUT (FADX%,FADY%),FADEN%:GOTO 220
7041 IF A$=CHR$(16) THEN 7430 ELSE IF A$=CHR$ (2) THEN 7920
7042 IF A$=CHR$ (3) THEN 7480 ELSE IF A$=CHR$ (10) THEN OLDX%=FADX%+3:OLDY%=FADY%+3:FOR A=0 TO 1000 STEP 10:SOUND A+200,.01:NEXT:SOUND A+200,.1:GOTO 7030
7050 IF A$=CHR$(17) THEN GOSUB 7100:GOTO 7030 ELSE IF A$=CHR$(12) THEN 7950
7060 IF A$=CHR$(18) THEN GOSUB 7200:GOTO 7030
7070 IF A$=CHR$(19) THEN GOSUB 7300:GOTO 7030
7080 IF A$=CHR$(20) THEN GOSUB 7400:GOTO 7030
7081 IF ASC (A$)<32 THEN BEEP:GOTO 7030
7082 GOSUB 7083:GOTO 7020
7083 PUT (FADX%,FADY%),FADEN%:GOSUB 5600:PRINT A$;:KEY 1,STRING$ (8,17)+A$
7084 IF FADX%>632 OR FADY%>192 THEN BEEP:PUT (FADX%,FADY%),FADEN%:GOTO 7090
7085 GET (0,192)-(7,199),FUN%:GOSUB 5600
7086 GOSUB 5500:PUT (FADX%,FADY%),FUN%:GOSUB 5000
7087 FADX%=FADX%+8:IF FADX%>632 AND FADY%<184 THEN FADX%=0:FADY%=FADY%+8
7088 PUT (FADX%,FADY%),FADEN%,XOR
7090 RETURN
7100 PUT (FADX%,FADY%),FADEN%,XOR:FADX%=FADX%-1:IF FADX%<0 THEN FADX%=632
7110 PUT (FADX%,FADY%),FADEN%
7120 RETURN
7200 PUT (FADX%,FADY%),FADEN%,XOR:FADX%=FADX%+1:IF FADX%>632 THEN FADX%=0
7210 PUT (FADX%,FADY%),FADEN%
7220 RETURN
7300 PUT (FADX%,FADY%),FADEN%,XOR:FADY%=FADY%-1:IF FADY%<0 THEN FADY%=192
7310 PUT (FADX%,FADY%),FADEN%
7320 RETURN
7400 PUT (FADX%,FADY%),FADEN%,XOR:FADY%=FADY%+1:IF FADY%>192 THEN FADY%=0