' -- EXAMPLE use of Requester -- 
Screen Open 6,640,512,8,Hires
Flash Off 
Palette ,$FFF
Cls 0
Pen 6
Paper 0
For K=1 To 25 : Print String$("#",80) : Next K
Proc REQUEST_FILE[7,70,0,150,"Select a TRACKER module",Dir$]
Print Param$
If Param$>""
   Track Load Param$,3
   Track Play 3
End If 
End 
' -- End Of EXAMPLE -- 


Procedure REQUEST_FILE[SCR,RX,RY,RH,TITLE$,PATH$]
   If Exist(PATH$)
      ' Replacement File Requester 
      ' ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ 
      ' cODED bY ßudda/NFA 
      ' StARtEd : 27.02.1995 
      ' FiNiSHed: 22.04.1995 
      
      ' -- Get Character Width & Height For File List -- 
      RW=340
      CH=(RH-60)/8
      AMOUNT_OF_FILES=500 : Rem max amount of files to display 
      Dim FILE_NAME$(AMOUNT_OF_FILES)
      BACK_UP_DIR$=Dir$
      
      ' -- Define File Requester Interface Program --
      FREQ$="BA "+Str$(RX)+","+Str$(RY)+";SI "+Str$(340+RX)+","+Str$(RH+RY)+";SA 1;"
      FREQ$=FREQ$+"IN 3,0,0;GB BX,BY,SX,SY;"
      FREQ$=FREQ$+"IN 2,0,0;GL BX,BY,BX,SY;GL BX,BY,SX,BY;GL BX4+,SY10-,SX,SY10-;GL SX3-,SY10-,SX3-,BY11+;"
      FREQ$=FREQ$+"IN 1,0,0;GL BX,SY,SX,SY;GL SX,BY,SX,SY;GL BX,BY10+,SX,BY10+;GL BX4+,BY11+,BX4+,SY11-;"
      FREQ$=FREQ$+"IN 0,0,0;GB BX5+,BY11+,SX4-,SY11-;"
      FREQ$=FREQ$+"PR BX21+,BY1+,'"+Left$(TITLE$,36)+"',1;"
      FREQ$=FREQ$+"AL 1,BX16+,BY14+,38,"+Str$(CH)+",0VA,0,2,0,1;[ZC 3,0VA ZP AR;]"
      FREQ$=FREQ$+"VS 2,SX26-,BY14+,11,SY60-,0,"+Str$(CH)+",1VA1-,"+Str$(CH)+";[ZC 1,ZP;]"
      FREQ$=FREQ$+"ED 3,BX20+,SY34-,40,40,'',0,1;ED 4,BX20+,SY43-,34,40,'',0,1;"
      FREQ$=FREQ$+"IN 2,0,0;GL BX14+,BY13+,SX32-,BY13+;GL BX14+,BY13+,BX14+,SY45-;GL SX29-,BY13+,SX18-,BY13+;GL SX29-,BY13+,SX28-,SY45-;"
      FREQ$=FREQ$+"IN 1,0,0;GL BX14+,SY45-,SX32-,SY45-;GL SX32-,SY45-,SX32-,BY13+;GL SX15-,BY13+,SX15-,SY45-;GL SX15-,SY45-,SX28-,SY45-;"
      FREQ$=FREQ$+"GL BX4+,SY35-,SX4-,SY35-;GL BX4+,SY25-,SX4-,SY25-;"
      FREQ$=FREQ$+"BU 5,SX100-,SY22-,80,15,0,0,1;[LI 0,0,28,80;PR 20,1,'OKAY',1BP+;][BR 0;]"
      FREQ$=FREQ$+"BU 6,SX210-,SY22-,80,15,0,0,1;[LI 0,0,28,80;PR 12,1,'PARENT',1BP+;][BR 0;]"
      FREQ$=FREQ$+"BU 7,BX30+,SY22-,80,15,0,0,1;[LI 0,0,28,80;PR 12,1,'CANCEL',1BP+;][BR 0;]"
      
      ' -- Open Screen For Requester (If not already open)--   
      Trap Screen SCR
      If Errtrap or Screen Colour<8
         Screen Open SCR,640,(RY+RH)+1,8,Hires
         Show On 
         Flash Off 
         Curs Off 
         Palette $AAA,$0,$FFF,$68B,$999,$0,$AAA,$FFF
         Cls 0
         OWN_SCREEN=1
         FREQ$=FREQ$+"BU 8,BX,BY,SX,BY10+,0,0,1;[][SM;BR 0;]"
      End If 
      Dialog Open 1,FREQ$+"EX;"
      
      ' -- Get Names OF Files In Current Dir --
      _GET_DIR:
      Dir$=PATH$
      For FF=0 To AMOUNT_OF_FILES : FILE_NAME$(FF)="" : Next FF
      TM$=Dir First$(PATH$)
      F=0
      While TM$<>""
         If Left$(TM$,1)<>"*"
            PP=29
            For I=29 To 2 Step -1
               KWS$=Mid$(TM$,I,1)
               If KWS$=" "
                  Dec PP
               End If 
               Exit If KWS$<>" "
            Next I
            
            FILE_NAME$(F)=Mid$(TM$,2,PP-1)
         Else 
            FILE_NAME$(F)=Mid$(TM$,2)
            Mid$(FILE_NAME$(F),30,5)="(Dir)"
         End If 
         TM$=Dir Next$
         Inc F
      Wend 
      
      ' -- Get The Requester Working --
      Vdialog(1,0)=Array(FILE_NAME$(0))
      Vdialog(1,1)=F
      XXX=Dialog Run(1)
      Dialog Update 1,4,PATH$
      Do 
         BT=Dialog(1)
         If BT=1 and Mid$(Rdialog$(1,3),30,5)="(Dir)"
            PATH$=PATH$+Rdialog$(1,3)-" "-"(Dir)"+"/"
            Dialog Update 1,3,""
            Goto _GET_DIR
         End If 
         If BT=3 or BT=5
            SELECTED_FILE$=PATH$+Left$(Rdialog$(1,3),29)
            Dir$=BACK_UP_DIR$
            Exit 1
         End If 
         If BT=4
            PATH$=Rdialog$(1,4)
            Goto _GET_DIR
         End If 
         If BT=6
            Parent 
            PATH$=Dir$
            Goto _GET_DIR
         End If 
         Exit If BT=7
      Loop 
      Dialog Close 1
      If OWN_SCREEN=1 : Screen Close SCR : End If 
   End If 
End Proc[SELECTED_FILE$]





