Set Buffer 20 DPATH$=Resource$(0) CNAME$=DPATH$+"AMOSPro_Compiler_Config" 'lkflkdlfk xxxx Dim ANM_IC_T(11),XZ(6),YZ(6) Dim LST$(NLST) Global PATH$,DPATH$,PRAM$,CNAME$,FACC,CFLASH$,VER$ Global FLAG$,ANM$,ANM_NF,SND$,LST$(),NLST Global ANM_IC_T(),XZ(),YZ() Global SCR,SCX,SCY,SCSX,SCSY,DY,SOP TIMING=3 ZAP=1 : VZAP=1 If Length(16)=0 Load DPATH$+"AMOSPro_Compiler_resource.Abk",16 End If Resource Bank 16 VER$=Resource$(1) ' _LOAD_CONFIG[CNAME$,0] ' 'FLAG$="2100101100000110100000001000000001111000000" ' ' 0 0 1 1 2 3 3 4 ' 1234567890123456789012345678901234567890123 ' / ||| | | | ' / / | \Compiled \ \Compiler \ ' S D T \program \ \Setup \ ' o e y \setup 1 \ 2 \ 1 \ 2 ' u s p ' r t e ' c i ' e n ' ' VAR(1,1->44:flag$) ' VAR(1,51->53:rotbutt pointer & 61->89:rotbutt offset) Set Accessory ' Colour to flash when un-squashing compiled programs. >31 for no flash CFLASH$="-Z32" ' Enough RAM? Close Workbench 'Close Editor Set Sprite Buffer 48 If Chip Free+Fast Free<80*1024 Screen Open 0,640,24,2,Hires : Colour 1,$FFF : Curs Off Centre ">> Sorry, AMOS-Compiler "+VER$+" needs at least 80 Kbytes free to run. <<" Print : Print : Centre "Press any key" Wait Key : Edit End If ' screens definitions If Prg Under=1 For S=0 To 7 Trap Screen Close S Next Set Sprite Buffer 40 End If ADAT=Leek(Dreg(3)) If ADAT Then SCSX=Deek(ADAT) : SCX=Deek(ADAT+4) If SCSX<640 Then SCSX=640 : SCX=128 SCY=75 : SCSY=160 Auto View Off : SCR=-1 _OPEN_FREE_SCREEN[SCSX,SCSY] If Param<0 Then _OMM SCR=Param '_GRAB_EDITOR_PALETTE _INIT_MENU _INIT_ZONES _INIT_DISPLAY ' open screen Screen Show SCR : Auto View On For Y=1 To SCSY Step SOP Screen Display SCR,SCX,SCY,,Y Wait Vbl Next Screen Display SCR,,SCY,,SCSY Limit Mouse 64,25 To 512,310 : Show On _LOAD_BANKS[15] ' Get the directories If Exist(PRAM$+"/"+CNAME$) DPATH$=PRAM$ Open In 1,PRAM$+"/Compiler_Origin" Input #1,PATH$ Close End If ' Load ACmp program 'If Not Comp Here ' _INFO[resource$(25)] ' If PATH$<>"" ' Comp Load PATH$+"/APcmp" ' Else ' Comp Load DPATH$+"/APcmp" ' End If ' _NOINFO 'End If ' --- Main --- X=Free Menu On Do MN_ABOUT Do Multi Wait If Choice If Choice(1)=1 On Choice(2) Proc MN_ABOUT,MN_VERSIONS,_SETUP,_NOP,_COMPILE,_NOP,_QUIT Else If Choice(1)=2 'On Choice(2) Proc _NOP Else If Choice(1)=3 'On Choice(2) Proc _NOP Else If Choice(1)=4 'On Choice(2) Proc _NOP End If End If End If End If End If _DISPLAY_VDIALOG DIAL=Dialog(1) If DIAL If DIAL=6 _COMPILE End If If DIAL>=2 and DIAL<=4 _SETFLAG[DIAL-1,Vdialog(1,50+DIAL-1)+3*(DIAL=3)+5*(DIAL=4)] _UPDATE_BUTTONS[DIAL] End If If DIAL=1 : _QUIT : End If If DIAL=5 : _SETUP : End If Else _GETFLAG[37] If Param MZ_OLD=MZ MZ=Mouse Zone If MZ<>MZ_OLD If IC If IC<10 Resource Unpack 91+IC,XZ(MZ_OLD)+XO,YZ(MZ_OLD)+YO Else Resource Unpack 105,XZ(MZ_OLD)+XO,YZ(MZ_OLD)+YO ' ' ** à revoir... ^ ** ' | End If End If End If If MZ Inc TIME If TIME=TIMING TIME=0 If MZ=1 IC=9 : XO=0 : YO=0 Else If MZ=5 IC=8 : XO=16 : YO=4 Else If MZ=6 IC=10 : XO=120 : YO=4 Else If MZ>=2 IC=Vdialog(1,50+MZ-1) : XO=48 : YO=4 End If End If End If End If If ANM_IC_T(IC)=0 Add ZAP,1,1 To 5 Else Add ZAP,VZAP If ZAP=0 : ZAP=1 : VZAP=1 : End If If ZAP=6 : ZAP=5 : VZAP=-1 : End If End If Resource Bank 15 Resource Unpack IC*5+ZAP,XZ(MZ)+XO,YZ(MZ)+YO Resource Bank 16 End If Else IC=0 End If End If End If Loop Loop ' --- Procedures --- Procedure _COMPILE ' Menu Off On Error Proc _GEST_ERR Resume Label _FINISH_COMPILE ' _GETFLAG[1] : SRCE=Param : C$=" -?"+Mid$(Str$(P),2) If SRCE=0 S$="__Current__" : Rem *** GRAB FROM EDITOR Else If SRCE=1 S$=Fsel$("*.AMOS","",Resource$(27)) Else If SRCE=2 _EDIT_LIST If Param=True NL=0 S$=LST$(NL) End If End If If S$="" _INFO[Resource$(112)] : _WAIT[50] _NOINFO : Goto _FINISH_COMPILE End If ' _GETFLAG[2] : DEST=Param : C$=C$+Mid$(Str$(DEST),2) If DEST=0 D$="__Current__" : Rem *** SEND TO EDITOR TYPE=3 Else If DEST=1 If SRCE<2 D$=Fsel$("**","",Resource$(30),Resource$(33)) End If If D$="" _GETFLAG[3] : TYPE=Param If Upper$(Right$(S$,5))=".AMOS" If TYPE>0 D$=Left$(S$,Len(S$)-5) If TYPE=2 : TYPE=0 : End If If TYPE=1 : TYPE=1 : End If ' ' ** à revoir... ^ ** ' | Else D$=Left$(S$,Len(S$)-5)+"_C.AMOS" TYPE=3 End If End If End If End If End If If D$="" _INFO[Resource$(112)] : _WAIT[50] _NOINFO : Goto _FINISH_COMPILE End If C$='"'+S$+'"'+C$+" -O"+'"'+D$+'"' _GETFLAG[5] : C$=C$+" -S"+Mid$(Str$(Param),2) _GETFLAG[4] : C$=C$+" -E"+Mid$(Str$(Param),2) _GETFLAG[6] : C$=C$+" -W"+Mid$(Str$(Param),2) _GETFLAG[14] : If Param : C$=C$+" -L" : End If _GETFLAG[7] : If TYPE=1 : Add TYPE,Param : End If C$=C$+" -T"+Mid$(Str$(TYPE),2) C$=C$+" -F"+DPATH$+"/"+" -C"+DPATH$+"/"+CNAME$ C$=C$+" "+CFLASH$ Timer=0 'Compile C$,$12345678 'E$=Comp Err$ Trap Dialog Close 1 STATUS=0 _GETFLAG[34] If Param<>0 and Length(10)>0 ' Play Animation! For S=0 To 7 Trap Screen S If Errtrap SCR_ANIM=S : Exit End If Next ' hide all screens Screen Hide SCR If Prg Under Trap Screen Hide 8 : Rem *** Try to Hide the editor (Don't Works!!!) *** End If _GETFLAG[35] : If Param : _PLAY_SND : End If Do F=Frame Play(10,1,SCR_ANIM) Colour Back Colour(0) Trap Double Buffer If Errtrap : Proc _GEST_ERR : End If E$="" : STATUS=0 : CF=0 Clear Key Repeat Add STATUS,1,0 To 100 C=(STATUS*ANM_NF)/100 If C-CF>0 F=Frame Play(F,1) : CF=C Screen Swap : Wait Vbl End If Exit If STATUS=100 Multi Wait K$=Inkey$ Until K$=Chr$(27) If K$=Chr$(27) : E$="< User Interruption >" : End If _OPEN_FREE_SCREEN[SCSX,60-(SRCE<>2)*24] '_GRAB_EDITOR_PALETTE SCR_2=Param Screen SCR_2 : Cls 0 : Flash Off Screen Display SCR_2,SCX,180,, Screen Show SCR_2 : Screen To Front SCR_2 Wait Vbl _END_COMPILE[SCSX,60-(SRCE<>2)*24,Comp Size,Timer,D$,E$,-(SRCE<>2)] ' squash the prog? _GETFLAG[28] If Param<>0 and TYPE<>3 _WAIT[50] DD$=D$+"_Temp" _SQUASH_A_PROG[D$,DD$,1] End If Screen Close SCR_2 ' List of Progs Looping? If SRCE<>2 : Exit : End If Inc NL : S$=LST$(NL) If S$="" : Exit : End If F=FF Loop Screen SCR : Colour Back Colour(0) Screen Close SCR_ANIM Else ' pas d'animation! Do _DISPLAY_VUMETER Set Slider 2,2,2,0,4,4,4,0 _EXTRACT_PATH[S$] A$=Resource$(14)+(S$-Param$) Cls 6,SCSX/2-216,112 To SCSX/2+216,124 Ink 3 : Text SCSX/2-Len(A$)*4,120,A$ HSX1=SCSX/2-240+32+10 : HSY1=67+6 HSX2=SCSX/2+240-32-10 : HSY2=SCSY/2+60-40-6 _GETFLAG[35] : If Param : _PLAY_SND : End If E$="" : STATUS=0 Clear Key Repeat Add STATUS,1,0 To 100 Hslider HSX1,HSY1 To HSX2,HSY2,100,0,STATUS Exit If STATUS=100 Multi Wait K$=Inkey$ Until K$=Chr$(27) If K$=Chr$(27) : E$="< User Interruption >" : End If Hslider HSX1,HSY1 To HSX2,HSY2,100,0,0 _EXTRACT_PATH[D$] _END_COMPILE[480,60-(SRCE<>2)*24,Comp Size,Timer,D$-Param$,E$,-(SRCE<>2)] ' Squash the prog? _GETFLAG[28] If Param<>0 and TYPE<>3 _WAIT[50] DD$=D$+"_Temp" _SQUASH_A_PROG[D$,DD$,1] End If ' List of Progs Looping? If SRCE<>2 : Exit : End If Inc NL : S$=LST$(NL) If TYPE<3 D$=Left$(S$,Len(S$)-5) Else D$=Left$(S$,Len(S$)-5)+"_C.AMOS" End If If S$="" : Exit : End If Loop End If _FINISH_COMPILE: _GETFLAG[35] : If Param : _STOP_SND : End If _INIT_DISPLAY Menu On End Proc Procedure _DISPLAY_VUMETER VU$="SIze 480,120;" VU$=VU$+"BAse SW SX -2/,SH SY -2/;" VU$=VU$+"BOx 0,0,1,SX,SY;" VU$=VU$+"BOx 16,8,1,SX 16-,32;" VU$=VU$+"BOx 16,40,1,SX 16-,SY 8-;" VU$=VU$+"POutilne 13ME CentreX,8 TH+,13ME,0,7;" VU$=VU$+"BOx 32,48,67,SX 32-,SY 40-;" VU$=VU$+"PRint 32,SY 44- TH+,'0%',5;" VU$=VU$+"PRint SX 64-,SY 44- TH+,'100%',5;" VU$=VU$+"EXit;" D=Dialog Box(VU$) End Proc Procedure _EDIT_LIST Dim LST2$(NLST) Trap Dialog Close 1 NL=0 While LST$(NL)<>"" and NL"" If Exist(F$) _MATCH[F$] If Param=False LST$(NL)=F$ _EXTRACT_PATH[F$] : PAT$=Param$ LST2$(NL)=Left$(" "+LST$(NL)-PAT$,30) Inc NL Dialog Update 2,8,,NLST+1,NL If(Rdialog(2,7)=NL) and NL>=12 Dialog Update 2,7,NL-12,,NL Else Dialog Update 2,7,0,,NL End If Else _WARN[Err$(79),0] End If Else _WARN[Err$(81),0] End If End If Else _WARN[Resource$(30),0] End If Else If D=4 If NL"" If Exist(F$) _EXTRACT_PATH[F$] : PAT$=Param$ F$=Dir First$(PAT$+"*.AMOS") While F$<>"" If NL"*" _STRING_FILTER[F$] : F$=PAT$+Param$ _MATCH[F$] If Param=False LST$(NL)=F$ LST2$(NL)=Left$(" "+LST$(NL)-PAT$,30) Inc NL End If End If F$=Dir Next$ Else _WARN[Resource$(31),0] Exit End If Wend Dialog Update 2,8,,NLST+1,NL If(Rdialog(2,7)=NL) and NL>=12 Dialog Update 2,7,NL-12,,NL Else Dialog Update 2,7,0,,NL End If Else _WARN[Err$(81),0] End If End If Else _WARN[Resource$(31),0] End If Else If D=5 If POSL>=0 For I=POSL To NL-1 LST$(I)=LST$(I+1) LST2$(I)=LST2$(I+1) Next I LST$(NL)="" : LST2$(NL)="" Dec NL If POSL>=NL : POSL=NL-1 : End If Dialog Update 2,7,0,,NL Dialog Update 2,8,,POSL,NL End If Else If D=6 If NL>0 _WARN[Resource$(32),1] If Param=True For I=0 To NL LST$(I)="" LST2$(I)="" Next I NL=0 Dialog Update 2,7,0,,NL Dialog Update 2,8,,NLST+1,NL End If End If Else If D=8 POSL=Rdialog(2,8) If POSL>=NL Dialog Update 2,8,,NLST+1,NL End If End If End If Loop Dialog Close 2 End Proc[(D=2)] Procedure _END_COMPILE[W,H,SZ,T,D$,E$,REQUESTER] C$=" SIze 0VA,1VA;" C$=C$+"BAse SW SX -2/,SH SY -2/;" C$=C$+"BOx 0,0,1,SX,SY;" C$=C$+"BOx 8,4,1,SX 8-,20;" C$=C$+"POutline 3VA CentreX,8,3VA,0,7;" C$=C$+"PRint 4VA CentreX,28,4VA,3;" C$=C$+"PRint 5VA CentreX,40,5VA,3;" C$=C$+"BUtton 0,0,0,SX,20,0,0,0;[][SM;]" C$=C$+"IF 2VA1=; [" C$=C$+" BUtton 1,SX 2/ 32-,SY24-,64,16,0,0,1;[UNpack 0,0,13BP+; PRint 3ME CX BP+,4,3ME,3;][BR0;]" C$=C$+"KY 27,0; ]" C$=C$+"EXit;" Dialog Open 2,C$ Vdialog(2,0)=W Vdialog(2,1)=H Vdialog(2,2)=REQUESTER If E$="" Vdialog$(2,3)=Resource$(110) T=T/50 : M=T/60 : S=T mod 60 Vdialog$(2,4)=D$ Vdialog$(2,5)=Resource$(121)+Str$(SZ)+" "+Resource$(12)+". "+Resource$(120)+Str$(M)+"m"+Str$(S)+"s." Else Vdialog$(2,3)=Resource$(112) Vdialog$(2,4)=D$ Vdialog$(2,5)=E$ End If ' bell warning! _GETFLAG[36] If Param If Length(3) T$=Peek$(Start(3)-8,8) If T$="Music " or T$="Samples " Play 3,70,0 End If Else Play 3,70,0 End If End If D=Dialog Run(2) Timer=0 Do Multi Wait Exit If Dialog(2)=1 and REQUESTER=1 Exit If REQUESTER=0 and Timer>100 Loop _GETFLAG[35] If Param : _STOP_SND : End If Dialog Close 2 End Proc Procedure _EXTRACT_PATH[A$] If A$<>"" I=Len(A$)+1 Repeat Dec I : B$=Mid$(A$,I,1) Until B$="/" or B$=":" or I=1 If I>1 A$=Left$(A$,I) Else A$="" End If End If End Proc[A$] Procedure _GETFLAG[N] End Proc[Asc(Mid$(FLAG$,N,1))-48] Procedure _GRAB_EDITOR_PALETTE ADAT=Leek(Dreg(3)) If ADAT=0 Palette 0,$6F,$77,$EEE,$F00,$DD,$AA,$FF3 Else For C=0 To 7 Colour C,Deek(ADAT+28+C*2) Next Colour 1,(Colour(2) and $EEE)/2 End If End Proc Procedure _INFO[A$] Trap Dialog Freeze 1 L=Len(A$)*8 I$="SIze "+Str$(L+64)+",48;" I$=I$+"BAse SW SX -2/,SH SY -2/; SA 1;" I$=I$+"BOx 0,0,1,SX,SY;" I$=I$+"SetVar 2,'"+A$+"';" I$=I$+"PRint 2 VA CentreX,20,2 VA,7;" I$=I$+"EXit;" Dialog Open 2,I$ D=Dialog Run(2) End Proc Procedure _INIT_DISPLAY Menu Off _INIT_WORK Trap D=Dialog Run(1,1) _UPDATE_BUTTONS[0] Screen Show SCR Menu On End Proc Procedure _INIT_MENU Paper 0 : Pen 3 I=40 : J=0 A$=Resource$(I) Repeat If Left$(A$,1)=" " Inc J Menu$(J)=A$+" " Inc I LMAX=0 : I0=I : I1=I Repeat Inc I1 : A$=Resource$(I1) If Len(A$)>LMAX : LMAX=Len(A$) : End If Until Left$(A$,1)=" " K=0 For I=I0 To I1-1 Inc K : A$=Left$(Resource$(I),1) If A$<>"-" Menu$(J,K)=Left$(" "+Resource$(I)+Space$(LMAX+1),LMAX+2) Else Menu$(J,K)="(INk 1,2)"+String$("-",LMAX+2) Menu Inactive(J,K) End If Next I I=I1 : A$=Resource$(I) End If Until A$=" end" End Proc Procedure _INIT_WORK If DB$="" DB$=DB$+"LA 1;" DB$=DB$+"SIze SW,SH;" DB$=DB$+"BAse SWidth SX -2/,SHeight SY -2/;" DB$=DB$+"SetVar 0,SX 640- 16/ 8*;" DB$=DB$+"BOx 0,0,1,SX,SY;" DB$=DB$+"LIne 416,0,107,SX;" DB$=DB$+"PRint 500,4,1ME,7;" DB$=DB$+"UNpack 40,0,106;" DB$=DB$+"BUtton 0,40,0,SX,16,0,0,0;[][SM;]" DB$=DB$+"BUtton 1,0,0,40,16,0,0,1;[UNpack 0,0,100 BP+;][BR0;]" DB$=DB$+"KY 27,0;" DB$=DB$+"BOx 8 0VA+,28,1,8 216+ 0VA+,110;" DB$=DB$+"UNpack 72 0VA+,40,102;" DB$=DB$+"RotBut 2,8 8+ 0VA+,68,200;" DB$=DB$+"BOx 232 0VA+,28,1,232 216+ 0VA+,110;" DB$=DB$+"UNpack 200 0VA+,40,110;" DB$=DB$+"UNpack 264 0VA+,40,103;" DB$=DB$+"RotBut 3,232 8+ 0VA+,68,200;" DB$=DB$+"BOx 456 0VA+,28,1,SX 0VA- 8-,110;" DB$=DB$+"UNpack 512 0VA+,40,104;" DB$=DB$+"RotBut 4,456 8+ 0VA+,68,160;" DB$=DB$+"BUtton 5,24 0VA+,120,184,24,0,0,1;[LIne 0,0,79 3BP*+ ,184; UN 16,4BP+,99;PR 56,THBP+,99ME,3;][BR0;]" DB$=DB$+"BUtton 6,SX 384- 0VA- 24-,120,384,24,0,0,1;[LI0,0,79 3BP*+,384;UN 120,4BP+,105;][BR0;]" DB$=DB$+"EXit;" DB$=DB$+"UI RotatingButton,4;" ' RotBut ZN, X, Y, W _START_ICON_BUTT=91 _START_TEXT_BUTT=91 DB$=DB$+"[" DB$=DB$+"SetZon P4;" DB$=DB$+"BUtton P1,P2,P3,P4,24,0,0,1;" DB$=DB$+" [LIne 0,0,85 3BP*+,SX; UN 48,4BP+,"+Str$(_START_ICON_BUTT)+" ZN50+1-VA+;" DB$=DB$+" PRint 88,THBP+,"+Str$(_START_TEXT_BUTT)+" ZN50+1-VA+ ME,3;]" DB$=DB$+" [BR0; SV ZN50+1-,ZN10* 40+ ZN50+1-VA+ VA;]" DB$=DB$+"]" End If Trap Dialog Close 1 Dialog Open 1,DB$,99,1024*12 For I=1 To Len(FLAG$) _GETFLAG[I] Vdialog(1,I)=Param Next I _GETFLAG[1] : Vdialog(1,51)=Param _GETFLAG[2] : Vdialog(1,52)=Param+3 _GETFLAG[3] : Vdialog(1,53)=Param+5 End Proc[Errtrap] Procedure _INIT_ZONES NZ=6 VA0=((SCSX-640)/16)*8 ' Set up zones Restore DAT0 Reserve Zone NZ For Z=1 To NZ Read XZ(Z),YZ(Z),A,B : Set Zone Z,XZ(Z),YZ(Z) To XZ(Z)+A,YZ(Z)+B Next DAT0: Data 0,0,40,16 Data 16+VA0,68,200,24 Data 240+VA0,68,200,24 Data 464+VA0,68,160,24 Data 24+VA0,120,184,24 Data SCSX-384-VA0-24,120,384,24 Restore DAT1 For I=0 To 10 Read ANM_IC_T(I) Next I DAT1: Data 0,1,0,0,1,1,1,1,1,1,1,1 End Proc Procedure _LOAD_BANKS[A] If A Timer=0 _INFO[Resource$(24)] : _WAIT[50] If A and 1 _GETFLAG[37] : Rem *** animated buttons *** If Param If Length(15)=0 Trap Load DPATH$+"AMOSPro_CompilerA_resource.Abk",15 If Errtrap _NOINFO _INFO[Resource$(70)] : _WAIT[50] _SETFLAG[37,0] : Erase 15 _NOINFO End If End If Else Erase 15 End If End If If A and 2 _GETFLAG[34] : Rem *** iff animation *** Erase 10 If Param If ANM$<>"" Trap Open In 1,ANM$ If Errtrap _NOINFO _INFO[Resource$(71)] : _WAIT[50] _SETFLAG[34,0] : Erase 10 _NOINFO Else L=Frame Length(1) Trap Reserve As Work 10,L If Errtrap _NOINFO _INFO[Resource$(71)] : _WAIT[50] _SETFLAG[34,0] : Erase 10 _NOINFO Else ANM_NF=Frame Load(1 To 10,100)-3 End If Close 1 End If End If End If End If If A and 4 _GETFLAG[35] : Rem *** Soundtrack *** Erase 3 If Param If SND$<>"" If Length(3)=0 Trap Load SND$,3 If Errtrap Trap Med Load SND$,3 If Errtrap Trap Track Load SND$,3 If Errtrap _NOINFO _INFO[Resource$(72)] : _WAIT[50] _SETFLAG[35,0] : Erase 3 End If End If End If End If End If End If End If Repeat : Multi Wait : Until Timer>50 _NOINFO End If End Proc Procedure _LOAD_CONFIG[F$,REQ] On Error Proc _GEST_ERR Resume Label _END If F$="" F$=Fsel$(Dir$+"**","",Resource$(22)) End If If F$<>"" Trap Open In 1,F$ If Errtrap If REQ _WARN[Resource$(73),1] If Param=True F$=Fsel$(Dir$+"**","",Resource$(22)) _LOAD_CONFIG[F$,1] Pop Proc End If End If _WARN[Resource$(74),0] FLAG$="2100101100000000000000001100000000000000000" ANM$="" : SND$="" Pop Proc End If Input #1,FL$ Input #1,A$ Input #1,S$ Close 1 If Len(FL$)<>43 Error 95 Else FLAG$=FL$ ANM$=A$ SND$=S$ End If End If _END: End Proc Procedure _MATCH[A$] A=0 : F=False Repeat If A$=LST$(A) : F=True : Exit : End If Inc A Until LST$(A)="" End Proc[F] Procedure _NOINFO Trap Dialog Close 2 Trap Dialog Unfreeze 1 End Proc Procedure _NOP Multi Wait End Proc Procedure _OPEN_FREE_SCREEN[SX,SY] For S=0 To 7 Trap Screen S If Errtrap Trap Resource Screen Open S,SX,SY,0 If Errtrap : Pop Proc[-1] : End If Screen Hide S Cls 0 : Paper 0 : Pen 0 Wait Vbl Pop Proc[S] End If Next End Proc[-1] Procedure _OMM Auto View On If SCR>=0 Trap Screen Close SCR Trap Screen Open SCR,640,8,2,Hires If Errtrap=0 Curs Off Screen Display SCR,,78,, Palette $777,$FFF Centre Resource$(14) : Rem **** à changer ! **** Clear Key : While Mouse Key : Multi Wait : Wend Repeat : Multi Wait : Until Inkey$<>"" or Mouse Key<>0 Screen Close SCR End If End If _QUIT Error 24 End Proc Procedure _PLAY_SND On Error Proc _GEST_ERR Resume Label _END If Length(3) T$=Peek$(Start(3)-8,8) If T$="Music " Trap Music 1 Else If T$="Tracker " Track Loop On Trap Track Play 3 Else If T$="Med " Trap Med Play 3 Else If T$="Samples " Sam Bank 3 Sam Loop On Trap Sam Play 12,1 End If End If _END: End Proc Procedure _STOP_SND On Error Proc _GEST_ERR Resume Label _END If Length(3) T$=Peek$(Start(3)-8,8) If T$="Music " Trap Music Off Else If T$="Tracker " Trap Track Stop Else If T$="Med " Trap Med Stop Else If T$="Samples " Trap Sam Stop End If End If _END: End Proc Procedure _QUIT _WARN[Resource$(20),1] If Param=True Trap Dialog Close Trap Screen SCR If Errtrap=0 For Y=1 To SCSY Step SOP Screen Offset SCR,,Y Screen Display SCR,,,,SCSY-Y Wait Vbl Next Screen Close SCR End If Trap Close Erase All Edit End If End Proc Procedure _SETFLAG[N,V] Mid$(FLAG$,N,1)=Chr$(48+V) End Proc Procedure _SETUP Dialog Close 1 FLAG_OLD$=FLAG$ ANM_OLD$=ANM$ SND_OLD$=SND$ SU$=" LAbel 1;" SU$=SU$+"SIze 560,140;" SU$=SU$+"BAse SW SX-2/,SH SY-2/;" SU$=SU$+"BOx 0,0,1,SX,SY;" SU$=SU$+"BOx 8,4,1,SX 8-,20;" SU$=SU$+"POutline 130MECX,8,130ME,0,7;" SU$=SU$+"BUtton 0,0,0,SX,16,0,0,0;[][SM;]" SU$=SU$+"BUtton 3,32,32,SX 32-,24,0,0,1;[LIne 0,0,79 3BP*+,SX 32-; PRint 131ME CX,8,131ME,3;][BR0;]" SU$=SU$+"BUtton 4,32,60,SX 32-,24,0,0,1;[LIne 0,0,79 3BP*+,SX 32-; PRint 132ME CX,8,132ME,3;][BR0;]" SU$=SU$+"BUtton 5,32,SY48-,135METL 8*16+,16,0,0,1;[LIne 0,0,114 3BP*+,135METL8*16+; PRint 135MECX BP+,4,135ME,3;][BR0;]" SU$=SU$+"BUtton 6,SX 136METL8*- 16- 2/,SY 48-,136METL 8*16+,16,0,0,1;[LIne 0,0,114 3BP*+,136METL8*16+; PRint 136MECX4- BP+,4,136ME,3;][BR0;]" SU$=SU$+"BUtton 7,SX 137METL8*-48-,SY48-,137METL 8*16+,16,0,0,1;[LIne 0,0,114 3BP*+,137METL8*16+; PRint 137MECX4- BP+,4,137ME,3;][BR0;]" SU$=SU$+"BUtton 1,32,SY28-,64,16,0,0,1;[UNpack 0,0,13BP+; PRint 4MECX BP+,4,4ME,3;][BR0;]" ' SU$=SU$+"KY 27,0;" SU$=SU$+"BUtton 2,SX96-,SY28-,64,16,0,0,1;[UNpack 0,0,13BP+; PRint 5MECX BP+,4,5ME,3;][BR0;]" ' SU$=SU$+"KY 13,0;" : Rem *** Selecteur Fichier perturbateur! *** SU$=SU$+"EXit;" SU$=SU$+"LAbel 2;" SU$=SU$+"SIze 560,140;" SU$=SU$+"BAse SW SX-2/,SH SY-2/;" SU$=SU$+"BOx 0,0,1,SX,SY;" SU$=SU$+"BOx 8,4,1,SX 8-,20;" SU$=SU$+"POutline 140MECX16-,8,140ME' - 1'!,0,7;" SU$=SU$+"BUtton 0,0,0,SX,16,0,0,0;[][SM;]" SU$=SU$+"DOption 3,16,32,SX16-,141,4VA;" SU$=SU$+"DOption 4,16,44,SX16-,142,5VA;" SU$=SU$+"DOption 5,16,56,SX16-,143,6VA;" SU$=SU$+"DOption 6,16,68,SX16-,144,7VA;" SU$=SU$+"BUtton 1,16,SY20-,64,16,0,0,1;[UNpack 0,0,13BP+; PRint 4MECX BP+,4,4ME,3;][BR0;]" SU$=SU$+"KY 27,0;" SU$=SU$+"BUtton 2,SX80-,SY20-,64,16,0,0,1;[UNpack 0,0,13BP+; PRint 3MECX BP+,4,3ME,3;][BR0;]" SU$=SU$+"KY 13,0;" SU$=SU$+"BUtton 8,SX 8METL8*- 16- 2/,SY20-,8METL 8*16+,16,0,0,1;[LIne 0,0,114 3BP*+,8METL8*16+; PRint 8MECX BP+,4,8ME,3;][BR0;]" SU$=SU$+"EXit;" SU$=SU$+"LAbel 3;" SU$=SU$+"SIze 560,140;" SU$=SU$+"BAse SW SX-2/,SH SY-2/;" SU$=SU$+"BOx 0,0,1,SX,SY;" SU$=SU$+"BOx 8,4,1,SX 8-,20;" SU$=SU$+"POutline 140MECX16-,8,140ME' - 2'!,0,7;" SU$=SU$+"BUtton 0,0,0,SX,16,0,0,0;[][SM;]" SU$=SU$+"DOption 3,16,32,SX16-,151,14VA;" SU$=SU$+"DOption 4,16,44,SX16-,152,15VA;" SU$=SU$+"DOption 5,16,56,SX16-,153,16VA;" SU$=SU$+"DOption 6,16,68,SX16-,154,17VA;" SU$=SU$+"BUtton 1,SX 9METL8*- 16- 2/,SY20-,9METL 8*16+,16,0,0,1;[LIne 0,0,114 3BP*+,9METL8*16+; PRint 9MECX BP+,4,9ME,3;][BR0;]" SU$=SU$+"KY 27,0;" SU$=SU$+"EXit;" SU$=SU$+"LAbel 4;" SU$=SU$+"SIze 560,140;" SU$=SU$+"BAse SW SX-2/,SH SY-2/;" SU$=SU$+"BOx 0,0,1,SX,SY;" SU$=SU$+"BOx 8,4,1,SX 8-,20;" SU$=SU$+"POutline 160MECX16-,8,160ME' - 1'!,0,7;" SU$=SU$+"BUtton 0,0,0,SX,16,0,0,0;[][SM;]" SU$=SU$+"DOption 3,16,32,SX16-,161,24VA;" SU$=SU$+"DOption 4,16,44,SX16-,162,25VA;" SU$=SU$+"DOption 5,16,56,SX16-,163,26VA;" SU$=SU$+"DOption 6,16,68,SX16-,164,27VA;" SU$=SU$+"BUtton 1,16,SY20-,64,16,0,0,1;[UNpack 0,0,13BP+; PRint 4MECX BP+,4,4ME,3;][BR0;]" SU$=SU$+"KY 27,0;" SU$=SU$+"BUtton 2,SX80-,SY20-,64,16,0,0,1;[UNpack 0,0,13BP+; PRint 3MECX BP+,4,3ME,3;][BR0;]" SU$=SU$+"KY 13,0;" SU$=SU$+"BUtton 8,SX8METL8*- 16- 2/,SY20-,8METL8*16+,16,0,0,1;[LIne 0,0,114 3BP*+,8METL8*16+; PRint 8MECX BP+,4,8ME,3;][BR0;]" SU$=SU$+"EXit;" SU$=SU$+"LAbel 5;" SU$=SU$+"SIze 560,140;" SU$=SU$+"BAse SW SX-2/,SH SY-2/;" SU$=SU$+"BOx 0,0,1,SX,SY;" SU$=SU$+"BOx 8,4,1,SX 8-,20;" SU$=SU$+"SetVar 0,SW SX- 2/;" SU$=SU$+"SetVar 1,SH SY- 2/;" SU$=SU$+"POutline 160MECX16-,8,160ME' - 2'!,0,7;" SU$=SU$+"BUtton 0,0,0,SX,16,0,0,0;[][SM;]" SU$=SU$+"DOption 3,16,32,SX16-,171,34VA;" SU$=SU$+"DSelect 7,16,44,SX16-;" SU$=SU$+"DOption 4,16,56,SX16-,172,35VA;" SU$=SU$+"DSelect 8,16,68,SX16-;" SU$=SU$+"DOption 5,16,80,SX16-,173,36VA;" SU$=SU$+"DOption 6,16,92,SX16-,174,37VA;" SU$=SU$+"BUtton 1,SX9METL8*- 16- 2/,SY20-,9METL8*16+,16,0,0,1;[LIne 0,0,114 3BP*+,9METL8*16+; PRint 9MECX BP+,4,9ME,3;][BR0;]" SU$=SU$+"KY 27,0;" SU$=SU$+"EXit;" SU$=SU$+"UI DO,6;" ' DrawOption P1:ZN, P2:X, P3:Y, P4:W, P5:ME, P6:BP SU$=SU$+"[" SU$=SU$+"LIne P2,P3,111,P4 68-;" SU$=SU$+"PRint P2 16+,P3 1+,P5ME,3;" SU$=SU$+"BUtton P1,P4 64-,P3,64,10,P6,0,1;" SU$=SU$+" [LIne 0,0,41 3BP*+,64; PRint 6BP+MECX BP+,1,6BP+ME,3;][]" SU$=SU$+"]" SU$=SU$+"UI DS,4;" ' Drawselect P1:ZN, P2:X, P3:Y, P4:W SU$=SU$+"[" SU$=SU$+"LIne P2,P3,111,P4 28-;" SU$=SU$+"BUtton P1,P4 24-,P3,24,10,0,0,1;" SU$=SU$+" [UNpack 0,0,120BP+;][BR0;]" SU$=SU$+"]" Dialog Open 1,SU$,60,1024*12 Do For I=4 To Len(FLAG$) _GETFLAG[I] Vdialog(1,I)=Param Next I Do D1=Dialog Run(1,1) Do Multi Wait D1=Dialog(1) If D1=1 FLAG$=FLAG_OLD$ ANM$=ANM_OLD$ SND$=SND_OLD$ Exit 3 Else If D1=2 A=0 If Vdialog(1,37)<>Asc(Mid$(FLAG_OLD$,37,1))-48 : A=1 : End If If Vdialog(1,34)<>Asc(Mid$(FLAG_OLD$,34,1))-48 or ANM$<>ANM_OLD$ : A=A+2 : End If If Vdialog(1,35)<>Asc(Mid$(FLAG_OLD$,35,1))-48 or SND$<>SND_OLD$ : A=A+4 : End If _LOAD_BANKS[A] Exit 3 Else If D1=3 ' -- Compiled prog setup 1 -- FLAG_OLD2$=FLAG$ ANM_OLD2$=ANM$ SND_OLD2$=SND$ Wait Vbl D2=Dialog Run(1,2) Do Multi Wait D2=Dialog(1) _DISPLAY_VDIALOG If D2=1 FLAG$=FLAG_OLD2$ Exit 3 Else If D2=2 Exit 3 Else If D2>=3 and D2<8 D=D2+1 Vdialog(1,D)=Abs(Vdialog(1,D)-1) _SETFLAG[D,Vdialog(1,D)] Else If D2=8 ' -- Compiled prog setup 2 -- D3=Dialog Run(1,3) Do Multi Wait _DISPLAY_VDIALOG D3=Dialog(1) If D3=1 Exit Else If D3>=3 D=D3+11 Vdialog(1,D)=Abs(Vdialog(1,D)-1) _SETFLAG[D,Vdialog(1,D)] End If Loop D2=Dialog Run(1,2) End If Loop Else If D1=4 ' -- Compiler setup 1 -- FLAG_OLD2$=FLAG$ Wait Vbl D2=Dialog Run(1,4) Do Multi Wait D2=Dialog(1) _DISPLAY_VDIALOG If D2=1 FLAG$=FLAG_OLD2$ ANM$=ANM_OLD2$ SND$=SND_OLD2$ Exit 3 Else If D2=2 Exit 3 Else If D2>=3 and D2<8 D=D2+21 Vdialog(1,D)=Abs(Vdialog(1,D)-1) _SETFLAG[D,Vdialog(1,D)] Else If D2=8 ' -- Compiler setup 2 -- D3=Dialog Run(1,5) LMAX=(SCSX-Vdialog(1,0)*2-88)/8 Ink 5 : Text Vdialog(1,0)+24,Vdialog(1,1)+51,Left$(ANM$,LMAX) Text Vdialog(1,0)+24,Vdialog(1,1)+75,Left$(SND$,LMAX) Do Multi Wait D3=Dialog(1) _DISPLAY_VDIALOG If D3=1 Exit Else If D3=7 If Vdialog(1,3+31) _EXTRACT_PATH[ANM$] A$=Fsel$(Param$,ANM$-Param$,Resource$(2)) If A$<>"" ANM$=A$ Cls 6,Vdialog(1,0)+24,Vdialog(1,1)+45 To Vdialog(1,0)+24+LMAX*8,Vdialog(1,1)+53 Ink 5 : Text Vdialog(1,0)+24,Vdialog(1,1)+51,Left$(ANM$,LMAX) End If End If Else If D3=8 If Vdialog(1,4+31) _EXTRACT_PATH[SND$] A$=Fsel$(Param$,SND$-Param$,Resource$(2)) If A$<>"" SND$=A$ Cls 6,Vdialog(1,0)+24,Vdialog(1,1)+69 To Vdialog(1,0)+24+LMAX*8,Vdialog(1,1)+77 Ink 5 : Text Vdialog(1,0)+24,Vdialog(1,1)+75,Left$(SND$,LMAX) End If End If Else If D3>=3 D=D3+31 Vdialog(1,D)=Abs(Vdialog(1,D)-1) _SETFLAG[D,Vdialog(1,D)] End If Loop D2=Dialog Run(1,4) End If Loop Else If D1=5 _LOAD_CONFIG["",1] Else If D1=6 _SAVE_CONFIG[CNAME$] Else If D1=7 _SAVE_CONFIG[""] End If Loop Loop Loop Dialog Close 1 _INIT_DISPLAY End Proc Procedure _SAVE_CONFIG[F$] If F$="" F$=Fsel$("**","",Resource$(23)) End If If F$<>"" Trap Open Out 1,F$ Trap Print #1,FLAG$ Trap Print #1,ANM$ Trap Print #1,SND$ Trap Close 1 If Errtrap _WARN[Resource$(27),0] End If End If End Proc Procedure _SQUASH_A_PROG[A$,B$,A] ' If Param>0 ' A$="Successfull squash! Final size:"+Str$(Param)+","+Str$(SZ-Param)+" bytes saved." ' _INFO[A$] ' Else ' If Param=0 ' _INFO["Squash interrupted."] ' End If ' If Param<0 ' _INFO["Un-successfull Squash, No object file on disc."] ' End If ' End If ' _WAIT[50] : _NOINFO ' trap Kill D$ ' trap Rename DD$ To D$ End Proc Procedure _STRING_FILTER[A$] A$=Mid$(A$,2,Len(A$)-9) For I=Len(A$) To 1 Step -1 Exit If Mid$(A$,I,1)<>" " Next I A$=Left$(A$,I) End Proc[A$] Procedure _UPDATE_BUTTONS[A] If A=0 Restore "DAT"+Right$("0"+(Str$(10*Vdialog(1,51)+Vdialog(1,52))-" "),2) DAT03: Data 1,2,0,-1 Data 0,0,0,4,3,-1 Data 0,0,0,0,0,5,-1 DAT04: Data 1,2,0,-1 Data 0,0,0,4,3,-1 Data 0,0,0,0,0,6,7,5,-1 DAT13: Data 1,2,0,-1 Data 0,0,0,4,3,-1 Data 0,0,0,0,0,5,-1 DAT14: Data 1,2,0,-1 Data 0,0,0,4,3,-1 Data 0,0,0,0,0,6,7,5,-1 DAT24: Data 1,2,0,-1 Data 0,0,0,0,4,-1 Data 0,0,0,0,0,6,7,5,-1 For BUTT=2 To 4 I=0 Do Read VA Exit If VA<0 Vdialog(1,40+BUTT*10+I)=VA Inc I Loop Next BUTT Else If A=2 If Vdialog(1,51)<=1 If Vdialog(1,52)=3 Restore DAT20 DAT20: Data 2 Data 3,0,0,0,4,3,-1 Data 4,0,0,0,0,0,5,-1 Else Restore DAT21 DAT21: Data 2 Data 3,0,0,0,4,3,-1 Data 4,0,0,0,0,0,6,7,5,-1 End If Else Restore DAT22 DAT22: Data 2 Data 3,0,0,0,0,4,-1 Data 4,0,0,0,0,0,6,7,5,-1 End If Else If A=3 If Vdialog(1,52)=3 Restore DAT30 DAT30: Data 1 Data 4,0,0,0,0,0,5,-1 Else Restore DAT31 DAT31: Data 1 Data 4,0,0,0,0,0,6,7,5,-1 End If Else Pop Proc End If End If Read NB_LIST For J=1 To NB_LIST FLAG=True Read BUTT I=0 Do Read V Exit If V<0 VA=V If VA=Vdialog(1,50+BUTT-1) : FLAG=False : End If Vdialog(1,40+BUTT*10+I)=VA Inc I Loop If FLAG Vdialog(1,50+BUTT-1)=VA _SETFLAG[BUTT-1,Vdialog(1,50+BUTT-1)+5*(BUTT=4)+3*(BUTT=3)] Dialog Update 1,BUTT End If Next J End If End Proc Procedure _WAIT[T] For I=1 To T Multi Wait Next I End Proc Procedure _WARN[A$,REQUESTER] Trap Dialog Freeze 1 Trap Dialog Freeze 2 L=Len(A$)*8 WA$=" SIze 1VA TL8* 32+, 48 0VA 24*+;" WA$=WA$+"BAse SW SX -2/,SH SY -2/; SA 1;" WA$=WA$+"BOx 0,0,1,SX,SY;" WA$=WA$+"BOx 8,4,1,SX 8-,20;" WA$=WA$+"POutline 21ME CentreX,8,21ME,0,7;" WA$=WA$+"PRint 1VA CentreX,20 TH+,1VA,3;" WA$=WA$+"BUtton 0,0,0,SX,32,0,0,0;[][SM;]" WA$=WA$+"IF 0VA 1=;[" WA$=WA$+"BUtton 1,16,SY24-,64,16,0,0,1;[UNpack 0,0,13BP+; PRint 4ME CX BP+,4,4ME,3;][BR0;]" WA$=WA$+"KY 27,0;" WA$=WA$+"BUtton 2,SX80-,SY24-,64,16,0,0,1;[UNpack 0,0,13BP+; PRint 3ME CX BP+,4,3ME,3;][BR0;]" WA$=WA$+"KY 13,0; ]" WA$=WA$+"EXit;" Dialog Open 3,WA$ Vdialog(3,0)=REQUESTER Vdialog$(3,1)=A$ D=Dialog Run(3) Timer=0 Repeat Multi Wait D=Dialog(3) Exit If Timer>200 and REQUESTER=0 Until D=1 or D=2 Dialog Close 3 Trap Dialog Unfreeze 1 Trap Dialog Unfreeze 2 End Proc[(D=2)] Procedure MN_ABOUT Dialog Freeze 1 AB$="SIze 480,100;" AB$=AB$+"BAse SW SX -2/,SH SY -2/; SA 1;" AB$=AB$+"BOx 0,0,1,SX,SY;" AB$=AB$+"BOx 16,8,1,SX 16-,72;" AB$=AB$+"SVar 2,'AMOS Compiler "+VER$+"';" AB$=AB$+"POutilne 2 VA CentreX,8 TH+,2VA,0,7;" AB$=AB$+"SVar 2,10ME ' Francois LIONET'!;" AB$=AB$+"PRint 2VA CentreX,24 TH+,2VA,7;" AB$=AB$+"SVar 2,11ME ' Jean-Baptiste BOLCATO'!;" AB$=AB$+"PRint 2VA CentreX,36 TH+,2VA,7;" AB$=AB$+"SVar 2,'© 1993 Europress Software Ltd.';" AB$=AB$+"PRint 2VA CentreX,48 TH+,2VA,7;" AB$=AB$+"PRint 1VA CentreX,78 TH+,1 VA,3;" AB$=AB$+"RUn 250,%1111;" AB$=AB$+"EXit;" D=Dialog Box(AB$,1,"Chip:"+Str$(Chip Free)+" Fast:"+Str$(Fast Free)) Dialog Unfreeze 1 End Proc Procedure MN_VERSIONS End Proc ' *** debug!!... *** Procedure _MON Monitor Resume Next End Proc Procedure _GEST_ERR _WARN[Err$(Errn),0] Resume Label End Proc Procedure _DISPLAY_VDIALOG 'Home 'Print Chip Free+Fast Free Pop Proc Trap D=Dialog(1) If Errtrap=0 For I=1 To Len(FLAG$) : Print Using "#";Vdialog(1,I); : Next I End If Print : Print FLAG$ For I=1 To Len(FLAG$) : Print Right$(Str$(I),1); : Next I End Proc