Difference between revisions of "680x0:Opening a library"

From Amiga Coding
Jump to: navigation, search
(Example on how to open a library (ripped from my old tutorial))
 
(changed so example gets syntax highlighting)
Line 3: Line 3:
  
  
<code><pre>
+
<code lang="m68k">
 
OldOpenLibrary = -408 ; OldOpenLibrary(libName)(A1)
 
OldOpenLibrary = -408 ; OldOpenLibrary(libName)(A1)
 
OpenLibrary = -552 ; OpenLibrary(libName,version)(A1,D0)
 
OpenLibrary = -552 ; OpenLibrary(libName,version)(A1,D0)
Line 32: Line 32:
 
libname: dc.b 'dos.library',0
 
libname: dc.b 'dos.library',0
 
libbase: dc.l $00000000
 
libbase: dc.l $00000000
</pre></code>
+
</code>

Revision as of 23:01, 24 March 2008

This is a example on how to open a library:
(with the Library Vector Offsets added so you won't need to use any includes yet)


OldOpenLibrary = -408 ; OldOpenLibrary(libName)(A1) OpenLibrary = -552 ; OpenLibrary(libName,version)(A1,D0) CloseLibrary = -414 ; CloseLibrary(library)(A1)

move.l $4.w,a6 ; Get the value at position $4 in memory ; This value is the base of exec.library

lea LibName(pc),a1 ; libName must be in A1 moveq #0,d0 ; version must be in D0 jsr OpenLibrary(a6) ; Call the OpenLibrary function

; OldOpenLibrary looks if the library is in memory (or ROM) ; and loads it if nessesary. ; Then it returns the base of graphics.library in d0

move.l d0,libbase ; Store the base

; Closelibrary needs the base of the library ; (the address given to you in D0 by OpenLibrary) ; to close the library

move.l libbase,a1 ; Get the base jsr CloseLibrary(a6)

rts

libname: dc.b 'dos.library',0 libbase: dc.l $00000000