home *** CD-ROM | disk | FTP | other *** search
- ; ----------------------------------------------
- ; --- Library Manager für ROM-Libraries ---
- ; --- erstellte von U.Zschuckelt (7.12.1991) ---
- ; ----------------------------------------------
- ;
- ; Adressen und Library Offsets
-
- execbase equ $4 ; Basis Adresse der Exec Library
- openlibrary equ -$228 ; Offsets zu Library Base
- closelibrary equ -$19E
-
-
- ;
- ; alle im Betriebssystem enthaltene Libraries öffnen
- ;
- openlibs:
- move.l execbase,a6 ; Exec Vector Base
- lea gfxname(pc),a1 ; * Name(gfx)
- moveq #0,d0 ; keine spezielle Version
- jsr openlibrary(a6) ; Versuch Library zu Öffnen
- move.l d0,gfxbase ; Vector Base retten
- beq openfehler ; konnte nicht geöffnet werden ->
- lea dosname(pc),a1 ; dos
- moveq #0,d0
- jsr openlibrary(a6)
- move.l d0,dosbase
- beq openfehler
- lea intuitionname(pc),a1 ; intuition
- moveq #0,d0
- jsr openlibrary(a6)
- move.l d0,intuitionbase
- beq openfehler
- lea mathffpname(pc),a1 ; mathffp
- moveq #0,d0
- jsr openlibrary(a6)
- move.l d0,mathffpbase
- beq openfehler
- lea expansionname(pc),a1 ; expansion
- moveq #0,d0
- jsr openlibrary(a6)
- move.l d0,expansionbase
- beq openfehler
- lea layersname(pc),a1 ; layers
- moveq #0,d0
- jsr openlibrary(a6)
- move.l d0,layersbase
- beq openfehler
-
- moveq #-1,d0 ; Flag : alles ok
- bra.s openende ; und fertig
- openfehler:
- moveq #0,D0 ; Flag : Fehler aufgetreten
- openende:
- rts
-
- ;
- ; Libraries Schließen
- ;
- closelibs:
- move.l execbase,a6 ; Exec Vector Base
- move.l dosbase(pc),d0 ; Base holen (dos)
- beq.s closel1 ; nicht geöffnet -> nicht schließen
- move.l d0,a1 ; nach a1
- jsr closelibrary(a6) ; Schließen
- closel1:
- move.l gfxbase(pc),d0 ; gfx
- beq.s closel2
- move.l d0,a1
- jsr closelibrary(a6)
- closel2:
- move.l intuitionbase(pc),d0 ; intuition
- beq.s closel3
- move.l d0,a1
- jsr closelibrary(a6)
- closel3:
- move.l mathffpbase(pc),d0 ; mathffpbase
- beq.s closel4
- move.l d0,a1
- jsr closelibrary(a6)
- closel4:
- move.l expansionbase(pc),d0 ; expansion
- beq.s closel5
- move.l d0,a1
- jsr closelibrary(a6)
- closel5:
- move.l layersbase(pc),d0 ; layers
- beq.s closel6
- move.l d0,a1
- jsr closelibrary(a6)
- closel6:
- rts
-
- ;
- ; Datenbereich
- ;
-
- dosname: dc.b "dos.library",0 ; Namen der Libraries
- gfxname: dc.b "graphics.library",0
- intuitionname: dc.b "intuition.library",0
- mathffpname: dc.b "mathffp.library",0
- expansionname: dc.b "expansion.library",0
- layersname: dc.b "layers.library",0
- EVEN ; falls ungerade Adresse
- dosbase: dc.l 0 ; Vector Bases
- gfxbase: dc.l 0
- intuitionbase: dc.l 0
- mathffpbase: dc.l 0
- expansionbase: dc.l 0
- layersbase: dc.l 0
-
-