home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
No Fragments Archive 10: Diskmags
/
nf_archive_10.iso
/
MAGS
/
STMAGAZIN
/
STMAGAZIN.MSA
/
UTILS
/
MOVE_IT
/
MOVE_IT.LST
< prev
next >
Wrap
File List
|
1986-02-06
|
12KB
|
696 lines
' MOVE IT! - 01/08/88
' U. Kreisel, GFA_BAS 2.02
' (c) Markt&Technik, 8013 Haar
'
Clear
@Init
@Men_leiste
Menu Leiste$()
On Menu Gosub Menue
Do
On Menu
Loop
Procedure Menue
S%=Menu(0)
On S% Gosub Info
On S%-10 Gosub B_ed,An,Dy,Film
On S%-16 Gosub Aus
Menu Off
Return
Procedure Info
Alert 1,"MOVE IT!",1,"OK",Kk%
Return
Procedure Init
Dim Gg(100),Hs(100)
Dim Z$(100),F$(14)
M=99
Ctr=1
U=18
I=90
O=305
P=263
Long=O-U
Fa%=2
Lo%=4
G%=1
V%=314
@Sts
St$=G$
@Sts
T$=G$
For H=1 To 13
Read F$(H)
Next H
Get 95,220,210,240,Dlt$
Get U,I,O,P,Z$(0)
@Bak(1,2,4)
@Log
@Txt
@Frb
Get 10,270,300,340,Dlt$
Return
Procedure Sts
G$=Mki$(8)+Mki$(8)+Mki$(1)+Mki$(0)+Mki$(1)
For I%=1 To 16
Read Vorn
G$=G$+Mki$(0)+Mki$(Vorn)
Next I%
Return
Procedure B_ed
Sn=0
@Bak(1,2,4)
@Txt
@Cap
Jump=0
Put 334,32,Logo$
Pbox U-1,I-1,O+1,P+1
Pbox U+V%-1,I-1,O+V%+1,P+1
Put U+V%,I,Z$(0)
Graphmode 2
Deftext 1,0,0,13
For H=1 To 4
Text 332,270+H*16,286,F$(H)
Next H
Put U,I,Z$(Rm)
@Report
Repeat
@Count
Until Sn=3
Return
Procedure Count
Mouse X,Y,K
If K=1
If X>U-1 And X<O+1 And Y>I-1 And Y<P+1
Plot X,Y
Endif
If Y>350
Jump=Abs(Int((20-X)/60))
Endif
Endif
Dt$=Inkey$
If Jump=0 And Dt$<>""
For Kees=59 To 69
Inc Jump
If Dt$=Chr$(0)+Chr$(Kees)
Kees=69
Endif
Next Kees
Endif
If Jump>0 And Jump<11
@Abk
On Jump Gosub F1,F2,F3,F4,F5,F6,F7,An,Dy,F10
@Report
@Abk
Endif
Jump=0
If Dt$>"0" Or Dt$<=Chr$(128)
@Det
Endif
Return
Procedure Abk
If Jump>0 And Jump<11
@Inv(20+(Jump-1)*60,350,20+(Jump)*60,382)
Endif
Return
Procedure Det
If Dt$=Chr$(127)
Put U,I,Z$(0)
Endif
If X>U And X<O And Y>I And Y<P
If Dt$="1"
Deffill 1,2,2
Fill X,Y
Endif
If Dt$="2"
Deffill 1,2,4
Fill X,Y
Endif
Endif
Return
Procedure F1
@Abk
@Frb
Sn=3
Return
Procedure F2
Check$=""
Graphmode 2
Deftext 1,0,0,13
For H=5 To 8
Text U,206+H*16,250,F$(H)
Next H
Do
K$=Inkey$
Exit If K$=Chr$(13) Or Rm<=0
E%=Asc(K$)
On E%-41 Gosub In,Pl,Dy,Dy,K
@Report
@Cap
Put U,I,Z$(G%)
Print At(37,18);
@Use(G%)
Loop
Put 18,268,Dlt$
Return
Procedure In
Inc Ctr
Inc Rm
For Sh=Ctr To G% Step -1
Z$(Sh)=Z$(Sh-1)
Next Sh
Get U+314,I,O+314,P,Ab$
@F6
Get U,I,O,P,Z$(G%)
Return
Procedure Pl
If G%=1
Rz=0
Endif
If G%=Rm
Rz=1
Endif
If Rz=1
G%=1
Else
Inc G%
Endif
Return
Procedure K
Z$(G%)=""
For Ix=G% To Rm
Z$(Ix)=Z$(Ix+1)
Next Ix
Dec Ctr
Dec Rm
Dec G%
If G%<=0
G%=1
Endif
Return
Procedure F3
Pause U
Graphmode 3
While Mousek=0
Wend
Mouse X%,Y%,T%
Do
Mouse X1%,Y1%,T%
Box X%,Y%,X1%,Y1%
Box X%,Y%,X1%,Y1%
Exit If T%=0
Loop
Get X%,Y%,X1%,Y1%,Cp$
Le=Abs(X1%-X%)
Ht=Abs(Y1%-Y%)
Do
Mouse X,Y,K
Vsync
Box X-Le,Y-Ht,X,Y
Box X-Le,Y-Ht,X,Y
If K=1 And X-Le>U-1 And X-Le<O+1-Le And (Y-Ht)>I-1 And (Y-Ht)<P+1-Ht
Put X-Le,(Y-Ht),Cp$,3
Endif
Exit If K=2
Loop
Graphmode 1
Return
Procedure F4
@Lad
If Exist(Mov$)
Open "I",#1,Mov$
Ab$=Space$(Lof(#1))
Bget #1,Varptr(Ab$),Lof(#1)
Close #1
If V%=314
Put U+V%,I,Ab$
Endif
Else
Out 2,7
Endif
Return
Procedure F5
Local Pam$
@Lad
If Mov$>"" And Mov$>"\"
Get U,I,O,P,Pam$
Bsave Mov$,Varptr(Pam$),Len(Pam$)
@Dis("BILD GESPEICHERT.")
Pause 50
Endif
Return
Procedure Lad
Dt$=""
Repeat
Until Mousek=0
Fileselect "\*.MOV","",Mov$
Return
Procedure F6
Put U,I,Ab$
Return
Procedure F7
Get U,I,O,P,Ab$
Put U+V%,I,Ab$
Return
Procedure F10
If Rm<M
If Cap%=<0
Alert 3,"RAM voll.|RAM löschen?|",2,"LÖSCHE|WEITER",D%
If D%=1
@Pic
Goto Ade
Else
Goto Ade
Endif
Endif
Inc Rm
Inc Ctr
Get U,I,O,P,Z$(Rm)
Hs(Rm)=2
Gg(Rm)=0
Ade:
@Cap
Pause 10
Endif
Return
Procedure An
If Rm>0
@Bak(1,2,4)
@Txx
@Spe
@Bak(1,Fa%,Lo%)
For Yx=1 To Rm
If Fa%=2 And Not Even(Hs(Yx))
Inc Hs(Yx)
Endif
Next Yx
@Dis("[*] <- -> [+][-] auf/ab")
Sget S$
Pos=591-Long
Pop=1
Repeat
On Break Gosub Ende
Mem%=Fre(Xt)
Reserve 2000
Ad=Gemdos(&H48,L:32768)
Bd=Xbios(&H2)
A=Xbios(&H5,L:Ad,L:Bd,-1)
Cls
Repeat
A=Xbios(&H5,L:Ad,L:Bd,-1)
@Mover
A=Xbios(&H5,L:Bd,L:Ad,-1)
@Mover
Bew$=Inkey$
If Bew$>Chr$(41)
If Bew$="*"
If Rl=1
Rl=2
Else
Rl=1
Endif
Endif
If Bew$="+"
Sub Hi,2
Endif
If Bew$="-"
Add Hi,2
Endif
Endif
Until Bew$>Chr$(64)
@Ende
Sn=3
Until Sn=3
Endif
Return
Procedure Mover
Sput S$
If Rl=1
Pos=Pos+Hs(Pop)
Else
Pos=Pos-Hs(Pop)
Endif
Put Pos,I+Hi,Z$(Pop)
Pause Gg(Pop)
If Pop=Rm
Pop=0
Endif
Inc Pop
If Pos<=-Long Or Pos=>640
If Rl=1
Pos=-Long+1
Else
Pos=640
Endif
Endif
Return
Procedure Film
V%=0
@Dis("ERSTES BILD?")
Was:
@F4
If Right$(Mov$,4)=".MOV"
If K%<>1
@Pic
Endif
Inc Rm
Inc Ctr
Z$(Rm)=Ab$
Ab$=""
Hs(Rm)=2
Gg(Rm)=0
@Cap
@Parser
@Dis(Path$+Chr$(It)+File$)
Pause 30
Do
Exit If It=>90 Or It=57 Or Cap%<=0
Inc It
Dfil$=Path$+Chr$(It)+File$
Exit If Not Exist(Dfil$)
@Dis(Dfil$)
Open "I",#1,Dfil$
Inc Rm
Inc Ctr
Z$(Rm)=Space$(Lof(#1))
Bget #1,Varptr(Z$(Rm)),Lof(#1)
Hs(Rm)=2
Gg(Rm)=0
@Cap
Close #1
Loop
Alert 2,"Weitere Bilder laden?",2,"JA|NEIN",K%
If K%=1
Goto Was
Else
@Dis("ANIMATION WÄHLEN.")
Endif
Endif
V%=314
Return
Procedure Parser
N%=5
If Instr(Mov$,"\")=0
Mov$="\"+Mov$
Endif
While Left$(Right$(Mov$,N%))<>"\"
Inc N%
Wend
Path$=Left$(Mov$,Len(Mov$)-N%+1)
File$=Right$(Mov$,N%-2)
It=Asc(Left$(Right$(Mov$,N%-1)))
Return
Procedure Pic
For Q=1 To M
Z$(Q)=""
Next Q
S$=""
Rm=0
Ctr=1
@Cap
Return
Procedure Dis(Disp$)
Print Chr$(27);"p";
Wt=Abs((Len(Disp$)+2)-35)
Print At(3,4);Spc(2);Disp$;Spc(Wt);
Print Chr$(27);"q";
Return
Procedure Frb
Graphmode 2
Deffill 1,2,1
Pbox 20,350,620,382
Graphmode 1
Return
Procedure Spe
@Zeig
Do
If Mousek<>0
If Mousey>350
Jump=Abs(Int((20-Mousex)/60))
@Abk
On Jump Gosub Farbe,Pas,Pixel,Re
@Abk
If Mousex>259
Goto Raus
Endif
Endif
If Mousex>30 And Mousex<=626
Ys=Int(Mousey/16)+1
Offset=Int(Ys/6.2)
Ex=Int(Mousex/24)+Offset*25
Key=Mousek
@Where(Key)
Endif
Endif
Exit If Inkey$=Chr$(13)
Loop
Raus:
Jump=0
Return
Procedure Zeig
Za=1
L=4
Pct=0
For Vals=5 To Rm*3+10 Step 3
Print Chr$(27);"p"
Print At(Vals,L-1);
@Use(Pct)
Print Chr$(27);"q"
Print At(Vals,L+1);
@Use(Hs(Za))
Print At(Vals,L);
@Use(Gg(Za))
Inc Za
If Za=26 Or Za=51 Or Za=76
Vals=2
L=L+5
Endif
If Za=>100 Or Za>Rm
Vals=309
Endif
Print At(3,L);"D";
Print At(3,L+1);"P";
Inc Pct
Next Vals
Return
Procedure Farbe
Pause 10
@Abk
If Fa%=0
Fa%=2
Lo%=4
@Ky(0,3,"GRAU ")
Else
Fa%=0
Lo%=0
@Ky(0,3,"WEISS")
Endif
@Abk
Return
Procedure Pas
While Pas<Rm+1 And Gg(Pas)<99
Inc Gg(Pas)
Inc Pas
Wend
@Zeig
Pas=1
Return
Procedure Pixel
While Px<Rm+1 And Hs(Px)<99
Inc Hs(Px)
Inc Px
Wend
@Zeig
Px=1
Return
Procedure Re
For Re=1 To Rm
Hs(Re)=Abs(Hs(Re)-1)
Gg(Re)=Abs(Gg(Re)-1)
Next Re
@Zeig
Return
Procedure Where(Kee)
If Ex<=Rm
If Ys=4 Or Ys=9 Or Ys=14 Or Ys=19
Idx=4
Vv=Gg(Ex)
@Cal(Kee,Vv)
@Zeig
Endif
If Ys=5 Or Ys=10 Or Ys=15 Or Ys=20
Idx=5
Vv=Hs(Ex)
@Cal(Kee,Vv)
@Zeig
Endif
Endif
Return
Procedure Cal(Kee,Vv)
If Kee=1
Inc Vv
Else
Dec Vv
Endif
If Vv>98
Vv=M
Endif
If Vv<=0
Vv=0
Endif
If Idx=4
Gg(Ex)=Vv
Endif
If Idx=5
Hs(Ex)=Vv
Endif
Return
Procedure Tasten
Graphmode 1
Deffill 1,0,0
X%=20
Y%=350
Lg%=60
Hh%=32
For Box=1 To 10
Pbox X%,Y%,X%+Lg%,Y%+Hh%
Add X%,Lg%
Next Box
Return
Procedure Ky(Ff%,Yb%,Tx$)
Deftext 1,0,0,4
Text 24+Ff%*Lg%,353+Yb%*6,Tx$
Return
Procedure Txt
@Tasten
@Ky(0,1,"HAUPT-")
@Ky(0,2,"MENÜ")
@Ky(0,3,"EIN")
@Ky(1,1,"BILD")
@Ky(1,2,"AUF-")
@Ky(1,3,"RUFEN")
@Ky(2,1,"CLIP-")
@Ky(2,2,"MODUS")
@Ky(2,3,"EIN")
@Ky(3,1,"BILD")
@Ky(3,2,"VON DISK")
@Ky(3,3,"LADEN")
@Ky(4,1,"BILD")
@Ky(4,2,"AUF DISK")
@Ky(4,3,"SPEI-")
@Ky(4,4,"CHERN")
@Ky(5,1,"BILD")
@Ky(5,2,"VON")
@Ky(5,3,"ABLAGE")
@Ky(5,4,"HOLEN")
@Ky(6,1,"BILD")
@Ky(6,2,"AUF")
@Ky(6,3,"ABLAGE")
@Ky(6,4,"LEGEN")
@Ky(7,1,"ANIMATION")
@Ky(9,1,"BILD")
@Ky(9,2,"IM")
@Ky(9,3,"RAM")
@Ky(9,4,"SICHERN")
Return
Procedure Txx
@Tasten
@Ky(0,1,"HINTER-")
@Ky(0,2,"GRUND")
@Ky(1,1,"ANZEIGE-")
@Ky(1,2,"DAUER")
@Ky(1,4,"+1")
@Ky(2,1,"PIXEL")
@Ky(2,4,"+1")
@Ky(3,1,"DAUER")
@Ky(3,2,"UND")
@Ky(3,3,"PIXEL")
@Ky(3,4,"-1")
@Ky(4,1,"START DER")
@Ky(4,2,"ANIMATION")
@Ky(4,4,"(RETURN)")
Return
Procedure Bak(B,N,M)
Graphmode 1
Deffill B,N,M
Pbox -1,18,640,400
Return
Procedure Use(Aw%)
Print Using "##",Aw%
Return
Procedure Inv(X1%,Y1%,X2%,Y2%)
Graphmode 3
Deffill 1,2,8
Pbox X1%+1,Y1%+1,X2%-1,Y2%-1
Graphmode 1
Return
Procedure Report
@Dis("Bild "+Str$(Rm)+" im RAM, in Arbeit: "+Str$(Ctr))
Return
Procedure Cap
Iou=Fre(Mmy%)
Cap%=Int((Iou-80000)/6270)
Print At(64,1);"Kapazität: ";
Print Using "###",Cap%
Return
Procedure Log
C=106
Put V%,I,Dlt$
Sprite St$,400,99
Sprite T$,416,99
Draw 391,101 To V%,101 To V%,C To 391,C
Deftext 1,17,0,13
Text 370,122,"68oooer"
Deffill 1,2,4
Fill 404,97
Fill V%,90
Graphmode 2
Deftext 1,0,0,13
Text 430,C,100,"MAGAZIN"
Text V%,94,"11/88"
Text V%,202,215,"präsentiert"
Text V%,P,215,"U. Kreisel/Markt&Technik '88"
Deftext 1,0,0,26
Text V%,240,220,"MOVE IT!"
Get V%,80,530,130,Logo$
Return
Procedure Dy
Return
Procedure Ende
A=Xbios(&H5,L:Bd,L:Bd,-1)
A=Gemdos(&H49,L:Ad)
Reserve Mem%
Return
Procedure Aus
Edit
Return
Data 8191,8192,16384,32768,32768,32895,32896
Data 16480,12313,2053,63490,2,2,2,4,65535
Data 65535,1,1,2,2,32894,32896,32896
Data 256,256,512,512,512,512,1024,64512
Data [Linke Maustaste] .. ZEICHNEN
Data [Del] .. ZEICHENFLÄCHE LEEREN
Data [1][2] GRAU/DUNKELGRAU FÜLLEN
Data [F3] .............. CLIPMODUS
Data [+] .............. Phase?
Data [Enter] .......... Zurück
Data [.] ....... Phase löschen
Data [*] . Ablagebild einfügen
Procedure Men_leiste
Dim Leiste$(20)
Restore Mendat
For I%=0 To 20
Read Leiste$(I%)
Exit If Leiste$(I%)="***"
Next I%
Leiste$(I%)=""
Leiste$(I%+1)=""
Mendat:
Data Info, MOVE IT!
Data ---------------
Data -1,-2,-3,-4,-5,-6,""
Data Funktion, Editor, Animation
Data -----------, Film,""
Data Ende, Ende ,""
Data ***
Return