
; Projekt Multi-Execute (PD)

; Author: CYBORG (c) 1994 

; Programmiersprache: ASSEMBLER & PREASS V1.1 (c) 1994 Cyborg

; Ich hafte fuer keine aufkommenden Schaeden.ich behaupte allerdings
; auch ,dass es keine solchen Fehlfunktionen gibt.Ausser man benutzt
; das Programm so.

; Beschreibung: Das Programm soll Programme solange ausfuehren , wie Files
;               im angegebenen Pfad sind.D.h. wenn z.b. 5 Bilder im Pics:
;               sind,und das Programm die Funktion SHOWINHALTDIR nicht
;               supportet,dann soll mit MULTI-EXECUTE das dir gelesen
;               und das Programm solange mit einem neuen Namen aufgerufen
;               werden,wie Files im Dir sind.
;
; Syntax:       ME DIR: PROGRAMM + Optionen


Include "sys:coder/LVO3.0/dos_lib.i"
Include "sys:coder/LVO3.0/Exec_lib.i"

EXECBASE=4
ACCESS_READ=-2

    SUBQ #1,d0
    ANDI.L #$0000FFFF,D0
    move.l D0,LAENGE
    MOVE.L A0,ADRESSE
    TST.L D0
    BEQ ENDE2
    DOSBASE=OPENLIBRARY(#DOSNAME,#0)
    TST.L D0
    BEQ ENDE
    JSR COPYNAMES
    CMPI.L #2,D0
    BNE ENDE
    DIRLOCK=LOCK(#DIRNAME,#ACCESS_READ)
    TST.L DIRLOCK
    BEQ ENDE
    JSR DOIT
ENDE:
    TST.L DIRLOCK
    BEQ ENDE1
    UNLOCK(DIRLOCK)
ENDE1:
    TST.L DOSBASE
    BEQ ENDE2
    CLOSELIBRARY(DOSBASE)
ENDE2:
    RTS

COPYNAMES:
    MOVE.L LAENGE,D5
    MOVE.L ADRESSE,A5
    MOVE.L #DIRNAME,A0
.LABEL1:   
    SUB.L #1,D5
    MOVE.B (A5)+,D0
    CMPI.B #$20,D0
    BEQ .LABEL2
    MOVE.B D0,(A0)+
    BRA .LABEL1
.LABEL2:
    MOVE.L #0,(A0)
    MOVE.L A5,ADRESSE
    MOVE.L D5,LAENGE
    RTS    

DOIT:
    EXAMINE(DIRLOCK,#FILEINFOBLOCK)
    TST.L D0
    BEQ .LABEL2
    LEA FILEINFOBLOCK,A0
    LEA 4(A0),A0
    MOVE.L (A0),D0
    CMPI.L #0,D0
    BLT ISN_FILE
DOIT1:
    EXNEXT(DIRLOCK,#FILEINFOBLOCK)
    TST.L D0
    BEQ .LABEL2
    LEA FILEINFOBLOCK,A0
    LEA 4(A0),A0
    MOVE.L (A0),D0
    CMPI.L #0,D0
    BLT ISN_FILE
    BRA DOIT1
.LABEL2:
    RTS

ISN_FILE:
    LEA EXECUTEPUFFER,A2
    MOVE.L ADRESSE,A5
    MOVE.L LAENGE,D5
    LEA FILEINFOBLOCK,A0
    LEA 8(A0),A0
.LABEL1:    
    SUB.L #1,D5
    MOVE.B (A5)+,D0
    CMPI.B #`%`,D0
    BEQ PROZENT
ISN_FILE_L1:    
    MOVE.B D0,(A2)+
ISN_FILE_L2:    
    CMPI.L #0,D5
    BNE .LABEL1
    MOVE.B #$00,(A2)
    EXECUTE(#EXECUTEPUFFER,#0,#0)
    BRA DOIT1

PROZENT:
    MOVE.B (A5),D1
    CMPI.B #`F`,D1
    BEQ .LABEL1
    CMPI.B #`f`,D1
    BEQ .LABEL1
    CMPI.B #`N`,D1
    BEQ .LABEL10
    CMPI.B #`n`,D1
    BEQ .LABEL10
    BRA ISN_FILE_L1
.LABEL1:
    MOVE.B (A5)+,D0
    SUB.L #1,D5
    MOVE.L #DIRNAME,A1
    LEA FILEINFOBLOCK,A0
    LEA 8(A0),A0
.LABEL4:
    MOVE.B (A1)+,D0
    CMPI.B #$00,D0
    BEQ .LABEL2
    MOVE.B D0,(A2)+
    BRA .LABEL4
.LABEL2:
    MOVE.B (A0)+,D0
    CMPI.B #$00,D0
    BEQ .LABEL3
    MOVE.B D0,(A2)+
    BRA .LABEL2
.LABEL3:
    BRA ISN_FILE_L2

.LABEL10:
    MOVE.B (A5)+,D0
    SUB.L #1,D5
    LEA FILEINFOBLOCK,A0
    LEA 8(A0),A0
.LABEL11:
    MOVE.B (A0)+,D0
    CMPI.B #$00,D0
    BEQ .LABEL12
    MOVE.B D0,(A2)+
    BRA .LABEL11
.LABEL12:
    BRA ISN_FILE_L2

EVEN
DOSNAME:        DC.B `dos.library`,0


EVEN
DIRLOCK:        DC.L 0
DOSBASE:        DC.L 0
ADRESSE:        DC.L 0
LAENGE:         DC.L 0

CNOP 0,4
FILEINFOBLOCK: BLK.B 260,0

EVEN
DIRNAME:        BLK.B 1024,0
EXECUTEPUFFER:  BLK.B 1024,0








