******************************************************************************
*
*                              One assign 1.1
*
*                           (c) 1994 Jan Skypala
*
*                   $VER: OneAssign.s 37.2 (1 Mar 1994)
*
******************************************************************************

                incdir  'Include:'
                include 'exec/exec_lib.i'
                include 'dos/dos_lib.i'
                include 'dos/dos.i'

_SysBase        equ     4

NORMALASSIGNS   set     1
ADDASSIGNS      set     1
DEFERASSIGNS    set     1
PATHASSIGNS     set     1

Start           move.l  (_SysBase).w,a6
                lea     DosName(pc),a1
                moveq   #37,d0
                jsr     _LVOOpenLibrary(a6)     ;open dos.library
                beq.b   End
                move.l  d0,a6
                lea     Assigns(pc),a4          ;beginning of assign list
Normal          IFD     NORMALASSIGNS           
;               lea     NormalAssigns(pc),a4
                move.l  #_LVOAssignLock,d4
                bsr.b   LockOnes
                ENDIF
Adds            IFD     ADDASSIGNS
;               lea     AddAssigns(pc),a4       ;beginning of addassign list
                move.l  #_LVOAssignAdd,d4
                bsr.b   LockOnes
                ENDIF
Defers          IFD     DEFERASSIGNS
;               lea     DeferAssigns(pc),a4     ;beginning of deferassigns list
                move.l  #_LVOAssignLate,d4
                bsr.b   Paths
                ENDIF
Path            IFD     PATHASSIGNS
;               lea     PathAssigns(pc),a4      ;beginning of pathassigns list
                move.l  #_LVOAssignPath,d4
                bsr.b   Paths
                ENDIF
                move.l  a6,a1                   ;no => close dos.library
                move.l  (_SysBase).w,a6
                jsr     _LVOCloseLibrary(a6)
                rts                             ;and return

                IFD     NORMALASSIGNS
LOCKS           set     1
                ENDIF
                IFND    LOCKS
                IFD     ADDASSIGNS
LOCKS           set     1
                ENDIF
                ENDIF
                IFD     LOCKS
LockOnes        move.l  a4,d1                   ;dir to d1
                moveq.l #ACCESS_READ,d2
                jsr     _LVOLock(a6)            ;lock it
                move.l  d0,d2
.loop2          tst.b   (a4)+                   ;move to next string
                bne.b   .loop2
                move.l  a4,d1                   ;that's the assign
                jsr     (a6,d4)                 ;assign it
.loop3          tst.b   (a4)+                   ;move behind this string
                bne.b   .loop3
                tst.b   (a4)                    ;is there another string?
                bne.b   LockOnes                ;yes => process it
                addq    #1,a4
                rts
                ENDIF
                IFD     DEFERASSIGNS
PATHS           set     1
                ENDIF
                IFND    PATHS
                IFD     PATHASSIGNS
PATHS           set     1
                ENDIF
                ENDIF
                IFD     PATHS
Paths           move.l  a4,d2                   ;dir to d2
.loop2          tst.b   (a4)+                   ;move to next string
                bne.b   .loop2
                move.l  a4,d1                   ;that's the assign
                jsr     (a6,d4)                 ;assign it
.loop3          tst.b   (a4)+                   ;move behind this string
                bne.b   .loop3
                tst.b   (a4)                    ;is there another string?
                bne.b   Paths                   ;yes => process it
                addq    #1,a4
                rts
                ENDIF
End

Version         dc.b    '$VER:OneAssign 37.2',0
DosName         dc.b    'dos.library',0
Assigns         IFD     NORMALASSIGNS
NormalAssigns   dc.b    'Work:ENV',0,'ENV',0
                dc.b    'Work:T',0,'T',0
                dc.b    'Work:Clipboards',0,'CLIPS',0
                dc.b    'S:',0,'REXX',0
                dc.b    'DEVS:Printers',0,'PRINTERS',0
                dc.b    'DEVS:Keymaps',0,'KEYMAPS',0
                dc.b    'Work:BitmapFonts',0,'FONTS',0
                dc.b    'Work:Locale',0,'LOCALE',0
                dc.b    0
                ENDIF
                IFD     ADDASSIGNS
AddAssigns      dc.b    'Work:Intellifont',0,'FONTS',0
                dc.b    'SYS:Classes',0,'LIBS',0
                dc.b    0
                ENDIF
                IFD     DEFERASSIGNS
DeferAssigns    dc.b    'LOCALE:Help',0,'HELP',0
                dc.b    'SYS:',0,'HD',0
                dc.b    'Work:GoldED',0,'GOLDED',0
                dc.b    'Work:GUIMake',0,'GUIMAKE',0
                dc.b    'Work:Include',0,'INCLUDE',0
                dc.b    'Work:Include',0,'INCLUDES',0
                dc.b    'Work:Text_Include',0,'TEXT_INCLUDE',0
                dc.b    'Work:DPaint',0,'Deluxe Paint',0
                dc.b    'Work:DPaint',0,'DPaintIV',0
                dc.b    'Work:',0,'JPEGTMP',0
                dc.b    'Work:Pascal',0,'PASCAL',0
                dc.b    'SYS:Tools/Commodities',0,'PowerCache',0
                dc.b    'Work:Source/Articles/HowToCode',0,'HowToCode',0
                dc.b    'Work:E/Sources',0,'E',0
                dc.b    'Work:E/Bin',0,'EC',0
                dc.b    'Work:E/Modules',0,'EMODULES',0
                dc.b    'Work:E/ModulesText',0,'ETEXTS',0
                dc.b    0
                ENDIF
                IFD     PATHASSIGNS
PathAssigns     dc.b    'DF0:',0,'Floppy disk',0
                dc.b    0
                ENDIF
