; Name		: fileid.Lib
; Version	: 1.0
; Programmierer :  
; Funktion	: 
; Slot		: 25
; Bemerkungen   : 
;		:
;		:
;
;

ExtNb		equ	25-1
		
		IncDir	"Include:"
		Include "Libraries/FileID.i"
		Include "Libraries/FileID_IDDefs.i
		Include "Libraries/FileID_lib.i"		
		
	
*** LVO`s
_LVOOpenLibrary		=	-552
_LVOCloseLibrary	=	-414
***
***
Version	MACRO
	dc.b	"1.0"	
	ENDM
***


		INCDIR "Include:AMOS1.3/"
 		Include	"_Equ.s"
		RsSet	DataLong
		Include "_Pointe.s"
		Include "_CEqu.s"
		Include	"_WEqu.s"
		Include	"_LEqu.s"
		INCDIR  "Devpac:AMOSExtensions/
		Include "|macros.s"	

*********************************************************************
Start           dc.l   C_Tk-C_Off
		dc.l   C_Lib-C_Tk
		dc.l   C_Title-C_Lib
		dc.l   C_End-C_Title
		dc.w   0
		
***********************************************************************
*  Offset To Funktion
C_Off		dc.w (L1-L0)/2,(L2-L1)/2,(L3-L2)/2,(L4-L3)/2
		dc.w (L5-L4)/2,(L6-L5)/2,(L7-L6)/2,(L8-L7)/2
		dc.w (L9-L8)/2,(L10-L9)/2,(L11-L10)/2,(L12-L11)/2
		dc.w (L13-L12)/2,(L14-L13)/2,(L15-L14)/2,(L16-L15)/2
		dc.w (L17-L16)/2,(L18-L17)/2,(L19-L18)/2,(L20-L19)/2				

***********************************************************************
* Befehle
C_Tk
		dc.w	1,0
		dc.b	$80,-1
* Befehle
		dc.w	-1,L_IDGetHighID
		dc.b	"id get high i","d"+$80,"0",-1
		
		dc.w	-1,L_IDGetString
		dc.b	"id get strin","g"+$80,"20",-1
		
		dc.w	-1,L_IDIdentifyFile
		dc.b	"id identify fil","e"+$80,"02",-1
		
		dc.w	-1,L_IDIdentifyAdresse
		dc.b	"id identify adress","e"+$80,"00",-1

		dc.w	-1,L_IDFileInfo
		dc.b	"id fileinf","o"+$80,"0",-1

		dc.w	-1,L_IDerror
		dc.b	"id erro","r"+$80,"0",-1
		
		dc.w	0	

**********************************************************************
* Kaltstart
C_Lib

L0
	movem.l	a3-a6,-(sp)
	lea	MY(pc),a3
	move.l	a3,ExtAdr+ExtNb*16(a5)

;	lea	MYdef(pc),a0
;	move.l	a0,ExtAdr+ExtNb*16+4(a5)
;	lea	MYend(pc),a0
;	move.l	a0,ExtAdr+ExtNb*16+8(a5)

	
****************************************
*** library öffne
	lea	IDName(pc),a1
	moveq	#0,d0			; ab Version 6
	move.l	4,a6
	jsr	_LVOOpenLibrary(a6)
	move.l	d0,_IDbase
	
****************************************
	movem.l	(sp)+,a3-a6	
	moveq	#ExtNb,d0	
	rts
***********************************************************
;MYdef	rts
*******
;MYend	rts
*******
* Data 
MY:
UserVer:	dc.b	"$VER: FileID Extension V"
		VERSION
		dc.b	" by Haiko Lemser"
		dc.b	0
		EVEN
IDName		dc.b	'FileID.library',$00
_IDbase		dc.l	0
FileInfo	dc.l	0
dummy		dc.l	0
IDerr		dc.l	0

		Even
*********************************************************************
L1
L2
*********************************************************************
*** Var = Id Get HighId
L_IDGetHighID		equ	3
L3			movem.l	a3-a6,-(sp)
			Tst.l	_IDbase
			bne.w	.ok3
			moveq	#0,d0
			RBra	L_Custom
.ok3			move.l	_IDbase,a6
			Jsr	_LVOFIGetHighID(a6)
			Move.l	d0,d3
			moveq	#0,d2
			movem.l	(sp)+,a3-a6
			Rts
*********************************************************************
*** String = Id Get String(Num)
L_IDGetString		equ	4
L4			move.l	(a3)+,d0		; ID Nummer
			movem.l	a3-a6,-(sp)
			Tst.l	_IDbase
			bne.w	.ok4
			moveq	#0,d0
			RBra	L_Custom
.ok4			move.l	_IDbase,a6
			Jsr	_LVOFiGetIDString(a6)
			Move.l	d0,d0
			sub.b	#2,d0
			move.l  d0,d3
			moveq	#2,d2
			movem.l	(sp)+,a3-a6
			Rts
*********************************************************************
*** Var = Id Identify File("File")
L_IDIdentifyFile	equ	5
L5			move.l	(a3)+,a4		; ID Nummer
			add.l	#2,a4
			move.l	a4,d1			; Name in D1
			movem.l	a3-a6,-(sp)
			Tst.l	_IDbase
			bne.w	.ok5
			moveq	#0,d0
			RBra	L_Custom
.ok5			move.l	_IDbase,a6
			Jsr	_LVOFiAllocFileInfo(a6)
			Move.l	D0,FileInfo		; Structur Sichern
			bne.w	.ok5_1
			moveq	#4,d0
			RBra	L_Custom

.ok5_1			move.l	_IDbase,a6
			move.l	a4,d1			; Name
			move.l	FileInfo,A1		; FileInfo Structur
			Jsr	_LVOFiIdentifyFromName(a6)
			move.l	d0,IDerr
			beq.w	.ok5_2

			move.l	#0,d3
			sub.l	IDerr,d3		 
			move.l	d3,d0
			RBra	L_Custom

.ok5_2			move.l	FileInfo,a0	
			move.w	4(a0),d0
			move.l	d0,dummy
			

			Move.l	_IDbase,a6
			Move.l	FileInfo,a1		; FileInfo Structur
			Jsr	_LVOFiFreeFileInfo(a6)
		
			move.l	dummy,d3
			moveq	#0,d2
			movem.l	(sp)+,a3-a6
			Rts
*********************************************************************
*** Var = Id Identify Adresse(Adr)
L_IDIdentifyAdresse	equ	6
L6			move.l	(a3)+,a4		; Adresse
			move.l	a4,a0
			movem.l	a3-a6,-(sp)
			Tst.l	_IDbase
			bne.w	.ok6
			moveq	#0,d0
			RBra	L_Custom
.ok6			move.l	_IDbase,a6
			Jsr	_LVOFiAllocFileInfo(a6)
			Move.l	D0,FileInfo		; Structur Sichern
			bne.w	.ok6_1
			moveq	#4,d0
			RBra	L_Custom

.ok6_1			move.l	_IDbase,a6
			move.l	a4,a0
			move.l	FileInfo,A1		; FileInfo Structur
			Jsr	_LVOFiIdentify(a6)
			move.l	d0,IDerr
			beq.w	.ok6_2

			move.l	#0,d3
			sub.l	IDerr,d3		 
			move.l	d3,d0
			RBra	L_Custom

.ok6_2			move.l	FileInfo,a0	
			move.w	4(a0),d0
			move.l	d0,dummy

			Move.l	_IDbase,a6
			Move.l	FileInfo,a1		; FileInfo Structur
			Jsr	_LVOFiFreeFileInfo(a6)
		
			move.l	dummy,d3
			moveq	#0,d2
			movem.l	(sp)+,a3-a6
			Rts
*********************************************************************
L_IDFileInfo		equ	7
L7			move.l	FileInfo,d3
			moveq	#0,d2
			Rts

L_IDerror		equ	8
L8			move.l	IDerr,d3
			moveq	#0,d2
			rts

L9
L10
L11
L12
L13
L14
L15
L16
L17
*********************************************************************
*** Prüft ob Library geöffnet ist (Aufruf mit : BSR.W LibCheck)
LibCheck	Tst.l	_IDbase
		bne.w	.dummyok
		moveq	#0,d0
		RBra	L_Custom
.dummyok	Rts
*********************************************************************
L_Custom	equ	18
L18		lea	ErrMsg(pc),a0
		moveq	#0,d1
		moveq	#ExtNb,d2
		moveq	#0,d3
		RJmp	L_ErrorExt
ErrMsg		
		dc.b	"FileID.library nicht geöffnet",0	* 0
		dc.b	"Kann Datei nicht finden",0		* 1
		dc.b	"Kann Datei nicht prüfen",0		* 2
		dc.b	"Kann Datei nicht öffnen",0		* 3
		dc.b	"Kein Speicher mehr",0			* 4
		dc.b	"Datei Lese Fehler",0			* 5
		dc.b	"Datei Größe ist NULL",0		* 6
		dc.b	"Kein Datei Name in angegebenen Pfad",0	* 7
		Even
		
********************************************************************		
L19		moveq	#0,d1
		moveq	#ExtNb,d2
		moveq	#0,d3
		Rjmp	L_ErrorExt
***
L20
********************************************************************
C_Title
		dc.b	31,"FileID Extension V "
		Version
		dc.b	" by Haiko Lemser ®1998"
		dc.b	0
		Even
		
C_End		dc.w	0
		Even
