Dim FILE$(100)
Global AN,FILE$(),FI$,ED$,N,PASS
PATH$=""
FILT$=""
PASS=0

ANF:
Request Wb 
X=320 : Y=200 : ANZ=15
Screen Open 0,640,256,16,Hires
Curs Off : Flash Off : Colour 1,$0 : Cls 0 : Colour Back $AAA
Palette $AAA,,
Colour 17,$EDD : Colour 18,$E00 : Colour 19,0

Bar 0,0 To 639,10 : Ink 1 : Draw 0,10 To 639,10 : Draw 639,10 To 639,0
Ink 1,2 : Text 3,7,"Picture Bench 1.0                            Programmiert von Frank Otto (1995)"
Limit Mouse 129,43 To 447,297
   QUAD2[0,12,128,82]
   QUAD2[131,12,255,82]
   QUAD2[258,12,383,82]
   QUAD2[386,12,511,82]
   QUAD2[514,12,639,82]
   
   QUAD2[0,84,128,154]
   QUAD2[131,84,255,154]
   QUAD2[258,84,383,154]
   QUAD2[386,84,511,154]
   QUAD2[514,84,639,154]
   
   QUAD2[0,156,128,226]
   QUAD2[131,156,255,226]
   QUAD2[258,156,383,226]
   QUAD2[386,156,511,226]
   QUAD2[514,156,639,226]
   
   QUAD2[0,230,639,249]


Locate 1,29 : Paper 0 : Pen 1 : Print "Chip-Ram:";Chip Free
Locate 1, : Print "Fast-Ram:";Fast Free
Locate 61,29 : _DATE$ : Print "Datum: ";Param$
Locate 61,30 : _TIME$ : Print "Zeit:  ";Param$
Locate 34,29 : Print "0 Bilder geladen"
Paper 1 : Pen 2
Menu$(1)=" Projekt "
Menu$(1,1)="Neu      [F1]"
Menu$(1,2)="Ende [Ctrl+C]"
Menu$(2)=" Bilder "
Menu$(2,1)="Laden     [F2]"
Menu$(2,2)="Größe     [F3]"
Menu$(2,3)="Speichern [F4]"
Menu$(2,4)="Drucken   [F5]"
Menu$(3)=" Anzeigen "
Menu Key(1,1) To 80
Menu Key(2,1) To 81
Menu Key(2,2) To 82
Menu Key(2,3) To 83
Menu Key(2,4) To 84
Menu On 


Menu Static(1)
Menu Static(2,1)
Menu Static(1,1)

Menu Base 0,1
LOP:
Do 
   Paper 0 : Pen 1
   Locate 1,29 : Print "Chip-Ram:";Chip Free
   Locate 1, : Print "Fast-Ram:";Fast Free
   Locate 61,29 : _DATE$ : Print "Datum: ";Param$
   Locate 61,30 : _TIME$ : Print "Zeit:  ";Param$
   If Choice
      If Choice(1)=1 and Choice(2)=1 : Menu Off : Goto ANF : End If 
      If Choice(1)=1 and Choice(2)=2 : End : End If 
      If Choice(1)=2 and Choice(2)=1 : Gosub LADEN : End If 
      If Choice(1)=2 and Choice(2)=2 : Gosub GROESSE : End If 
      If Choice(1)=2 and Choice(2)=3 : Gosub SPEICHERN : End If 
      If Choice(1)=2 and Choice(2)=4 : Gosub DRUCKEN : End If 
      If Choice(1)=3 and Choice(2)=1 : Menu Off : Screen Hide 0 : Load Iff F1$,1 : While Mouse Click=0 : Wend : Menu On : Screen Close 1 : Screen Show 0 : End If 
      If Choice(1)=3 and Choice(2)=2 : Menu Off : Screen Hide 0 : Load Iff F2$,1 : While Mouse Click=0 : Wend : Menu On : Screen Close 1 : Screen Show 0 : End If 
      If Choice(1)=3 and Choice(2)=3 : Menu Off : Screen Hide 0 : Load Iff F3$,1 : While Mouse Click=0 : Wend : Menu On : Screen Close 1 : Screen Show 0 : End If 
      If Choice(1)=3 and Choice(2)=4 : Menu Off : Screen Hide 0 : Load Iff F4$,1 : While Mouse Click=0 : Wend : Menu On : Screen Close 1 : Screen Show 0 : End If 
      If Choice(1)=3 and Choice(2)=5 : Menu Off : Screen Hide 0 : Load Iff F5$,1 : While Mouse Click=0 : Wend : Menu On : Screen Close 1 : Screen Show 0 : End If 
      If Choice(1)=3 and Choice(2)=6 : Menu Off : Screen Hide 0 : Load Iff F6$,1 : While Mouse Click=0 : Wend : Menu On : Screen Close 1 : Screen Show 0 : End If 
      If Choice(1)=3 and Choice(2)=7 : Menu Off : Screen Hide 0 : Load Iff F7$,1 : While Mouse Click=0 : Wend : Menu On : Screen Close 1 : Screen Show 0 : End If 
      If Choice(1)=3 and Choice(2)=8 : Menu Off : Screen Hide 0 : Load Iff F8$,1 : While Mouse Click=0 : Wend : Menu On : Screen Close 1 : Screen Show 0 : End If 
      If Choice(1)=3 and Choice(2)=9 : Menu Off : Screen Hide 0 : Load Iff F9$,1 : While Mouse Click=0 : Wend : Menu On : Screen Close 1 : Screen Show 0 : End If 
      If Choice(1)=3 and Choice(2)=10 : Menu Off : Screen Hide 0 : Load Iff F10$,1 : While Mouse Click=0 : Wend : Menu On : Screen Close 1 : Screen Show 0 : End If 
      If Choice(1)=3 and Choice(2)=11 : Menu Off : Screen Hide 0 : Load Iff F11$,1 : While Mouse Click=0 : Wend : Menu On : Screen Close 1 : Screen Show 0 : End If 
      If Choice(1)=3 and Choice(2)=12 : Menu Off : Screen Hide 0 : Load Iff F12$,1 : While Mouse Click=0 : Wend : Menu On : Screen Close 1 : Screen Show 0 : End If 
      If Choice(1)=3 and Choice(2)=13 : Menu Off : Screen Hide 0 : Load Iff F13$,1 : While Mouse Click=0 : Wend : Menu On : Screen Close 1 : Screen Show 0 : End If 
      If Choice(1)=3 and Choice(2)=14 : Menu Off : Screen Hide 0 : Load Iff F14$,1 : While Mouse Click=0 : Wend : Menu On : Screen Close 1 : Screen Show 0 : End If 
      If Choice(1)=3 and Choice(2)=15 : Menu Off : Screen Hide 0 : Load Iff F15$,1 : While Mouse Click=0 : Wend : Menu On : Screen Close 1 : Screen Show 0 : End If 
   End If 
Loop 

LADEN:
On Error Goto ERR
For I=1 To 15
   LAD$="IFF-Bild"+Str$(I)+" laden"
   If I=1
      F1$=Fsel$("","",LAD$)
      If Exist(F1$)=0 : Return : End If 
      Load Iff F1$,1
   End If 
   If I=2
      F2$=Fsel$("","",LAD$)
      If Exist(F2$)=0 : Return : End If 
      Load Iff F2$,1
   End If 
   If I=3
      F3$=Fsel$("","",LAD$)
      If Exist(F3$)=0 : Return : End If 
      Load Iff F3$,1
   End If 
   If I=4
      F4$=Fsel$("","",LAD$)
      If Exist(F4$)=0 : Return : End If 
      Load Iff F4$,1
   End If 
   If I=5
      F5$=Fsel$("","",LAD$)
      If Exist(F5$)=0 : Return : End If 
      Load Iff F5$,1
   End If 
   If I=6
      F6$=Fsel$("","",LAD$)
      If Exist(F6$)=0 : Return : End If 
      Load Iff F6$,1
   End If 
   If I=7
      F7$=Fsel$("","",LAD$)
      If Exist(F7$)=0 : Return : End If 
      Load Iff F7$,1
   End If 
   If I=8
      F8$=Fsel$("","",LAD$)
      If Exist(F8$)=0 : Return : End If 
      Load Iff F8$,1
   End If 
   If I=9
      F9$=Fsel$("","",LAD$)
      If Exist(F9$)=0 : Return : End If 
      Load Iff F9$,1
   End If 
   If I=10
      F10$=Fsel$("","",LAD$)
      If Exist(F10$)=0 : Return : End If 
      Load Iff F10$,1
   End If 
   If I=11
      F11$=Fsel$("","",LAD$)
      If Exist(F11$)=0 : Return : End If 
      Load Iff F11$,1
   End If 
   If I=12
      F12$=Fsel$("","",LAD$)
      If Exist(F12$)=0 : Return : End If 
      Load Iff F12$,1
   End If 
   If I=13
      F13$=Fsel$("","",LAD$)
      If Exist(F13$)=0 : Return : End If 
      Load Iff F13$,1
   End If 
   If I=14
      F14$=Fsel$("","",LAD$)
      If Exist(F14$)=0 : Return : End If 
      Load Iff F14$,1
   End If 
   If I=15
      F15$=Fsel$("","",LAD$)
      If Exist(F15$)=0 : Return : End If 
      Load Iff F15$,1
   End If 
   Screen 0 : Get Palette 1
   If I=1 Then Zoom 1,0,0,X,Y To 0,1,23,128,82 : Locate 34,29 : Print "1 Bild geladen  "
   If I=2 Then Zoom 1,0,0,X,Y To 0,132,23,255,82 : Locate 34,29 : Print "2 Bilder geladen"
   If I=3 Then Zoom 1,0,0,X,Y To 0,259,23,383,82 : Locate 34,29 : Print "3 Bilder geladen"
   If I=4 Then Zoom 1,0,0,X,Y To 0,387,23,511,82 : Locate 34,29 : Print "4 Bilder geladen"
   If I=5 Then Zoom 1,0,0,X,Y To 0,516,23,639,82 : Locate 34,29 : Print "5 Bilder geladen"
   If I=6 Then Zoom 1,0,0,X,Y To 0,1,95,128,154 : Locate 34,29 : Print "6 Bilder geladen"
   If I=7 Then Zoom 1,0,0,X,Y To 0,132,95,255,154 : Locate 34,29 : Print "7 Bilder geladen"
   If I=8 Then Zoom 1,0,0,X,Y To 0,259,95,383,154 : Locate 34,29 : Print "8 Bilder geladen"
   If I=9 Then Zoom 1,0,0,X,Y To 0,387,95,511,154 : Locate 34,29 : Print "9 Bilder geladen"
   If I=10 Then Zoom 1,0,0,X,Y To 0,516,95,639,154 : Locate 34,29 : Print "10 Bilder geladen"
   If I=11 Then Zoom 1,0,0,X,Y To 0,1,167,128,226 : Locate 34,29 : Print "11 Bilder geladen"
   If I=12 Then Zoom 1,0,0,X,Y To 0,132,167,255,226 : Locate 34,29 : Print "12 Bilder geladen"
   If I=13 Then Zoom 1,0,0,X,Y To 0,259,167,383,226 : Locate 34,29 : Print "13 Bilder geladen"
   If I=14 Then Zoom 1,0,0,X,Y To 0,387,167,511,226 : Locate 34,29 : Print "14 Bilder geladen"
   If I=15 Then Zoom 1,0,0,X,Y To 0,516,167,639,226 : Locate 34,29 : Print "15 Bilder geladen"
   Screen Close 1
   Colour Back $0
   M=0
   Do 
      Inc M
      If I=1 Then B$=Right$(F1$,M)
      If I=2 Then B$=Right$(F2$,M)
      If I=3 Then B$=Right$(F3$,M)
      If I=4 Then B$=Right$(F4$,M)
      If I=5 Then B$=Right$(F5$,M)
      If I=6 Then B$=Right$(F6$,M)
      If I=7 Then B$=Right$(F7$,M)
      If I=8 Then B$=Right$(F8$,M)
      If I=9 Then B$=Right$(F9$,M)
      If I=10 Then B$=Right$(F10$,M)
      If I=11 Then B$=Right$(F11$,M)
      If I=12 Then B$=Right$(F12$,M)
      If I=13 Then B$=Right$(F13$,M)
      If I=14 Then B$=Right$(F14$,M)
      If I=15 Then B$=Right$(F15$,M)
      If Left$(B$,1)="/" Then Exit 
   Loop 
   If I=1 Then Ink 1,0 : B$=Left$(B$,16) : Text 4,20,B$-"/"
   If I=2 Then Ink 1,0 : B$=Left$(B$,16) : Text 135,20,B$-"/"
   If I=3 Then Ink 1,0 : B$=Left$(B$,16) : Text 262,20,B$-"/"
   If I=4 Then Ink 1,0 : B$=Left$(B$,16) : Text 390,20,B$-"/"
   If I=5 Then Ink 1,0 : B$=Left$(B$,16) : Text 518,20,B$-"/"
   If I=6 Then Ink 1,0 : B$=Left$(B$,16) : Text 4,92,B$-"/"
   If I=7 Then Ink 1,0 : B$=Left$(B$,16) : Text 135,92,B$-"/"
   If I=8 Then Ink 1,0 : B$=Left$(B$,16) : Text 262,92,B$-"/"
   If I=9 Then Ink 1,0 : B$=Left$(B$,16) : Text 390,92,B$-"/"
   If I=10 Then Ink 1,0 : B$=Left$(B$,16) : Text 518,92,B$-"/"
   If I=11 Then Ink 1,0 : B$=Left$(B$,16) : Text 4,164,B$-"/"
   If I=12 Then Ink 1,0 : B$=Left$(B$,16) : Text 135,164,B$-"/"
   If I=13 Then Ink 1,0 : B$=Left$(B$,16) : Text 262,164,B$-"/"
   If I=14 Then Ink 1,0 : B$=Left$(B$,16) : Text 390,164,B$-"/"
   If I=15 Then Ink 1,0 : B$=Left$(B$,16) : Text 518,164,B$-"/"
   Paper 1 : Pen 2
   If I<11
      If I=10 : Menu$(3,I)=B$-"/"+" [ 0]" : End If 
      If I=10=0 : Menu$(3,I)=B$-"/"+" ["+Str$(I)+"]" : End If 
      Menu Key(3,I) To I
      Menu On 
   End If 
   If I>10
      Menu$(3,I)=B$-"/"+" [F"+Str$(I-5)+"]"
      Menu Key(3,I) To I+74
      Menu On 
   End If 
   Paper 0 : Pen 1
Next 
Menu Static(3,1)
Return 


GROESSE:
Wind Save 
Menu Off 
Wind Open 1,10,14,30,4,5 : Curs On 
Input "Größe X: ";X
Input "Größe Y: ";Y
Wind Close 
Menu On 
Return 

SPEICHERN:
Screen Open 1,640,256,16,Hires : Flash Off : Curs Off : Get Palette 0
Screen Copy 0,0,12,640,246 To 1,0,0
Ink 0 : Bar 0,216 To 640,256
F$=Fsel$("","","IFF-Bild speichern")
If F$="" Then Screen Close 1 : Return 
Save Iff F$,1
Screen Close 1
Return 

DRUCKEN:
Locate 29,30 : Print "Drucker an und on-line? (J/N)"
Do 
   If Inkey$="j" Then Exit 
   If Inkey$="n" Then Locate 29,30 : Cline 29 : Return 
Loop 
Screen Open 1,640,256,16,Hires : Flash Off : Curs Off : Get Palette 0
Screen Copy 0,0,12,640,246 To 1,0,0
Ink 0 : Bar 0,216 To 640,256
Printer Open 
Printer Dump 
Screen Close 1
Return 

Procedure QUAD[X,Y,X1,Y1]
   Ink 2 : Draw X,Y To X1,Y
   Ink 2 : Draw X,Y To X,Y1
   Ink 3 : Draw X,Y1 To X1,Y1
   Ink 3 : Draw X1,Y To X1,Y1
End Proc
Procedure QUAD2[X,Y,X1,Y1]
   Ink 3 : Draw X,Y To X1,Y
   Ink 3 : Draw X,Y To X,Y1
   Ink 2 : Draw X,Y1 To X1,Y1
   Ink 2 : Draw X1,Y To X1,Y1
End Proc
Procedure _DATE$
   '
   ' Call DOS DateStamp function
   T$=Space$(12)
   Dreg(1)=Varptr(T$)
   RIEN=Doscall(-192)
   NJ=Leek(Varptr(T$))
   '
   ' Find this year's first day 
   A=1978 : JOUR=7
   Do 
      BIS=0 : If(A and 3)=0 : BIS=1 : End If 
      Exit If NJ-365-BIS<0
      Add JOUR,1+BIS : If JOUR>7 : Add JOUR,-7 : End If 
      Add NJ,-365-BIS
      Inc A
   Loop 
   '
   ' Find month 
   M=1
   Do 
      Read N
      Exit If NJ-N<0
      Add NJ,-N : Inc M
   Loop 
   Inc NJ
   '
   ' Fabrique la chaine 
      J$=Mid$(Str$(NJ),2) : If Len(J$)<2 : J$="0"+J$ : End If 
      M$=Mid$(Str$(M),2) : If Len(M$)<2 : M$="0"+M$ : End If 
      A$=Mid$(Str$(A),2)
      DATE$=J$+"."+M$+"."+A$
   '
   ' Length of each month 
   Data 31,28+BIS,31,30,31,30,31,31,30,31,30,31
   '
End Proc[DATE$]
Procedure _TIME$
   '
   ' Call DOS function
   T$=Space$(12)
   Dreg(1)=Varptr(T$)
   RIEN=Doscall(-192)
   MN=Leek(Varptr(T$)+4)
   SEC=Leek(Varptr(T$)+8)
   '
   ' Minutes calculation
   H=MN/60 : H$=Mid$(Str$(H),2) : If Len(H$)<2 : H$="0"+H$ : End If 
   M=MN mod 60 : M$=Mid$(Str$(M),2) : If Len(M$)<2 : M$="0"+M$ : End If 
   '
   ' Seconds calculation  
   S=SEC/50 : S$=Mid$(Str$(S),2) : If Len(S$)<2 : S$="0"+S$ : End If 
   '
   ' Final string 
   TIME$=H$+":"+M$+":"+S$
   '
End Proc[TIME$]

ERR:
Locate 38,30 : Print "Fehler!"
Resume LOP
