' ' AIFFpaint V1.42 ' ------------------ ' ( 1 MegaByte ) ' ' 27/01/1994 ' ' Volker Stepprath ' http://www.testaware.de.tp ' ' AIFFpaint V1.42 is full public domain ' If you have good ideas for AIFFpaint, you can change it like you need it ! ' But please send me the new version of AIFFpaint VX.xx ! ( Thanx ) ' ' ' Please read the AIFFpaint.Doc for more informations about this program ! ' ' History: V1.00 * 92 / V1.42 * 94 ' ' ' AIFFpaint V1.42 ©1994 by Testaware ' Set Buffer 15 Close Editor Close Workbench Request Off ' DEV$=Dir$ ' If Fast Free+Chip Free<300000 Screen Open 0,320,200,8,Lowres Curs Off Hide Cls 0 Pen 3 Paper 0 Locate ,11 Centre "NOT ENOUGH MEMORY !" While Mouse Key=0 and Asc(Inkey$)=0 Wend Request On End End If ' Unpack 16 To 1 Screen Display 1,128,246,,51 Get Cblock 1,0,52,200,78 Erase 16 ' Default Palette ,$FFF,$55F,$F80 ' Screen Open 2,320,16,64,Lowres Flash Off Cls 0 Screen Display 2,128,232,, ' Screen Open 0,320,200,32,Lowres Flash Off Cls 0 Gr Writing 0 Limit Mouse ' Dim DEFFARBE(63),RESFARBE(63),LSFILE$(150),LFONT$(150),DMASK(3) Global DEFFARBE(),RESFARBE(),LSFILE$(),LFONT$(),DMASK(),FARBE1,FARBE2 Global DEV$,FILE$,FILEANZ#,FY#,FX#,FYX#,FPOS,FONTANZ,SFONT,DFONT$ Global INDEX1,INDEX2,SCD,SCH,SCW,SCC,SCM,SCL,MALART,STATUS,COMPRESS Global GBOB,WBOB,HBOB,PBOB,ABOB,EBOB,XBB,YBB,SBOB,NBOB,BBOB Global GICO,PICO,NICO,BICO,XIC,YIC,SC0X,SC0Y,E,LINE$,PATTERN ' FARBE1=$FFF MALART=1 INDEX1=1 GBOB=1 WBOB=32 HBOB=32 SBOB=6 GICO=1 DMASK(0)=1 ' SCD=246 SCH=Screen Height SCW=Screen Width SCC=Screen Colour SCM=0 SCL=0 COMPRESS=1 ' For I=0 To 31 DEFFARBE(I)=Colour(I) Next ' LINE$="1111111111111111" ' Change Mouse 2 Limit Mouse 128,42 To X Hard(0,SCW),Y Hard(0,SCH) Get Block 1,0,0,Screen Width,Screen Height ' Do MENU MAIN Loop ' Procedure MAIN MAIN: Screen 0 : Limit Mouse 128,42 To SCW+127,SCH+41 On Error Proc FEHLER Do Clear Key : A$="" : N=0 : MK=0 : Screen 0 If MALART=13 Then Get Block 1,0,0,Screen Width,Screen Height : Gosub MA13 Limit Mouse While MK=0 and N=0 If Scin(X Mouse,Y Mouse)>0 Then Pop Proc N=Asc(Upper$(Inkey$)) : MK=Mouse Key If N<>0 If N=77 : MALART=1 : End If : Rem -M If N=68 : MALART=2 : End If : Rem -D If N=76 : MALART=3 : End If : Rem -L If N=83 : MALART=4 : End If : Rem -S If N=82 : MALART=5 : End If : Rem -R If N=75 : MALART=6 : End If : Rem -K If N=79 : MALART=7 : End If : Rem -O If N=69 : MALART=8 : End If : Rem -E If N=71 : MALART=9 : End If : Rem -G If N=70 : MALART=10 : End If : Rem -F If N=84 : MALART=11 : End If : Rem -T If N=86 : MALART=12 : End If : Rem -V If N=67 : MALART=13 : Get Block 1,0,0,Screen Width,Screen Height : Gosub MA13 : End If : Rem -C If N=85 : Put Block 1,0,0 : End If : Rem -U If N=81 : Cls 0 : End If : Rem -Q If N=80 Screen To Front 2 : Screen Show 2 : Screen 2 : N=0 : MK=0 While N=0 N=Asc(Upper$(Inkey$)) MK=Mouse Key If MK X=X Screen(X Mouse) : Y=Y Screen(Y Mouse) If MK=2 : INDEX2=Point(X,Y) Else INDEX1=Point(X,Y) : End If FARBE1=Colour(INDEX1) : FARBE2=Colour(INDEX2) Screen 1 : Colour 3,FARBE1 : Colour 4,FARBE2 : Screen 2 End If Wend Screen To Back 2 : Screen Hide 2 : Screen 0 : Ink INDEX1,INDEX2 : N=0 : MK=0 : Goto MAIN End If Clear Key End If Multi Wait Wend If N>27 and N<32 Repeat If N=28 and SC0X1 : Dec SC0X : End If If N=30 and SC0Y>0 : Dec SC0Y : End If If N=31 and SC0Y0 : Wend Gosub XYKREUZ While Mouse Key X=X Screen(X Mouse) : Y=Y Screen(Y Mouse) Box XX,YY To X,Y While X=X Screen(X Mouse) and Y=Y Screen(Y Mouse) : Wend Put Block 1,0,0 Wend Box XX,YY To X,Y Return ' MA6: While Mouse Key<>0 : Wend Gosub XYKREUZ While Mouse Key X=X Screen(X Mouse) : Y=Y Screen(Y Mouse) If X<=XX Then X=XX+1 If Y<=YY Then Y=YY+1 Bar XX,YY To X,Y While X=X Screen(X Mouse) and Y=Y Screen(Y Mouse) : Wend Put Block 1,0,0 Wend Bar XX,YY To X,Y Return ' MA7: Gosub XYKREUZ Repeat X=X Screen(X Mouse)-XX If X<1 Then X=1 Circle XX,YY,X While X=X Screen(X Mouse)-XX : Wend Put Block 1,0,0 Until Mouse Key=0 Circle XX,YY,X Return ' MA8: Gosub XYKREUZ Repeat X=X Screen(X Mouse)-XX : Y=Y Screen(Y Mouse)-YY If X<1 Then X=1 If Y<1 Then Y=1 Ellipse XX,YY,X,Y While X=X Screen(X Mouse)-XX and Y=Y Screen(Y Mouse)-YY : Wend Put Block 1,0,0 Until Mouse Key=0 Ellipse XX,YY,X,Y Return ' MA9: Repeat X=X Screen(X Mouse)-Rnd(10) : Y=Y Screen(Y Mouse)-Rnd(10) For I=1 To 10 : Plot X+Rnd(10),Y+Rnd(10) : Next Until Mouse Key=0 Return ' MA10: Paint X Screen(X Mouse),Y Screen(Y Mouse),1 Return ' MA11: Gosub XYKREUZ Repeat N1=0 : While N1=0 : N1=Asc(Inkey$) : Wend If N1=8 and Len(N$)>0 : N$=Left$(N$,Len(N$)-1) : Put Block 1,0,0 : End If If N1>31 : N$=N$+Chr$(N1) : End If Text XX,YY+3,N$ : Clear Key Until N1=13 N$="" Return ' MA12: Repeat : Until Mouse Key=0 : While Inkey$<>"" : Wend N1=0 : XLMAX=SCW-64 : YLMAX=SCH-30 : Ink 1 Repeat X=Min(XLMAX,X Screen(X Mouse)) : Y=Min(YLMAX,Y Screen(Y Mouse)) : X=Max(0,X) : Y=Max(0,Y) Box X,Y To X+64,Y+30 : A=0 While X=X Screen(X Mouse) and Y=Y Screen(Y Mouse) and Mouse Key=0 : Wend Put Block 1,0,0 Until Mouse Key<>0 Screen Open 3,320,152,SCC,0 : Flash Off : Cls 0 : Get Palette 0 : LSCD=152 : Screen Display 3,128,152,,150 Change Mouse 3 : Zoom 0,X,Y,X+64,Y+30 To 3,0,0,320,150 : Change Mouse 2 Get Block 3,0,0,320,150 : Ink INDEX1 Repeat Clear Key : X2=X Screen(X Mouse)/5*5 : Y2=Y Screen(Y Mouse)/5*5 : SC=Scin(X Mouse,Y Mouse) : N1=0 : MK=0 Bar X2,Y2 To X2+4,Y2+4 While X2=X Screen(X Mouse)/5*5 and Y2=Y Screen(Y Mouse)/5*5 and MK=0 and N1=0 : N1=Asc(Inkey$) : MK=Mouse Key : Wend If SC=3 and MK<>0 and N1=0 If MK=2 : INDEX=INDEX2 Else INDEX=INDEX1 : End If Screen 0 : Ink INDEX : Screen 3 : Ink INDEX While Mouse Key<>0 and Scin(X Mouse,Y Mouse)=3 X2=X Screen(X Mouse)/5*5 : Y2=Y Screen(Y Mouse)/5*5 Bar X2,Y2 To X2+4,Y2+4 : Get Block 3,0,0,320,150 Screen 0 : Plot X2/5+X,Y2/5+Y : Screen 3 Wend End If Put Block 3,0,0 If N1<>0 If N1=30 and LSCD>-112 : Add LSCD,-8 : Screen Display 3,128,LSCD,, : End If If N1=31 and LSCD<304 : Add LSCD,8 : Screen Display 3,128,LSCD,, : End If End If Screen 3 : Ink INDEXA Until N1=32 Screen Close 3 : Del Block 3 : Screen 0 Return ' MA13: If STATUS=0 Gosub XYKREUZ : Ink 1 While Mouse Key X=X Screen(X Mouse) : Y=Y Screen(Y Mouse) If X<=XX : X=XX+1 : End If If Y<=YY : Y=YY+1 : End If Box XX,YY To X,Y While X=X Screen(X Mouse) and Y=Y Screen(Y Mouse) : Wend Put Block 1,0,0 Wend Get Block 2,XX,YY,X-XX,Y-YY,1 : STATUS=1 End If If STATUS Do X=X Screen(X Mouse) : Y=Y Screen(Y Mouse) Put Block 1,0,0 : Put Block 2,X,Y While X=X Screen(X Mouse) and Y=Y Screen(Y Mouse) and Mouse Key=0 A$=Inkey$ If A$<>"" N=Scancode : Clear Key If N=64 N=MALART Put Block 1,0,0 : MENU If N<>MALART : Goto MAIN Else Put Block 2,X Screen(X Mouse),Y Screen(Y Mouse) : End If End If If N=21 : Vrev Block 2 : Hrev Block 2 : End If If N=49 : Vrev Block 2 : End If If N=50 : Hrev Block 2 : End If If N=53 : Put Block 1,0,0 : STATUS=0 : Goto MA13 : End If Put Block 1,0,0 : Put Block 2,X Screen(X Mouse),Y Screen(Y Mouse) End If Wend While Mouse Key<>0 : Get Block 1,0,0,Screen Width,Screen Height : Put Block 1,0,0 : Put Block 2,X,Y : Wend Loop End If Return ' XYKREUZ: While Mouse Key<>0 : Wend : Ink 1,1 Repeat X=X Screen(X Mouse) : Y=Y Screen(Y Mouse) Draw X,0 To X,SCH : Draw 0,Y To SCW,Y While X=X Screen(X Mouse) and Y=Y Screen(Y Mouse) and Mouse Key=0 : Wend Put Block 1,0,0 A$=Inkey$ : If A$=" " : MENU : Goto MAIN : End If Until Mouse Key XX=X : YY=Y : Ink INDEXA,INDEXB Return End Proc Procedure MENU Limit Mouse 128,42 To X Hard(1,640),Y Hard(1,256) Clear Key : Screen To Front 2 : Screen To Front 1 N=320/SCC Screen 2 : For I=0 To SCC : Ink I : Bar I*N,0 To I*N+N-1,12 : Next For I=0 To 31 : RESFARBE(I)=Colour(I) : Next Screen 1 : Gosub MENU_A : Screen Show 1 : Screen Show 2 Do MK=0 While MK=0 and Asc(A$)<>32 A$=Inkey$ MK=Mouse Key If Scin(X Mouse,Y Mouse)=0 Then Screen 0 : Pop Proc Multi Wait Wend X=X Mouse : Y=(Y Mouse) : N=Scin(X,Y) : E=0 If A$=" " Then Screen To Front 0 : Screen 0 : Screen Hide 1 : Screen Hide 2 : Pop Proc If N>0 : Screen N : X=X Screen(X) : Y=Y Screen(Y) : End If If MK>1 and N=2 : INDEX2=Point(X,Y) : FARBE2=Colour(INDEX2) : Screen 1 : Colour 4,FARBE2 : N=0 : End If If N=1 ' If X<221 and Y<7 X=X/28 Add SCD,X*26,64 To 248 Ink 0 : Bar 2,2 To 219,5 : Ink 2 : Bar X*28+2,2 To X*28+22,4 SCD=X*26+64 Screen Display 1,128,SCD,, : Screen Display 2,128,SCD-14,, Y Mouse=X*28+67-(X*2) End If ' If X<220 and Y>8 and Y<36 X=X/28 : Y=(Y-9)/12 : N1=MALART-1 For I=0 To 7 : G[I*28,9,I*28+25,21,0] : G[I*28,23,I*28+25,35,0] : Next If Y=0 G[X*28,9,X*28+25,21,1] : G[140,23,165,35,1] End If If Y=1 and X<>5 G[X*28,23,X*28+25,35,1] If X=4 : G[140,23,165,35,0] Else G[140,23,165,35,1] : End If End If If Y=1 and X=5 G[140,23,165,35,1] G[112,23,137,35,0] If N1=12 : N1=0 : End If If N1>8 : X=N1-8 : G[X*28,23,X*28+25,35,1] : Y=1 Else X=N1 : G[X*28,9,X*28+25,21,1] : Y=0 : End If End If MALART=X+1+Y*8 If MALART=15 MALART=N1+1 : Screen 0 : Put Block 1,0,0 : Wait 10 : Screen 1 : G[168,23,193,35,0] If MALART>8 : Add N1,-8 : G[N1*28,23,N1*28+25,35,1] Else G[N1*28,9,N1*28+25,21,1] : End If End If If MALART=16 MALART=N1+1 : Screen 0 : Get Block 1,0,0,Screen Width,Screen Height : Cls 0 : Wait 10 : Screen 1 : G[196,23,221,35,0] If MALART>8 : Add N1,-8 : G[N1*28,23,N1*28+25,35,1] Else G[N1*28,9,N1*28+25,21,1] : End If End If X=0 : Y=0 : While Mouse Key<>0 : Wend End If ' If Y>37 and Y<50 For I=0 To 4 : G[I*128+1,38,I*128+126,49,0] : Next X=X/128 : G[X*128+1,38,X*128+126,49,1] On X+1 Proc PROMENU,FONTMENU,AMOSBOBMENU,AMOSICONMENU,OPTIONEN G[X*128+1,38,X*128+126,49,0] : Gosub MENU_A X=0 : Y=0 End If ' '* Farbwerte ändern '* ---------------- If X>230 and X<480 and Y>13 and Y<35 Add Y,-12 : Y=Y/8+1 Add X,-227 : X=X/16 N1$=Hex$(X)-"$" N$=Hex$(FARBE1,3)-"$" Mid$(N$,Y,1)=N1$ N$="$"+N$ FARBE1=Val(N$) Gosub MENU_A Screen 0 Colour INDEX1,FARBE1 Screen 2 : Colour INDEX1,FARBE1 Screen 1 : Colour 3,FARBE1 If INDEX1=INDEX2 : Colour 4,FARBE1 : End If End If ' If X>558 and Y<36 If Y<9 G[558,0,639,8,1] Screen 0 : For I=0 To 31 : Colour I,DEFFARBE(I) : Next Screen 2 : Get Palette 0 Wait 10 : Screen 1 : Colour 3,DEFFARBE(INDEX1) : Colour 4,DEFFARBE(INDEX2) : FARBE1=Colour(3) : Gosub MENU_A : G[558,0,639,8,0] End If If Y>8 and Y<18 G[558,9,639,17,1] Screen 0 : For I=0 To 31 : Colour I,RESFARBE(I) : Next Screen 2 : Get Palette 0 Wait 10 : Screen 1 : Colour 3,RESFARBE(INDEX1) : Colour 4,RESFARBE(INDEX2) : FARBE1=Colour(3) : Gosub MENU_A : G[558,9,639,17,0] End If If Y>17 and Y<27 Screen 2 For I=0 To 31 N$=Hex$(Colour(I),3)-"$" N1$=Left$(N$,1) : N2$=Mid$(N$,2,1) : N3$=Right$(N$,1) N1=Val("$"+N1$) : N2=Val("$"+N2$) : N3=Val("$"+N3$) N=N1+N2+N3 : N=Max(1,N) : N=N/3 : N1$=Hex$(N,1)-"$" : N$="" : N$=N1$+N1$+N1$ : N=Val("$"+N$) Colour I,N Next I If X>559 and X<573 : N=$200 : End If If X>573 and X<585 : N=$20 : End If If X>585 and X<603 : N=$2 : End If If X>603 and X<617 : N=$100 : End If If X>617 and X<640 : N=0 : End If For I=0 To 31 : N1=Colour(I) : Add N1,N : N1=Min(4095,N1) : Colour I,N1 : Next I FARBE1=Colour(INDEX1) : FARBE2=Colour(INDEX2) : Screen 0 : Get Palette 2 : Screen 1 : Colour 3,FARBE1 : Colour 4,FARBE2 : Gosub MENU_A End If ' If Y>26 and Y<36 and X>597 G[598,27,638,35,1] LADEFARBEN G[598,27,638,35,0] End If End If End If ' If X>558 and X<597 and Y>26 and Y<36 G[558,27,596,35,1] : N=Colour(3) Repeat : While Mouse Key=0 : Wend : N1=Scin(X Mouse,Y Mouse) : Until N1=2 Screen 2 : N1=Point(X Screen(X Mouse),Y Screen(Y Mouse)) If N1>31 : Add N1,-31 : End If Colour N1,N : Screen 0 : Get Palette 2 : FARBE1=Colour(INDEX1) : FARBE2=Colour(INDEX2) : Screen 1 : Colour 3,FARBE1 : Colour 4,FARBE2 Gosub MENU_A : N=0 : G[558,27,596,35,0] End If ' If N=2 INDEX1=Point(X,Y) : FARBE1=Colour(INDEX1) Screen 1 : Colour 3,FARBE1 Gosub MENU_A End If ' Repeat : Until Mouse Key=0 Loop ' MENU_A: N$=Hex$(FARBE1,3)-"$" N=Varptr(N$) N1=Peek(N) : If N1>64 Then Add N1,-55 Else Add N1,-48 N2=Peek(N+1) : If N2>64 Then Add N2,-55 Else Add N2,-48 N3=Peek(N+2) : If N3>64 Then Add N3,-55 Else Add N3,-48 Ink 0 : Bar 231,14 To 479,17 : Ink 2 : Bar 231,14 To Min(476,N1*16+239),17 Ink 0 : Bar 231,22 To 479,25 : Ink 2 : Bar 231,22 To Min(476,N2*16+239),25 Ink 0 : Bar 231,30 To 479,33 : Ink 2 : Bar 231,30 To Min(476,N3*16+239),33 For I=0 To 15 If I=N1 or I=N2 or I=N3 Then N=1 Else N=0 G[I*16+227,0,I*16+240,10,N] Next I N$="" : If INDEX1<10 Then N$="0"+Str$(INDEX1) Else N$=Str$(INDEX1) Ink 2,0 : Text 533,8,N$-" " : If INDEX1>31 Then Add INDEX1,-31 Return End Proc Procedure PROMENU Ink 0 : Bar 0,52 To 640,164 For I=0 To 21 Read X,Y,X2,Y2,N1,N2,N$ Ink 2,0 : Text N1,N2,N$ : G[X,Y,X2,Y2,0] Next I ' Gosub PROMENU_A LD_SV[384] ' SCW2=SCW : SCH2=SCH : SCC2=SCC : SCM2=SCM : SCL2=SCL ' On Error Proc FEHLER ' Do While Mouse Key=0 : Multi Wait : Wend X=X Screen(X Mouse) : Y=Y Screen(Y Mouse) : E=0 ' If Y>65 and Y<78 '* Load PIC '* -------- If X>0 and X<93 G[0,66,92,77,1] If Len(FILE$)>0 If Exist(FILE$) Open Random 1,FILE$ If E=0 Field 1,20 As N$ Get 1,1 Close 1 End If If Instr(N$,"FORM")>0 Load Iff FILE$,0 Else E=True End If If Instr(N$,"Pac.Pic")>0 and E=True E=0 Load FILE$,15 Unpack 15 To 0 Erase 15 End If Else E=True End If Else E=True End If If E=0 SCW=Screen Width SCH=Screen Height SCC=Min(64,Screen Colour) SC0X=0 SC0Y=0 Get Block 1,0,0,Screen Width,Screen Height Screen 0 N=Screen Base+72 N1=Deek(N) If Btst(2,N1) SCL=Laced Else SCL=0 End If If Btst(15,N1) SCM=Hires Else SCM=Lowres End If For I=0 To SCC-1 RESFARBE(I)=Colour(I) Next I Set Line Val("%"+LINE$) For I=1 To 3 Add N,DMASK(I) Next Gr Writing N Set Pattern PATTERN Screen 2 Get Palette 0 INDEX1=1 INDEX2=0 FARBE1=Colour(INDEX1) FARBE2=Colour(INDEX2) N=320/SCC For I=0 To SCC Ink I : Bar I*N,0 To I*N+N,12 Next Screen 1 Colour 3,FARBE1 Colour 4,FARBE2 Screen To Back 0 Screen Display 1,128,SCD,,51 Screen Display 2,128,SCD-14,, Pop Proc End If Screen 1 G[0,66,92,77,0] End If ' '* Save IFF '* -------- If X>94 and X<166 G[94,66,166,77,1] If Len(FILE$) Screen 0 Save Iff FILE$,COMPRESS SETCOMMENT["IFF-Picture"] Screen 1 End If G[94,66,166,77,0] End If ' '* Compression 0/1 '* --------------- If X>168 and X<186 G[168,66,186,77,1] Add COMPRESS,1,0 To 1 Ink 2 : Text 173,74,Str$(COMPRESS)-" " Wait 10 G[168,66,186,77,0] End If ' '* Save ABK '* -------- If X>188 and X<280 G[188,66,280,77,1] If Len(FILE$) Spack 0 To 15 Save FILE$,15 SETCOMMENT["ABK-Picture"] Erase 15 Screen 1 End If G[188,66,280,77,0] End If ' '* Delete '* ------ If X>282 and X<382 G[282,66,382,77,1] If Len(FILE$) If Exist(FILE$) Kill FILE$ End If Screen 1 End If G[282,66,382,77,0] End If ' If X<382 : X=-1 : Y=-1 : End If End If ' If Y>95 and Y<108 If X>0 and X<127 : SCM=0 : Gosub PROMENU_A : End If If X>127 and X<255 : SCM=$8000 : Gosub PROMENU_A : End If If X>255 and X<383 If SCL=Laced : SCL=0 Else SCL=Laced : End If Gosub PROMENU_A End If End If If Y>109 and Y<122 If X>0 and X<127 : N=83 : I=0 : N1=SCW : Gosub PROMENU_B : SCW=N1 : End If If X>127 and X<255 : N=212 : I=1 : N1=SCH : Gosub PROMENU_B : SCH=N1 : End If If X>255 and X<383 : N=340 : I=3 : N1=SCC : Gosub PROMENU_B : SCC=N1 : End If End If If Y>125 and Y<138 If X>0 and X<127 : G[0,126,126,137,1] : Screen To Front 0 : Screen 0 : Get Block 1,0,0,SCW2,SCH2 : Hrev Block 1 : Put Block 1,0,0 : Wait 50 : Screen To Back 0 : Screen 1 : G[0,126,126,137,0] : End If If X>127 and X<255 : G[128,126,254,137,1] : Screen To Front 0 : Screen 0 : Get Block 1,0,0,SCW2,SCH2 : Vrev Block 1 : Put Block 1,0,0 : Wait 50 : Screen To Back 0 : Screen 1 : G[128,126,254,137,0] : End If If X>255 and X<383 : G[256,126,382,137,1] : Screen To Front 0 : Screen 0 : Get Block 1,0,0,SCW2,SCH2 : Hrev Block 1 : Vrev Block 1 : Put Block 1,0,0 : Wait 50 : Screen To Back 0 : Screen 1 : G[256,126,382,137,0] : End If End If ' '* Use '* --- If Y>151 and Y<164 If X<127 G[1,152,126,163,1] : Wait 20 If SCW<>SCW2 or SCH<>SCH2 or SCC<>SCC2 or SCM<>SCM2 or SCL<>SCL2 If SCM>4 and SCC>15 : SCC=16 : End If Screen Open 3,SCW2,SCH2,SCC2,SCM2 Flash Off Get Palette 0 Screen 3 Cls 0 Screen Copy 0,0,0,SCW2,SCH2 To 3,0,0 If E=0 Screen Close 0 Screen Open 0,SCW,SCH,SCC,SCM+SCL Flash Off Get Palette 3 Cls 0 Screen Copy 3,0,0,SCW2,SCH2 To 0,0,0 Screen Close 3 : SC0X=0 : SC0Y=0 : SCC=Min(64,SCC) Screen 2 : N=320/SCC For I=0 To SCC Ink I : Bar I*N,0 To I*N+N,12 Next FARBE1=Colour(1) FARBE2=Colour(0) INDEX1=1 INDEX2=0 Screen 1 Colour 3,FARBE1 Colour 4,FARBE2 Screen 0 Set Line Val("%"+LINE$) For I=1 To 3 Add N,DMASK(I) Next Gr Writing N Set Pattern PATTERN End If Else SCW=SCW2 : SCH=SCH2 : SCC=SCC2 : SCM=SCM2 : SCL=SCL2 End If Screen 0 : N=0 : Set Line Val("%"+LINE$) : For I=1 To 3 : Add N,DMASK(I) : Next : Gr Writing N : Set Pattern PATTERN Screen 1 : Screen Display 1,128,SCD,,51 : Screen Display 2,128,SCD-14,, : Screen To Back 0 : E=0 : Pop Proc End If ' '* About '* ----- If X>127 and X<255 G[128,152,254,163,1] Ink 0 : Bar 383,52 To 640,163 G[384,52,639,163,1] Put Cblock 1,416,55 Ink 1 : Text 430,89,"© 92/94 by Testaware" Text 482,103,"Author:" Text 446,113,"Volker Stepprath" Text 446,121,"Tegeler Str. 7" Text 446,129,"40789 Monheim" Text 446,137,"G E R M A N Y" Ink 2 : Text 414,158,"Available memory:"+Str$(Chip Free+Fast Free) Wait 50 While Mouse Key<>0 : Wend While Mouse Key=0 : Wend G[128,152,254,163,0] LD_SV[384] End If ' '* Exit AIFFpaint '* -------------- If X>255 and X<383 G[256,152,382,163,1] Wait 40 Erase 1 Erase 2 Del Block 1 Screen Close 0 Screen Close 2 Fade 1 : Wait 30 Screen Close 1 If Exist("SYS:") : Dir$="SYS:" : End If Wait 40 Request On End End If End If ' If X>383 and Y>52 Then SELECT[384] Repeat : Until Mouse Key=0 : Wait 10 Loop Pop Proc ' PROMENU_A: Ink 3 N$=Str$(SCW)-" " : N=Len(N$) : N1$=String$("0",4-N) : NA$=N1$+N$ N$=Str$(SCH)-" " : N=Len(N$) : N1$=String$("0",4-N) : NB$=N1$+N$ Screen(0) : N=Screen Colour : Screen 1 : N$=Str$(N)-" " : N=Len(N$) : N1$=String$("0",4-N) : NC$=N1$+N$ Ink 2 : Text 83,118,NA$ : Text 212,118,NB$ : Text 340,118,NC$ If SCM<5 Then N=1 : N1=0 Else N=0 : N1=1 G[0,96,126,107,N] : G[128,96,254,107,N1] If SCL=Laced Then G[256,96,382,107,1] Else G[256,96,382,107,0] Return ' PROMENU_B: G[N-10,110,N+43-I,121,1] : N$="" Repeat Clear Key : N2=0 : While N2=0 : N2=Asc(Inkey$) : Wend Ink 0 : Bar N,111 To N+40,120 : Ink 1 If N2>47 and N2<58 Then N$=N$+Chr$(N2) If N2=8 and Len(N$)>0 Then N$=Left$(N$,Len(N$)-1) Text N,118,N$ Until N2=13 or Len(N$)>3 N3=Val(N$) If I<3 Then Add N3,-(N3 mod 8) If I=3 If N3<2 : N3=2 : End If If N3>2 and N3<5 : N3=4 : End If If N3>4 and N3<9 : N3=8 : End If If N3>8 and N3<17 : N3=16 : End If If N3>16 and N3<33 : N3=32 : End If If N3>32 and N3<65 : N3=64 : End If If N3>64 : N3=4096 : End If End If N$=Str$(N3)-" " If N3=0 : N3=N1 N$=Str$(N3)-" " End If N2=Len(N$) N$=String$("0",4-N2)+N$ Ink 2 : Text N,118,N$ N1=N3 G[N-10,110,N+43-1,121,0] Return ' Data 0,52,382,63,145,60,"Disk Operations" Data 0,66,92,77,15,74,"Load PIC" Data 94,66,166,77,98,74,"Save IFF" Data 168,66,186,77,173,74,Str$(COMPRESS)-" " Data 188,66,280,77,202,74,"Save ABK" Data 282,66,382,77,310,74,"Delete" ' Data 0,82,382,93,155,90,"Screen Format" Data 0,96,126,107,35,104,"Lowres" Data 128,96,254,107,178,104,"Hires" Data 256,96,382,107,282,104,"Interlaced" ' Data 0,110,70,121,18,118,"Width" Data 73,110,126,121,83,118,"" Data 128,110,199,121,140,118,"Height" Data 202,110,254,121,212,118,"" Data 256,110,327,121,263,118,"Colours" Data 330,110,382,121,340,118,"" ' Data 0,126,126,137,12,134,"Flip Screen X" Data 128,126,254,137,140,134,"Flip Screen Y" Data 256,126,382,137,268,134,"Flip Screen Z" Data 0,152,126,163,52,160,"Use" Data 128,152,254,163,174,160,"About" Data 256,152,382,163,263,160,"Exit AIFFpaint" End Proc Procedure FONTMENU Ink 0 : Bar 0,52 To 640,164 G[385,52,400,150,0] : G[402,52,639,150,0] : G[385,152,639,163,0] Gosub FONTMENU_A For I=0 To 2 : G[I*128+1,52,I*128+126,63,0] : G[I*128+1,65,I*128+126,76,0] : Next G[1,78,382,89,0] Ink 2 : For I=0 To 6 : Read X,Y,N$ : Text X,Y,N$ : Next Screen Display 1,128,64,,166 : Screen Display 2,128,50,, SFONT2=SFONT On Error Proc FEHLER Do While Mouse Key=0 : Multi Wait : Wend X=X Screen(X Mouse) : Y=Y Screen(Y Mouse) : A=0 If X>385 and X<640 and Y>51 and Y<148 If X>386 and X<397 and Point(X,Y)=0 Y=Y-54 : Ink 0 : Bar 387,54 To 396,149 : Ink 2 If Y>Y# Y#=Y#+Y2# : A=1 : Inc FONT End If If YFONTANZ-12 : FONT2=FONTANZ-12 : End If For I=0 To 11 : Text 409,60+I*8,LFONT$(I+FONT2) : Next I End If End If If X>406 and X<638 and Y>54 and Y<147 Add Y,-54 : Y=Y/8*8/8 : DFONT$=LFONT$(Y+FONT2) : SFONT=Y+FONT2+1 Ink 1,2 : Text 409,60+Y*8,DFONT$ : Ink 2,0 : Text 394,160,DFONT$ : Wait 20 : Text 409,60+Y*8,DFONT$ End If If X>0 and X<383 and Y>51 and Y<64 X=X/128*128/128 G[X*128+1,52,X*128+126,63,1] If X=0 Get Fonts : FONTANZ=0 Repeat Inc FONTANZ : N$=Left$(Font$(FONTANZ),33) N1$=Right$(N$,3)-" " : N$=Left$(N$,25) : N2$=N$+Space$(3-Len(N1$))+N1$ LFONT$(FONTANZ-1)=N2$ Until N$="" Dec FONTANZ : Gosub FONTMENU_A End If If X=1 Screen 0 : Get Block 1,0,0,Screen Width,Screen Height : Cls 0 : Set Font SFONT : Set Text F4 N=SCW/2-Text Length("A") : Ink INDEX1,0 : Text N,SCH/2-8,"A" : Screen To Front 0 Repeat N$="" : Clear Key While N$="" : N$=Inkey$ : Wend Cls 0 : Text N,SCH/2-8,N$ Until Asc(N$)=13 Screen To Back 0 : Put Block 1,0,0 : Screen 1 End If If X=2 Screen 0 : Set Font SFONT : Set Text F4 : Screen 1 Screen Display 1,128,SCD,,51 : Screen Display 2,128,SCD-14,, : Screen 1 : Pop Proc End If G[X*128+1,52,X*128+126,63,0] End If If X<382 and Y>64 and Y<77 X=X/128 If X=0 : If F1 : F1=0 : I=0 Else F1=1 : I=1 : End If : End If If X=1 : If F2 : F2=0 : I=0 Else F2=2 : I=1 : End If : End If If X=2 : If F3 : F3=0 : I=0 Else F3=4 : I=1 : End If : End If F4=F1+F2+F3 : Screen 0 : Set Text F4 : Screen 1 : G[X*128+1,65,X*128+126,76,I] End If If X>6 and X<383 and Y>77 and Y<90 G[1,78,382,89,1] : Screen 0 : Wait 20 : If SFONT2<>SFONT : SFONT=SFONT2 : Set Font SFONT : End If Screen Display 1,128,SCD,,51 : Screen Display 2,128,SCD-14,, : Screen 1 : Pop Proc End If While Mouse Key<>0 : Wend Loop ' FONTMENU_A: Ink 2 : For I=0 To 11 : Text 409,60+I*8,LFONT$(I) : Next I Y#=96/Max(1,(FONTANZ/12.0)) : Y2#=Y# Ink 0 : Bar 387,54 To 396,148 : Ink 2 : Bar 387,54 To 396,52+Y2# : Y#=Y#-Y2# Text 394,160,DFONT$ Return ' Data 26,60,"Read Fonts",157,60,"Show Font",284,60,"Use Font",30,73,"Underline",175,73,"Bold",296,73,"Italic",179,86,"Use" End Proc Procedure AMOSBOBMENU Ink 0 : Bar 0,52 To 640,164 For I=1 To 30 Read X,Y,X2,Y2,N1,N2,N$ G[X,Y,X2,Y2,0] Ink 2 : Text N1,N2,N$ Next For I=0 To 2 For I2=0 To 2 G[347+I2*12,120+I*4,358+I2*12,123+I*4,0] Next I2 Next I ' LD_SV[384] Gosub ABM_MASK On Error Proc FEHLER ' Do While Mouse Key=0 : Multi Wait : Wend X=X Screen(X Mouse) : Y=Y Screen(Y Mouse) : E=0 ' If X>384 and Y>52 : SELECT[384] : End If ' If X>0 and X<383 and Y>51 and Y<64 X=X/128 : G[X*128+1,52,X*128+126,63,1] If FILE$<>"" '* Bob-Bank einladen '* ----------------- If X=0 Erase 1 Load FILE$ Wait Vbl NBOB=Length(1) GBOB=NBOB+1 PBOB=1 ABOB=1 EBOB=NBOB BBOB=1 Gosub ABM_MASK End If '* Bob-Bank speichern '* ------------------ If X=1 and NBOB Save FILE$,1 If E=0 SETCOMMENT["AMOS-Bobs"] End If End If '* Bob-Bank von Device löschen '* --------------------------- If X=2 Kill FILE$ End If End If Screen 1 : Wait 20 : G[X*128+1,52,X*128+126,63,0] End If ' If X>1 and X<382 and Y>65 and Y<78 X=X/128 : G[X*128+91,66,X*128+126,77,1] If X=0 X2=97 : Y=74 : GBOB2=GBOB : ABOB=1 : BBOB=1 : Gosub ABM If N=0 : N=GBOB2 : End If If N>NBOB+1 : N=NBOB+1 : End If If N<=NBOB : Dec NBOB : Dec PBOB : Dec EBOB : End If GBOB=N : Gosub ABM_MASK : G[91,66,126,77,0] : Wait 20 Screen 0 : Screen To Front 0 Get Block 1,0,0,Screen Width,Screen Height : Ink 1,0 Repeat : Until Mouse Key=0 Repeat Put Block 1,0,0 : X=X Screen(X Mouse) : Y=Y Screen(Y Mouse) X=Max(0,X) : X=Min(X,SCW-WBOB) Y=Max(0,Y) : Y=Min(Y,SCH-HBOB) Box X,Y To X+WBOB,Y+HBOB While X=X Screen(X Mouse) and Y=Y Screen(Y Mouse) and Mouse Key=0 : Wend Until Mouse Key Repeat : Until Mouse Key=0 Put Block 1,0,0 : Get Bob GBOB,X,Y To X+WBOB,Y+HBOB : Screen To Back 0 : Screen 1 X=0 : Y=0 : Inc GBOB : Inc NBOB : PBOB=NBOB : EBOB=NBOB : Gosub ABM_MASK End If If X=1 X2=226 : Y=74 : Gosub ABM N=Max(1,N) : If N>SCW : N=SCW : End If WBOB=N : Gosub ABM_MASK End If If X=2 X2=353 : Y=74 : Gosub ABM N=Max(1,N) : If N>SCH : N=SCH : End If HBOB=N : Gosub ABM_MASK End If G[X*128+91,66,X*128+126,77,0] End If ' If X<383 and Y>79 and Y<92 X=X/128 : G[X*128+91,80,X*128+126,91,1] If X=0 X2=97 : Y=88 : Gosub ABM If N=0 : N=PBOB : End If If N>NBOB : N=NBOB : End If PBOB=N : Gosub ABM_MASK : Screen 0 : Cls 0 : Paste Bob XBB,YBB,PBOB Screen To Front 0 While Mouse Key<>0 : Wend : While Mouse Key=0 : Wend Cls 0 : Screen To Back 0 : Put Block 1,0,0 : Screen 1 Wait 50 : While Mouse Key<>0 : Wend End If If X=1 X2=225 : Y=88 : Gosub ABM If N>NBOB : N=NBOB : End If If N=0 : N=BBOB : End If BBOB=N : Gosub ABM_MASK : G[219,80,254,91,0] : Wait 10 Screen To Front 0 : Screen 0 : Get Palette 2 : Clear Key While Inkey$<>" " While Mouse Key<>0 X=X Screen(X Mouse) : Y=Y Screen(Y Mouse) Paste Bob X,Y,BBOB Wend Wend Get Block 1,0,0,Screen Width,Screen Height : Screen To Back 0 : Screen 1 End If G[X*128+91,80,X*128+126,91,0] End If ' If X<382 and Y>106 and Y<119 X=X/128 : G[X*128+91,107,X*128+126,118,1] If X=0 and NBOB X2=97 : Y=115 : Gosub ABM : ABOB=N If ABOB=0 : ABOB=1 : Gosub ABM_MASK : End If If ABOB>NBOB or ABOB>EBOB : ABOB=EBOB-1 : Gosub ABM_MASK : End If End If If X=1 and NBOB X2=225 : Y=115 : Gosub ABM : EBOB=N If EBOB=NBOB : EBOB=NBOB : Gosub ABM_MASK : End If End If If X=2 and NBOB : X2=353 : Y=115 : Gosub ABM : SBOB=Max(1,N) : Gosub ABM_MASK : End If Wait 10 : G[X*128+91,107,X*128+126,118,0] End If If X<256 and Y>119 and Y<132 X=X/128 : G[X*128+91,120,X*128+126,131,1] If X=0 X2=97 : Y=128 : Gosub ABM : XBB=Min(SCW,N) : Gosub ABM_MASK End If If X=1 X2=225 : Y=128 : Gosub ABM : YBB=Min(SCH,N) : Gosub ABM_MASK End If G[X*128+91,120,X*128+126,131,0] End If If X>349 and X<382 and Y>119 and Y<132 and NBOB Add X,-350 : Add Y,-120 : X=X/12 : Y=Y/4 : N$=Str$(X)+Str$(Y) : N$=N$-" " : N=Val("$"+N$) : Hot Spot PBOB,N For I=1 To 0 Step -1 : G[347+X*12,120+Y*4,358+X*12,123+Y*4,I] : Wait 20 : Next I End If ' If X<383 and Y>132 and Y<145 and NBOB G[1,133,382,144,1] : N$="" For I=ABOB To EBOB N$=N$+"("+Str$(I)+","+Str$(SBOB)+")" Next I N$=N$-" "+"L" Screen To Front 0 : Screen 0 Bob ABOB,XBB,YBB,ABOB : Channel 1 To Bob ABOB : Anim 1,N$ : Anim On Wait 50 : While Mouse Key<>0 : Wend : While Mouse Key=0 : Wend Anim Off : Bob Off : Screen To Back 0 : Screen 1 Wait 20 : G[1,133,382,144,0] : While Mouse Key<>0 : Wend End If ' If Y>151 and Y<164 If X<126 G[1,152,126,163,1] : Erase 1 GBOB=1 : PBOB=0 : ABOB=0 : EBOB=0 : NBOB=0 : BBOB=0 Gosub ABM_MASK : Wait 20 : G[1,152,126,163,0] End If If X>256 and X<382 G[257,152,382,163,1] Wait 20 : Screen 1 : Screen Display 1,128,SCD,,51 : Screen Display 2,128,SCD-14,, : Pop Proc End If End If Loop ABM: N$="" : Clear Key Repeat N1=0 While N1=0 : N1=Asc(Inkey$) : Wend If N1>47 and N1<58 : N$=N$+Chr$(N1) : End If If N1=8 and Len(N$)>0 Then N$=Left$(N$,Len(N$)-1) Ink 0 : Bar X2,Y-7 To X2+23,Y : Ink 1 : Text X2,Y,N$ : Clear Key Until N1=13 or Len(N$)=3 Ink 2 : N$=String$("0",3-Len(N$))+N$ : Text X2,Y,N$ : N=Val(N$) Return ABM_MASK: Screen 1 Ink 2 N$=Str$(GBOB)-" " : Text 97,74,String$("0",3-Len(N$))+N$ N$=Str$(WBOB)-" " : Text 225,74,String$("0",3-Len(N$))+N$ N$=Str$(HBOB)-" " : Text 353,74,String$("0",3-Len(N$))+N$ N$=Str$(PBOB)-" " : Text 97,88,String$("0",3-Len(N$))+N$ N$=Str$(BBOB)-" " : Text 225,88,String$("0",3-Len(N$))+N$ N$=Str$(NBOB)-" " : Text 353,88,String$("0",3-Len(N$))+N$ N$=Str$(ABOB)-" " : Text 97,115,String$("0",3-Len(N$))+N$ N$=Str$(EBOB)-" " : Text 225,115,String$("0",3-Len(N$))+N$ N$=Str$(SBOB)-" " : Text 353,115,String$("0",3-Len(N$))+N$ N$=Str$(XBB)-" " : Text 97,128,String$("0",3-Len(N$))+N$ N$=Str$(YBB)-" " : Text 225,128,String$("0",3-Len(N$))+N$ Return Data 1,52,126,63,35,60,"Load Bob" Data 129,52,254,63,162,60,"Save Bob" Data 257,52,382,63,280,60,"Delete Bob" ' Data 1,66,88,77,9,74,"Get Bob #",91,66,126,77,0,0,"" Data 129,66,216,77,151,74,"Width",219,66,254,77,0,0,"" Data 257,66,344,77,276,74,"Height",347,66,382,77,0,0,"" ' Data 1,80,88,91,5,88,"Show Bob #",91,80,126,91,0,0,"" Data 129,80,216,91,135,88,"Bob brush",219,80,254,91,225,88,"" Data 257,80,344,91,264,88,"# of Bobs",347,80,382,91,0,0,"" ' Data 1,94,382,105,102,102,"Bob Animation Generator" Data 1,107,88,118,24,115,"Start",91,107,126,118,97,101,"" Data 129,107,216,118,160,115,"End",219,107,254,118,225,101,"" Data 257,107,344,118,280,115,"Speed",347,107,382,118,353,101,"" Data 1,120,88,131,9,128,"Bob Pos X",91,120,126,131,97,114,"" Data 129,120,216,131,137,128,"Bob Pos Y",219,120,254,131,225,114,"" Data 257,120,344,131,268,128,"Hot Spot" Data 1,133,382,144,132,141,"Start Animation" ' Data 1,152,126,163,7,160,"Erase all Bobs" Data 257,152,382,163,298,160,"Abort" End Proc Procedure AMOSICONMENU Ink 0 : Bar 0,52 To 640,164 For I=1 To 18 Read X,Y,X2,Y2,N1,N2,N$ G[X,Y,X2,Y2,0] Ink 2 : Text N1,N2,N$ Next ' LD_SV[384] Gosub AIM_MASK On Error Proc FEHLER ' Do While Mouse Key=0 : Multi Wait : Wend X=X Screen(X Mouse) : Y=Y Screen(Y Mouse) : E=0 If X>384 and Y>52 : SELECT[384] : End If If X>0 and X<383 and Y>51 and Y<64 X=X/128 : G[X*128+1,52,X*128+126,63,1] If FILE$<>"" If X=0 : Erase 2 : Load FILE$ : Wait Vbl : NICO=Length(2) : GICO=NICO+1 : PICO=1 : BICO=1 : Gosub AIM_MASK : End If If X=1 Save FILE$,2 If E=0 SETCOMMENT["AMOS-Icons"] End If End If If X=2 : Kill FILE$ : End If End If Screen 1 : Wait 20 : G[X*128+1,52,X*128+126,63,0] End If ' If X>1 and X<258 and Y>65 and Y<78 X=X/128 : G[X*128+91,66,X*128+126,77,1] If X=0 X2=97 : Y=74 : GICO2=GICO : BICO=1 : Gosub AIM If N=0 : N=GICO2 : End If If N>NICO+1 : N=NICO+1 : End If If N<=NICO : Dec NICO : Dec PICO : End If GICO=N : Gosub AIM_MASK : G[91,66,126,77,0] : Wait 20 Screen 0 : Screen To Front 0 Get Block 1,0,0,Screen Width,Screen Height : Ink 1,0 Repeat Put Block 1,0,0 : X=X Screen(X Mouse) : Y=Y Screen(Y Mouse) Draw 0,Y To SCW,Y : Draw X,0 To X,SCH While X=X Screen(X Mouse) and Y=Y Screen(Y Mouse) and Mouse Key=0 : Wend Until Mouse Key Put Block 1,0,0 While Mouse Key X2=X Screen(X Mouse) : Y2=Y Screen(Y Mouse) X2=Min(SCW,X2) : Y2=Min(SCH,Y2) Put Block 1,0,0 : Box X,Y To X2,Y2 While X2=X Screen(X Mouse) and Y2=Y Screen(Y Mouse) : Wend Wend If X2NICO : N=NICO : End If PICO=N : Gosub AIM_MASK : Screen 0 : Cls 0 : Paste Icon XIC,YIC,PICO Screen To Front 0 While Mouse Key<>0 : Wend : While Mouse Key=0 : Wend Cls 0 : Screen To Back 0 : Put Block 1,0,0 : Screen 1 Wait 50 : While Mouse Key<>0 : Wend End If G[X*128+91,66,X*128+126,77,0] End If If X>298 and X<350 and Y>68 and Y<75 G[257,66,382,77,1] : Erase 2 GICO=1 : PICO=0 : NICO=0 : BICO=0 Gosub AIM_MASK : Wait 20 : G[257,66,382,77,0] End If ' If X<256 and Y>79 and Y<92 X=X/128 : G[X*128+91,80,X*128+126,91,1] If X=0 X2=97 : Y=88 : Gosub AIM : XIC=Min(SCW,N) : Gosub AIM_MASK End If If X=1 X2=225 : Y=88 : Gosub AIM : YIC=Min(SCH,N) : Gosub AIM_MASK End If G[X*128+91,80,X*128+126,91,0] End If If X>257 and X<382 and Y>79 and Y<92 and NICO : G[257,80,382,91,1] : Make Icon Mask : Wait 20 : G[257,80,382,91,0] : End If ' If Y>93 and Y<106 If X>127 and X<254 and NICO G[219,94,254,105,1] X2=225 : Y=102 : Gosub AIM If N>NICO : N=NICO : End If If N=0 : N=BICO : End If BICO=N : Gosub AIM_MASK : G[219,94,254,105,0] : Wait 10 Screen To Front 0 : Screen 0 : Get Palette 2 : Clear Key While Inkey$<>" " While Mouse Key<>0 X=X Screen(X Mouse) : Y=Y Screen(Y Mouse) Paste Icon X,Y,BICO Wend Wend Get Block 1,0,0,Screen Width,Screen Height : Screen To Back 0 : Screen 1 End If If X>256 and X<382 G[257,94,382,105,1] Wait 20 : Screen 1 : Screen Display 1,128,SCD,,51 : Screen Display 2,128,SCD-14,, : Pop Proc End If End If Loop AIM: N$="" : Clear Key Repeat N1=0 While N1=0 : N1=Asc(Inkey$) : Wend If N1>47 and N1<58 : N$=N$+Chr$(N1) : End If If N1=8 and Len(N$)>0 Then N$=Left$(N$,Len(N$)-1) Ink 0 : Bar X2,Y-7 To X2+23,Y : Ink 1 : Text X2,Y,N$ : Clear Key Until N1=13 or Len(N$)=3 Ink 2 : N$=String$("0",3-Len(N$))+N$ : Text X2,Y,N$ : N=Val(N$) Return AIM_MASK: Screen 1 Ink 2 N$=Str$(GICO)-" " : Text 97,74,String$("0",3-Len(N$))+N$ N$=Str$(PICO)-" " : Text 225,74,String$("0",3-Len(N$))+N$ N$=Str$(XIC)-" " : Text 97,88,String$("0",3-Len(N$))+N$ N$=Str$(YIC)-" " : Text 225,88,String$("0",3-Len(N$))+N$ N$=Str$(NICO)-" " : Text 97,102,String$("0",3-Len(N$))+N$ N$=Str$(BICO)-" " : Text 225,102,String$("0",3-Len(N$))+N$ Return Data 1,52,126,63,31,60,"Load Icon" Data 129,52,254,63,158,60,"Save Icon" Data 257,52,382,63,276,60,"Delete Icon" ' Data 1,66,88,77,13,74,"Get Icon",91,66,126,77,0,0,"" Data 129,66,216,77,137,74,"Show Icon",219,66,254,77,0,0,"" Data 257,66,382,77,260,74,"Erase all Icons" ' Data 1,80,88,91,5,88,"Icon Pos X",91,80,126,91,0,0,"" Data 129,80,216,91,133,88,"Icon Pos Y",219,80,254,91,0,0,"" Data 257,80,382,91,277,88,"Transparent" Data 1,94,88,105,4,102,"# of Icons",91,94,126,105,97,160,"" Data 129,94,216,105,131,102,"Icon brush",219,94,254,105,225,160,"" Data 257,94,382,105,298,102,"Abort" End Proc Procedure OPTIONEN Ink 0 : Bar 0,52 To 640,164 Ink 2 : Text 158,60,"Line Mask" Text 158,87,"Draw Mask" Text 166,115,"Pattern" Text 157,127,"+" Text 222,127,"-" Text 506,160,"Use" Text 32,100,"JAM1" Text 128,100,"JAM2" Text 229,100,"XOR" Text 303,100,"INVERSID" Text 426,60,"Border" Text 558,60,"Sieve" G[1,52,382,63,0] G[1,79,382,90,0] G[1,107,382,118,0] G[148,120,172,128,0] G[214,120,238,128,0] G[1,130,382,163,0] G[385,152,639,163,0] G[385,52,511,63,0] G[513,52,639,63,0] Gosub LMASK Gosub DMASK Gosub PMASK Screen Display 1,128,64,,166 Screen Display 2,128,50,, ' Do Wait 20 While Mouse Key=0 : Multi Wait : Wend X=X Screen(X Mouse) : Y=Y Screen(Y Mouse) If X>7 and X<375 and Y>64 and Y<76 Add X,-7 : X=X/23 : Inc X If Mid$(LINE$,X,1)="1" Mid$(LINE$,X,1)="0" Else Mid$(LINE$,X,1)="1" End If Gosub LMASK End If If X>0 and X<383 and Y>91 and Y<104 X=X/96 If X<2 If DMASK(0) : DMASK(1)=1 : DMASK(0)=0 Else DMASK(1)=0 : DMASK(0)=1 : End If End If If X=2 If DMASK(2) : DMASK(2)=0 Else DMASK(2)=2 : End If End If If X=3 If DMASK(3) : DMASK(3)=0 Else DMASK(3)=4 : End If End If Gosub DMASK End If If(X>147 and X<172) or(X>213 and X<239) and Y>119 and Y<129 If X>147 and X<172 : X=148 : Add PATTERN,1,0 To 35 : End If If X>213 and X<239 : X=214 : Add PATTERN,-1,0 To 35 : End If G[X,120,X+24,128,1] : Gosub PMASK : Wait 10 : G[X,120,X+24,128,0] End If If X>384 and X<640 and Y>151 and Y<164 G[385,152,639,163,1] : Wait 20 : N=0 For I=1 To 3 : Add N,DMASK(I) : Next N1=Val("%"+LINE$) Screen 0 : Set Pattern PATTERN : Gr Writing N : Set Line N1 : Screen 1 Screen Display 1,128,SCD,,51 : Screen Display 2,128,SCD-14,, : Pop Proc End If If X>384 and X<640 and Y>51 and Y<61 Add X,-385 : X=X/128 : G[X*128+385,52,X*128+510,63,1] : Wait 20 If X=0 Gosub KREUZ Ink INDEX1 For I=X To X2 For I2=Y To Y2 N=Point(I,I2) If N<>0 and N<>INDEX1 If Point(I,I2-1)=0 : Plot I,I2-1 : End If If Point(I,I2+1)=0 : Plot I,I2+1 : End If If Point(I-1,I2)=0 : Plot I-1,I2 : End If If Point(I+1,I2)=0 : Plot I+1,I2 : End If End If Next I2 Next I Ink INDEX1 : Screen To Back 0 : Screen 1 : X=0 : Y=0 End If If X=1 Gosub KREUZ : Ink INDEX2 For I=X To X2 For I2=Y To Y2 If Point(I,I2)=INDEX1 : Plot I,I2 : End If Next I2 Next I Ink INDEX1 : Screen To Back 0 : Screen 1 : X=1 : Y=0 End If G[X*128+385,52,X*128+510,63,0] : Change Mouse 2 End If Loop Pop Proc LMASK: For I=1 To 16 N$=Mid$(LINE$,I,1) If N$="1" : N=0 Else N=1 : End If Ink 2,0 : Text(I-1)*23+15,73,N$ : G[(I-1)*23+9,65,(I-1)*23+29,75,N] Next I Return DMASK: Locate ,0 For I=0 To 3 If DMASK(I) Then N=1 Else N=0 G[I*96+1,92,I*96+94,103,N] Next I Return PMASK: Set Pattern PATTERN : Ink 3,4 : Bar 10,134 To 372,159 : Set Pattern 0 N$=Str$(PATTERN)-" " : N$=String$("0",2-Len(N$))+N$ : Ink 2,0 : Text 185,127,N$ Return KREUZ: Screen To Front 0 : Screen 0 : Get Block 1,0,0,Screen Width,Screen Height While Mouse Key<>0 : Wend : MK=0 : Ink 1 Repeat X=X Screen(X Mouse) : Y=Y Screen(Y Mouse) Draw 0,Y To SCW,Y : Draw X,0 To X,SCH While X=X Screen(X Mouse) and Y=Y Screen(Y Mouse) and MK=0 : MK=Mouse Key : Wend Put Block 1,0,0 If MK Repeat X2=X Screen(X Mouse) : Y2=Y Screen(Y Mouse) Box X,Y To X2,Y2 While X2=X Screen(X Mouse) and Y2=Y Screen(Y Mouse) : Wend Put Block 1,0,0 Until Mouse Key=0 End If Until MK If X2384 and X<577 and Y>60 and Y<153 If FILE$<>"" If Y>60 and Y<72 and Exist(FILE$) I=0 : I2=1 : E=0 : Gosub LADEFARBEN_A : Screen 2 Open In 1,FILE$ For I=0 To 31 If E=0 Input #1,N If E=0 : Colour I,N : End If End If Next Close 1 Screen 0 : Get Palette 2 : FARBE1=Colour(INDEX1) Screen 1 : Colour 3,FARBE1 : I=0 : I2=0 : Gosub LADEFARBEN_A If E : Y=141 : End If End If If Y>76 and Y<89 I=1 : I2=1 : E=0 : Gosub LADEFARBEN_A : Screen 2 Open Out 1,FILE$ If E=0 For I=0 To 31 : N=Colour(I) : Print #1,Hex$(N) : Next Close 1 SETCOMMENT["Palette"] End If Screen 1 : I=1 : I2=0 : Gosub LADEFARBEN_A If E : Y=141 : End If End If If Y>92 and Y<105 and Exist(FILE$) I=2 : I2=1 : Gosub LADEFARBEN_A Kill FILE$ : If E=0 : FILE$="" : End If Screen 1 : I=2 : I2=0 : Gosub LADEFARBEN_A If E : Y=141 : End If End If End If If Y>108 and Y<121 and NBOB I=3 : I2=1 : Gosub LADEFARBEN_A : Screen 2 : Get Sprite Palette Screen 0 : Get Palette 2 : FARBE1=Colour(INDEX1) : FARBE2=Colour(INDEX2) Screen 1 : Colour 3,FARBE1 : Colour 4,FARBE2 : Wait 20 : I=3 : I2=0 : Gosub LADEFARBEN_A End If If Y>124 and Y<137 and NICO I=4 : I2=1 : Gosub LADEFARBEN_A : Screen 2 : Get Icon Palette Screen 0 : Get Palette 2 : FARBE1=Colour(INDEX1) : FARBE2=Colour(INDEX2) Screen 1 : Colour 3,FARBE1 : Colour 4,FARBE2 : Wait 20 : I=4 : I2=0 : Gosub LADEFARBEN_A End If If Y>140 and Y<153 I=5 : I2=1 : E=0 : Gosub LADEFARBEN_A : Wait 10 Screen Display 1,128,SCD,,51 : Screen Display 2,128,SCD-14,, : E=0 : Pop Proc End If End If If X>63 and X<321 and Y>51 and Y<164 Then SELECT[65] Loop ' LADEFARBEN_A: G[384,61+I*16,577,72+I*16,I2] Return ' Data 435,"Load Palette",435,"Save Palette",428,"Delete Palette",423,"Get Bob Palette",419,"Get Icon Palette",440,"Use Palette" End Proc Procedure SELECT[N] X=X Screen(X Mouse)-N : Y=Y Screen(Y Mouse) If X>206 and X<255 and Y>51 and Y<64 G[207+N,52,254+N,63,1] Ink 0 : Bar 23+N,66 To 252+N,148 For I=0 To 150 : LSFILE$(I)=Chr$(255) : Next : I=0 N$=Dev First$("") While N$<>"" If N$<>"" X=Instr(N$,":") LSFILE$(I)=Right$(Left$(N$,X),X-1) Inc I End If N$=Dev Next$ Wend ' FILEANZ#=I-1 Ink 2 For I=0 To Min(9,FILEANZ#) Text 23+N,I*8+74,LSFILE$(I) Next I ' Y#=Max(1,FILEANZ#/10) FY#=81/Max(1,Y#) FYX#=FY# FX#=0 FPOS=0 ' Ink 0 : Bar 2+N,67 To 11+N,148 Ink 2 : Bar 2+N,67 To 11+N,Min(148,68+FY#) Wait 10 G[207+N,52,254+N,63,0] End If ' If X>17 and X<255 and Y>65 and Y<146 Add Y,-66 : Y=Y/8*8/8 Ink 1,2 If LSFILE$(Y)<>Chr$(255) Text 23+N,Y*8+74,LSFILE$(FPOS+Y)+Space$(28-Len(LSFILE$(FPOS+Y))) Wait 10 End If ' If Instr(LSFILE$(FPOS+Y),Chr$(255))=0 If Instr(LSFILE$(FPOS+Y),":")=0 and Instr(LSFILE$(FPOS+Y),"*")=0 Ink 2,0 For I=0 To Min(9,FILEANZ#) Text 23+N,I*8+74,LSFILE$(FPOS+I)+Space$(28-Len(LSFILE$(FPOS+I))) Next FILE$=LSFILE$(FPOS+Y) Else Ink 0 : Bar 23+N,66 To 252+N,148 Dir$=LSFILE$(FPOS+Y)-"*" DEV$=Dir$ For I=0 To 150 LSFILE$(I)=Chr$(255) Next ' I=0 N$=Dir First$("") While N$<>"" If N$<>"" N$=N$-Right$(N$,8) : N$=N$-" " : LSFILE$(I)=N$ : Inc I End If N$=Dir Next$ Wend FILEANZ#=I-1 Ink 2,0 For I=0 To Min(9,FILEANZ#) Text 23+N,I*8+74,LSFILE$(I)-Chr$(255) Next ' Y#=Max(1,FILEANZ#/10) FY#=81/Max(1,Y#) FYX#=FY# FX#=0 FPOS=0 Ink 0 : Bar 2+N,67 To 11+N,148 Ink 2 : Bar 2+N,67 To 11+N,Min(148,68+FY#) End If Ink 0 : Bar 5+N,53 To 203+N,62 : Bar 5+N,153 To 253+N,162 Ink 2 : Text 5+N,60,Left$(DEV$,24) : Text 5+N,160,FILE$ End If End If ' If X>1 and X<12 and Y>66 and Y<149 and FILEANZ#>10 Add Y,-67 If Y>FY# FX#=FX#+FYX# FY#=FY#+FYX# FX#=Min(FY#-FYX#,FX#) Add FPOS,10 End If If Y1 and X<255 and Y>151 and Y<164 G[0+N,152,254+N,163,1] N$=FILE$ Repeat N1=0 Ink ,1 : Text 5+N+Len(N$)*8,160," " Ink 2,0 While N1=0 : N1=Asc(Inkey$) : Wend If N1<>44 and N1>31 and Len(N$)<29 N$=N$+Chr$(N1) End If If N1=8 and Len(N$)>0 N$=Left$(N$,Len(N$)-1) End If Ink 0 : Bar 1+N,153 To 253+N,162 Ink 2 : Text 5+N,160,N$ Until N1=13 If Len(N$)>0 : FILE$=N$ : End If Text 5+N,160,FILE$ G[0+N,152,254+N,163,0] End If Repeat : Until Mouse Key=0 End Proc Procedure LD_SV[N] Ink 0 : Bar N,52 To 254+N,163 G[0+N,52,204+N,63,0] : G[207+N,52,254+N,63,0] G[0+N,65,15+N,150,0] : G[17+N,65,254+N,150,0] G[0+N,152,254+N,163,0] Ink 2 : Text 5+N,60,Left$(DEV$,24) Text 212+N,60,"Devs:" Text 5+N,160,FILE$ For I=0 To 9 Text 23+N,I*8+74,LSFILE$(I)-Chr$(255) Next I Y#=Max(1,FILEANZ#/10) FY#=81/Max(1,Y#) Ink 0 : Bar 2+N,67 To 11+N,148 Ink 2 : Bar 2+N,67 To 11+N,Min(148,68+FY#) Screen Display 1,128,64,,166 Screen Display 2,128,50,, End Proc Procedure G[X,Y,X2,Y2,N] If N=0 Then I=1 : I2=2 Else I=2 : I2=1 Ink I : Draw X,Y To X2-1,Y : Draw X,Y To X,Y2 Ink I2 : Draw X+1,Y2 To X2,Y2 : Draw X2,Y To X2,Y2 Ink 1,0 End Proc Procedure SETCOMMENT[N$] If E<>0 Then Pop Proc ' N$=Chr$($9B)+"3;33m"+N$+" created with AIFFpaint by Volker Stepprath of Testaware !"+Chr$($9B)+"0m"+Chr$(0) F$=DEV$+FILE$+Chr$(0) ' Dreg(1)=Varptr(F$) Dreg(2)=Varptr(N$) LVOSETCOMMENT=Doscall(-180) End Proc Procedure FEHLER Screen Display 1,128,64,,180 Screen Display 2,128,50,, Screen To Front 2 Screen To Front 1 Screen 1 Screen Show Ink 0 : Bar 0,167 To 639,178 G[0,167,639,178,0] E=Errn If E=31 Then N$="IFF compression not recognised !" If E=48 Then N$="Out of memory !" : SCW=320 : SCH=200 : SCC=32 : SCM=0 : Screen Open 0,SCW,SCH,SCC,SCM : Flash Off : Curs Off : Get Palette 2 : Cls 0 : Screen To Back 0 If E=66 Then N$="Sorry, I`m not perfect !" : Screen 0 : Get Block 2,0,0,10,10 If E=81 Then N$=FILE$+" not found !" If E=84 Then N$="Disc is write protected !" If E=88 Then N$="Disc is full !" If E=89 Then N$=FILE$+" is protected against deletion !" If E=90 Then N$=FILE$+" is protected against writing !" If E=91 Then N$=FILE$+" is protected against reading !" If E=94 Then N$="I/O Error !" If E=95 Then N$=FILE$+" is not an IFF picture" If N$="" Then N$="Error #"+Str$(E)-" "+"! ... ( don`t use it like you do it ! )" N=Len(N$)/2*8 Screen 1 Text 320-N,175,N$ Screen 0 While Mouse Key<>0 : Wend While Mouse Key=0 : Wend Ink 0 : Bar 0,167 To 640,180 Screen Display 1,128,64,,166 Screen Display 2,128,50,, Resume Next End Proc