  100 PROGRAM "APFELMAN.BAS"
  110 WHEN EXCEPTIONUSEDATERR
  120   SET STATUSOFF
  130   CLEAR SCREEN
  140   SET VIDEOMODE1
  150   SET VIDEOCOLOR1
  160   SET VIDEOX40
  170   SET VIDEOY23
  180   OPEN #101:"video:"
  190   LET C1=0:LET C2=RGB(0,0,1):LET C3=RGB(1,0,0):LET C4=RGB(1,1,0)
  200   CALL TITEL
  210   LET A$=""
  220   DO UNTILA$<>""
  230     LET A$=INKEY$
  240   LOOP 
  250   SELECT CASEA$
  260   CASE "4"
  270     GOSUB  1020
  280   CASE "1"
  290     GOSUB  480
  300   CASE "2"
  310     GOSUB  580
  320   CASE "3"
  330     GOSUB  760
  340   CASE "5"
  350     GOSUB  1090
  360   CASE "6"
  370     GOSUB  1190
  380   CASE ELSE
  390     SOUND PITCH10,DURATION10
  400     GOTO  210
  410   END SELECT 
  420   DISPLAY #1:AT1FROM1TO20
  430   CLEAR #102
  440   DISPLAY #102:AT21FROM1TO4
  450   CLEAR #102
  460   GOTO  210
  470   END 
  480   ! UNTERPROGRAMM LADEN
  490   DISPLAY #102:AT21FROM1TO4
  500   CLEAR TEXT
  510   INPUT AT1,1,PROMPT"Dateinamen ?:":DAT$
  520   EXT "vload ""&DAT$&"""
  530   DISPLAY #101:AT1FROM2TO23
  540   PRINT AT4,1:"Taste drücken -->  Menue"
  550   DO 
  560   LOOP WHILEINKEY$=""
  570   RETURN  ! ENDE LADEN
  580   ! UNTERPROGRAMM EFFEKTE
  590   CLEAR #102
  600   DISPLAY #102:AT24FROM1TO1
  610   DISPLAY #101:AT1FROM2TO23
  620   PRINT AT1,1:" Taste drücken  -->  Menue"
  630   DO 
  640     SET PALETTEC1,C2,C3,C4
  650     CALL WARTEN
  660     SET PALETTEC1,C4,C2,C3
  670     CALL WARTEN
  680     SET PALETTEC1,C3,C4,C2
  690     CALL WARTEN
  700   LOOP WHILEINKEY$=""
  710   RETURN  !ENDE EFFEKTE
  720   DEF WARTEN
  730     FOR I=1TO45
  740     NEXT 
  750   END DEF 
  760   ! UNTERPROGRAMM FARBAUSWAHL
  770   DISPLAY #102:AT20FROM1TO5
  780   CLEAR #102
  790   PRINT AT2,1:"1--> FARBE 1  2--> FARBE 2":PRINT AT3,1:"3--> FARBE 3  4--> FARBE 4":PRINT AT4,1:" SPACE -->  MENUE             "
  800   DISPLAY #101:AT1FROM2TO21
  810   DO 
  820     LET A$=INKEY$
  830     SELECT CASEA$
  840     CASE "1"
  850       LET C1=C1+4
  860       IF C1>255THENLET C1=0
  870     CASE "2"
  880       LET C2=C2+4
  890       IF C2>255THENLET C2=4
  900     CASE "3"
  910       LET C3=C3+4
  920       IF C3>255THENLET C3=9
  930     CASE "4"
  940       LET C4=C4+4
  950       IF C4>255THENLET C4=11
  960     CASE ELSE
  970     END SELECT 
  980     SET PALETTEC1,C2,C3,C4
  990   LOOP UNTILA$=" "
 1000   RETURN  ! ENDE FARBAUSWAHL
 1010   ! unterprogramm anschauen
 1020   DISPLAY #101:AT1FROM2TO23
 1030   DISPLAY #102:AT24FROM1TO1
 1040   CLEAR #102
 1050   PRINT AT1,1:"  Taste drücken  --> Menue"
 1060   DO WHILEINKEY$=""
 1070   LOOP 
 1080   RETURN  ! ende anschauen
 1090   ! unterprogramm ausdrucken
 1100   DISPLAY #101:AT1FROM2TO23
 1110   DISPLAY #102:AT23FROM1TO2
 1120   PRINT AT1,1:"  ENTER  -->  Drucken":PRINT AT2,1:"  SPACE  -->  Menue"
 1130   LET A$=""
 1140   DO UNTILA$=CHR$(13)ORA$=" "
 1150     LET A$=INKEY$
 1160   LOOP 
 1170   IF A$=CHR$(13)THENEXT "vdump"
 1180   RETURN 
 1190   ! Unterprogramm berechnen
 1200   DISPLAY #102:AT1FROM1TO24
 1210   CLEAR #102
 1220   PRINT AT1,1:"Neues Bild berechnen":PRINT AT2,1:"===================="
 1230   INPUT AT5,1,PROMPT"Xmin :":XMIN
 1240   INPUT AT7,1,PROMPT"Xmax :":XMAX
 1250   INPUT AT9,1,PROMPT"Ymin :":YMIN
 1260   INPUT AT11,1,PROMPT"Ymax :":YMAX
 1270   INPUT AT13,1,PROMPT"Tiefe:":TMAX
 1280   LET DX=(XMAX-XMIN)/319
 1290   LET DY=(YMAX-YMIN)/199
 1300   LET CX=XMIN:LET CY=YMAX
 1310   DISPLAY #101:AT1FROM1TO23
 1320   FOR ZEILE=0TO799STEP4
 1330     FOR SPALTE=0TO1279STEP4
 1340       LET TIEFE,XWERT,YWERT,XQUAD,YQUAD=0
 1350       DO WHILE(TIEFE<TMAX)AND(XQUAD+YQUAD<8)
 1360         LET YWERT=2*XWERT*YWERT-CY
 1370         LET XWERT=XQUAD-YQUAD-CX
 1380         LET XQUAD=XWERT^2:LET YQUAD=YWERT^2
 1390         LET TIEFE=TIEFE+1
 1400       LOOP 
 1410       IF TIEFE=TMAXTHEN
 1420         LET PCOL=0
 1430       ELSE 
 1440         LET PCOL=MOD(TIEFE,3)+1
 1450       END IF 
 1460       LET CX=CX+DX
 1470       SET INKPCOL
 1480       PLOT SPALTE,ZEILE
 1490     NEXT 
 1500     LET CX=XMIN
 1510     LET CY=CY-DY
 1520   NEXT 
 1530   RETURN  ! Ende berechnen
 1540 END WHEN 
 1550 HANDLER DATERR
 1560   DISPLAY TEXT
 1570   DISPLAY TEXT
 1580   SELECT CASEEXTYPE
 1590   CASE 9207
 1600     LET A$="Datei nicht gefunden !"
 1610   CASE ELSE
 1620     PRINT AT10,2:EXLINE;EXSTRING$(EXTYPE):CLOSE #101:SET STATUSON:STOP 
 1630   END SELECT 
 1640   PRINT AT10,2:A$
 1650   SOUND PITCH10,DURATION100
 1660   WAIT 3
 1670   GOTO  420
 1680 END HANDLER 
 1690 DEF TITEL
 1700   SET VIDEOMODE1
 1710   SET VIDEOCOLOR1
 1720   SET VIDEOX42
 1730   SET VIDEOY20
 1740   OPEN #1:"video:"
 1750   PLOT #1:0,0;1343,0;1343,719;0,719;0,0
 1760   SET #1:INK2
 1770   PRINT #1,AT3,9:"      APFELMÄNNCHEN"
 1780   SET #1:INK3:PRINT #1,AT7,2:"  Bild laden...................<1>":PRINT #1,AT9,2:"  Effekte......................<2>"
 1790   PRINT #1,AT11,2:"  Farbauswahl..................<3>":PRINT #1,AT13,2:"  Bild anschauen...............<4>"
 1800   PRINT #1,AT15,2:"  Bild ausdrucken..............<5>"
 1810   PRINT #1,AT17,2:"  Neues Bild berechnen.........<6>"
 1820   SET #1:INK2:PRINT #1,AT19,5:"  Geben Sie ihre Wahl ein !"
 1830   DISPLAY #1:AT1FROM1TO20
 1840 END DEF 

