***************************************************************************** 
*                         DiFi V1.4  Devpac Source			    *	
*                      Disk Contents to ASCII File			    *
*									    *
* This `Thing` Works, but its Very BAD coded, so feel free to Improve it !  *
* 			 						    *	
*                Coded by Maurice `Digital Dictator` Wielink                *
*	   Hondemanstraat 51, 1508 GA, Zaandam, The Netherlands             *
***************************************************************************** 
ExecBase	equ	4
*------------------------*
BLAST:		movem.l		d0-d7/a0-a6,-(a7)
		bra.s		Skippo

		dc.b		' DiFi V1.4 '
		dc.b		' By Maurice Wielink '
		dc.b		' 1991 '

Skippo		movea.l		ExecBase,a6
		lea		DosName(pc),a1	
		moveq		#0,d0
		jsr		-$228(a6) 	;Open Dos
		move.l		d0,_DosBase
		beq		_error
		movea.l		d0,a6			;DosBase at a6
		jsr		-$3c(a6)		* OutPut
		move.l		d0,_OutPutHandler
		beq		_CloseDos		* Errii
		jsr		-$36(a6)		* Input	
		move.l		d0,_InputHandler
		beq		_CloseDos
		*--------------------------------*
		jsr		Colors(pc)
		movea.l		4.w,a6
		move.l		#4,d1	 	 * Get Available FastMem
		jsr		-$D8(a6)
		move.l		d0,d6
		beq.s		_ACM

		move.l		#$10004,MemType_Path
		move.l		d6,-(a7)
		jsr		_Clear(pc)
		lea		FastMemMsg(pc),a0	* Error Message
		jsr		Print(pc)
		move.l		(a7)+,d6
_FMW		btst		#6,$BFE001
		bne.s		_FMW
		bra.s		_MCA
_ACM		move.l		#$10002,MemType_Path
_MCA		movea.l		4.w,a6
		move.l		#2,d1		 * Get Available Chip Mem
		jsr		-$D8(a6)
		move.l		#$10002,MemType_Main
		tst.l		d6		* FastMem
		bne		_UseFastAlso

		move.l		d0,d1
		lsr.l		#2,d0		
		lsr.l		#1,d1
		bra		_START

_UseFastAlso	move.l		d0,d1			* Chip
		move.l		d6,d0			* Fast
		lsr.l		#1,d0			* Memneeded
		lsr.l		#1,d1			* MemNeeded
_START		move.l		d0,MemNeeded_Path	* For PATH Names
		move.l		d1,MemNeeded_Main	* For MAIN Mem

*-------------------------------------------------------*
START		jsr		_GrabPathMem(pc)
		tst.l		d0			;Have we Mem. ?
		beq		_Mem1Err
		movea.l		d0,a5			;A5 = PATH NAMES
		move.l		d0,DirMB		;MemBase 
		move.l		d0,DirMB_Curr		;(Variable)
		move.l		d0,DirMB_Path		;(Variable)
		add.l		MemNeeded_Path,d0
		move.l		d0,MemPath_End
		bra.s		_Mem1Ok

_Mem1Err	jsr		_Clear(pc)
		lea		ErrMsg1(pc),a0		;Memory Error
		jsr		Print(pc)
		bra		_CloseDos
		*----------------------------*
_Mem1Ok		jsr		_GrabMainMem(pc)
		move.l		d0,MemBase
		bne.s		_Mem2Ok

		jsr		_Clear(pc)
		lea		ErrMsg1(pc),a0		;Memory Error
		jsr		Print(pc)
		bra		_FreeMem1

_Mem2Ok		movea.l		d0,a4			;a4 is at MainBase
		add.l		MemNeeded_Main,d0
		move.l		d0,MemMain_End

		jsr		Refresh(pc)
		*-----------------------------*
		lea		Msg1(pc),a0
		jsr		Print(pc)

WM1		btst		#6,$bfe001		;Wait For Mouse !
		beq.s		StartScanning
		btst		#$a,$dff016
		bne.s		WM1
		bra		Quit

StartScanning	jsr		Refresh(pc)	
		lea		MsgS(pc),a0	;"Scanning Root Dir" Msg.	
		jsr		Print(pc)
*-----------------------------------------------*
		lea		DriveName0(pc),a0
		lea		LockName(pc),a1
_Taars		move.b		(a0)+,(a1)+
		bne.s		_Taars
 
		move.l		#LockName,d7
		jsr		LockIt(pc)	;Lock on Root Dir of DF0
		tst.l		d0 
		beq		_CloseDos
 
		jsr		GetName(pc)		;Get DiskName !
		lea		Path(pc),a0
		lea		DiskName(pc),a1
_SaveDiskName	move.b		(a0)+,(a1)+
		bne.s		_SaveDiskName

		lea		FName(pc),a1	* DiskName Will be FileName
		lea		Path(pc),a2
SetUpFileName	move.b		(a2)+,(a1)+
		bne.s		SetUpFileName

		move.b		#$A,(a4)+	    ;Empty Line

		lea		_DiskName(pc),a0    ;'"DISK :  "	
_CF1		move.b		(a0)+,(a4)+
		tst.b		(a0)
		bne.s		_CF1		    ;(Does'nt Copy Null Byte)
		lea		Path(pc),a0		
_CF2		move.b		(a0)+,(a4)+	    ;Copy Name Behind... 	
		tst.b		(a0)
		bne.s		_CF2
		move.b		#$A,(a4)+	    ;"RETURN" (LineFeed)
		*-----------------------------*
		jsr		NextPath(pc)	;Get Next Dir Name !

		movea.l		DirMB_Path,a0
		move.l		(a0),d0
		bne.s		DoSubDirs
		bra		_No_Dirs
		*-----------------------------*
DoSubDirs	jsr		M0(pc)		;(Mmmmm)
		lea		MsgS2(pc),a0	;Scanning Subdirs Msg
		jsr		Print(pc)

***********************************************
*---------------------------------------------*

MAINPathLOOP:	movea.l		DirMB_Path,a0
		lea		DiskName(pc),a1	;DiskName (Root)
		lea		LockName(pc),a2	
	
_RootFirst	move.b		(a1)+,(a2)+	;Copy DiskName
		tst.b		(a1)
		bne.s		_RootFirst
		move.b		#":",(a2)+	;Replace Null Byte	
			 			*(No Null Byte !)
_NowTotalPath	move.b		(a0)+,(a2)+
		bne.s		_NowTotalPath
		move.l		a0,DirMB_Path ;Save Address of Next Path Name !
		*---------------------------*		

		move.b		#$A,(a4)+	    ;Empty Line	
		lea		_PathName(pc),a0    ;"PATH :  "
_CF4		move.b		(a0)+,(a4)+	    ;Copy in MainMem
		tst.b		(a0)
		bne.s		_CF4		    ;(No Return or Null Byte)	

		lea		LockName(pc),a0
_SkipDName	cmp.b		#":",(a0)+
		bne.s		_SkipDName	    ;Skip Disk Name !

_CF5		move.b		(a0)+,(a4)+	    ;Copy in MainMem	
		tst.b		(a0)
		bne.s		_CF5
		move.b		#$A,(a4)+	    ;"RETURN"
		*---------------------------*		
		move.l		#LockName,d7	;New Path Name !
		jsr		LockIt(pc)	;Lock On Path	
		jsr		GetName(pc)	;Save Name and Check FIB
		jsr		NextPath(pc)	;and Search for Dir in Dir...

		move.l		DirMB_Path,d0 	;We are at this Path !
		cmp.l		DirMB_Curr,d0	;Same ?
		bne		MAINPathLOOP    ;Loop Until All Dirs Are Found !

_No_Dirs	move.l		MemBase,d0	;Start at d0
		move.l		a4,d1		;Current (End) at d1	
		sub.l		d0,d1		;d1-d0 = FileLength
		move.l		d1,FileLength

		*******************************
		***** Get Destination Name ****
		*-----------------------------*
DestName:	jsr		Refresh(pc)
		lea		Msg4(pc),a0
		jsr		Print(pc)

		move.l		_InputHandler,d1 ; InputHandler
		move.l  	#InputBuffer,d2	 ; Buffer				
		move.l		#39,d3		 ; Max Length		
		jsr		-$2a(a6)	 ; Read
		
		*-----------------------------*	
		lea		FileName(pc),a0
		lea		InputBuffer(pc),a2
		cmpi.b		#$A,(a2)	;Only Return ?
		beq		DestName
		cmpi.l		#"DF1:",(a2)
		beq.s		_GetFileName
		cmpi.l		#"df1:",(a2)
		beq.s		_GetFileName
		cmpi.l		#"Df1:",(a2)
		beq.s		_GetFileName
		cmpi.l		#"dF1:",(a2)
		beq.s		_GetFileName
		cmp.l		#"DF0:",(a2)
		beq.s		_GetFileName
		cmpi.l		#"df0:",(a2)
		beq.s		_GetFileName
		cmpi.l		#"Df0:",(a2)
		beq.s		_GetFileName
		cmpi.l		#"dF0:",(a2)
		beq.s		_GetFileName
		lea		DriveName0(pc),a1 ;(No Path Specified)
		moveq.l		#3,d7
CDN0		move.b		(a1)+,(a0)+	 ;Copy DF0: Before Name 	
		dbra		d7,CDN0

_GetFileName	move.b		(a2)+,(a0)+
		cmpi.b		#$A,(a2)	;Find End (Return)
		bne.s		_GetFileName
		
		cmpi.b		#"/",-(a2)	* (Mmmmm)
		beq.s		_GFOk
		cmp.b		#":",(a2)	* (Mwaaa)	
		beq.s		_GFOk
		move.b		#"/",(a0)+

_GFOk		lea		FName(pc),a2	
_GE		move.b		(a2)+,(a0)+	;DiskName = FileName !
		tst.b		(a2)
		bne.s		_GE
		lea		ID(pc),a2	'".DiFi"   (ID)	
_AddID		move.b		(a2)+,(a0)+	'add ID to End of Name !
		bne.s		_AddID
		*-----------------------------*
		move.l		#FileName,d1
		move.l		#$3EE,d2	;New File
		jsr		-$1e(a6)	;Open It.		
		move.l		d0,_FileHandler
		bne		Save_DiFi
NoSuchDir	jsr		Refresh(pc)		
		lea		NoSuchDirMsg(pc),a0	* Error Message
		jsr		Print(pc)		* Print It
NoSuDi		btst		#6,$BFE001		* Wait for Left Mouse Button...
		bne.s		NoSuDi
		bra		DestName		* And get New PATH Name !
*---------------------------------------------------*
Save_DiFi:	jsr		Refresh(pc)
		lea		Msg6(pc),a0	" Saving File"
		jsr		Print(pc)

		******** SAVE ROUTINE ********
		*----------------------------*
		move.l		FileLength,d3	;Length of Save
		move.l		_FileHandler,d1	;Filehandler
		move.l		MemBase,d2	;Data

		movem.l		d5-d7/a0,-(a7)
 		jsr		-$30(a6)	;Save it on Disk
		movem.l		(a7)+,d5-d7/a0
		*-----------------------------*
		jsr		Colors(pc)	;FLASH....... (Aha)
		move.l		_FileHandler,d1
		jsr		-$24(a6)	;Close (file)
		
		jsr		Refresh(pc)	;Clear Screen, Show Title
		lea		Msg7(pc),a0	;"File Saved"
		jsr		Print(pc)
		*-----------------------------*
		*******************************

		lea		MsgEnd(pc),a0
		jsr		Print(pc)
		jsr		M0(pc)

Mo		btst		#6,$bfe001	;Left Mouse
		beq.s		_Re_START	;Left Button = Re Start !
		btst		#$A,$dff016	;Right Mouse
		bne.s		Mo		;wait.....
		bra		Quit		;Right Button = Quit

_Re_START	jsr		UnLock(pc)
		jsr		_FreeMainMem(pc)	
		jsr		_FreePathMem(pc)
		move.l		#0,FileLength	;Reset !
		jmp		START		;Start all over again !

*****************************************
*---------------------------------------*
GetName		move.l		a3,-(a7)
		move.l		Lock,d1		;Lock pointer in d1		
		move.l		#FileInfoBlock,d2
		movea.l		_DosBase,a6
		jsr		-102(a6)	;Examine
		move.l		d2,a3		;Buffer (d2) at a3
		*----------------------*
		cmpi.l		#2,4(a3)	* ERROR CHECK !
		beq.s		_FIB_OK
		cmpi.l		#$fffffffd,4(a3)
		beq.s		_FIB_OK
		*----------------------*
		eori.b		#1,FIBFlag	;(1 Means Error)
		lea		6(a3),a3	;Get Name (Error Situation)
		bra.s		CopyName
_FIB_OK		lea		8(a3),a3	;Get Name (Normal Situation)
		*----------------------*
CopyName:	lea		Path(pc),a0
_CopyName:	move.b		(a3)+,(a0)+
		bne.s		_CopyName
		move.l		(a7)+,a3
		rts
*---------------------------------------*
NextPath	move.l		a3,-(a7)
		movea.l		DirMB_Curr,a5   ;Get Offset Back !		
		move.b		#1,_1stN	;Set 1st Name Flag
_FindPath	move.l		Lock,d1
		move.l		#FileInfoBlock,d2 
		movea.l		_DosBase,a6
		jsr		-108(a6)	;Examine Next
		beq		P_NoMoreEntries  
		move.l		d2,a3		;FIB at a3

		tst.b		FIBFlag		;Test FIB Error Flag
		bne.s		_NPInfoErr	;1 Means Error !

		cmp.l		#2,4(a3)	;Directory ?
		beq.s		Dir_A		;If So, Handle It
		move.l		124(a3),d2	;File Length in d2
		lea		8(a3),a3	;If Not, Find Name
		jsr		DoFile(pc)	;Handle File Name
		bra.s		_FindPath	;And Loop....

_NPInfoErr	cmp.l		#2,2(a3)	;Same as Above, only
		beq.s		Dir_B		;in Error Situation ! 
		move.l		122(a3),d2	;FileLength in d2
		lea		6(a3),a3
		jsr		DoFile(pc)
		bra.s		_FindPath	;and Loop....
		
Dir_A		lea		8(a3),a3	;Get start of Name !
		bra.s		_Dir
Dir_B		lea		6(a3),a3	;Get Start of Name !

_Dir		lea		Path(pc),a1	* CHECK !!!
		lea		DiskName(pc),a2
		move.l		(a1),d0
		move.l		(a2),d1
		cmp.l		d0,d1		;Same ?
		beq.s		_CPName

		lea		LockName(pc),a1	* Get TOTAL "Path String" !!!
_SkipRoot	cmp.b		#":",(a1)+
		bne.s		_SkipRoot
_PName		move.b		(a1)+,(a5)+
		tst.b		(a1)
		bne		_PName
		move.b		#"/",(a5)+	;Add Slash !!!			
						;NO NULL BYTE !!!
_CPName		move.b		(a3)+,(a5)+	;Copy Dir Name
		bne.s		_CPName
		bra		_FindPath
P_NoMoreEntries	move.l		a5,DirMB_Curr	;Save Current Address !
		jsr		Colors(pc)
		move.l		(a7)+,a3
		rts				;Get Back !!!

*---------------------------------------*
DoFile		tst.b		_1stN
		beq.s		C_Name		;NoFileID

		lea		_FileName(pc),a0	;"FILES:  "
_FileID		move.b		(a0)+,(a4)+
		tst.b		(a0)
		bne.s		_FileID		;(Does'nt Copy Null byte !)
		bra.s		_NoTAB

C_Name		move.b		#$09,(a4)+	;(TAB)
_NoTAB		move.b		(a3)+,(a4)+	;Copy Name !
		jsr		ColorsB(pc)
		tst.b		(a3)		;Null Byte ? (End of Name)
		bne.s		_NoTAB		;Loop

		move.b		#$20,(a4)+	;1 Space
		move.b		#$20,(a4)+	;1 Space
		move.b		#$20,(a4)+	;1 Space
		move.b		#"(",(a4)+

		tst.l		d2		;File Length Zero ?
		beq		_FZero
		jsr		Convert(pc)	;(d2 Holds Lenght in Hex)
		lea		buffer(pc),a0	;Length (Dec.ASCII)

		moveq		#9,d0		;Counter
_SkipZero	subq		#1,d0		;Decrease (Count)
		cmp.b		#"0",(a0)+
		beq.s		_SkipZero
		lea		-1(a0),a0	;Get at Start of Value

		subq		#1,d0		;Correction for DBRA
_FLen		move.b		(a0)+,(a4)+	;Copy File Length
		dbra		d0,_FLen
		bra.s		_Flen_End

_FZero		move.b		#"0",(a4)+
_Flen_End	move.b		#")",(a4)+	;Add ")" to End
		move.b		#$A,(a4)+	;"RETURN" (LineFeed on Amiga)
		move.b		#0,_1stN	;Reset 1St Name Flag
		rts				;Get Back !!!
*-----------------------------------*
Colors		movem.l	d0-d7,-(a7)
 		move.l	#7000,d4	* Loop Offset 	
		bra.s	_ColLoop	* Skip....
ColorsB		movem.l	d0-d7,-(a7)
		move.l	#100,d4		* Loop Offset
_ColLoop	move.b	$BFE801,d0	; Move a Random Number (Byte) in d0
		move.w	d0,$DFF180	* Show a color
W		btst	d0,$DFF006	* Beam Position
		beq.s	W		
		move.w	#0,$DFF180	* Black
		dbra	d4,_ColLoop
		movem.l	(a7)+,d0-d7
		rts	
*---------------------------------------*
*****************************************
M0		lea		Msg0(pc),a0
		bsr.s		Print
		rts
*---------------------------------------*
Print:		movea.l	_DosBase,a6
		move.l	_OutPutHandler,d1
		move.b	(a0)+,d3       ;Get Length of this Text String.
		andi.l	#$ff,d3	       ;Only Last Byte Needed.(max 255 Chars)
		move.l	a0,d2	       ;Address Text Data (a0) in d2
		jsr	-$30(a6)       ;Write to OutPutHandler (CLI)	
		rts
*---------------------------------------*
LockIt		bsr.s		UnLock		;Try to `Unlock` First
		movea.l		_DosBase,a6
		move.l		d7,d1		;Name (d7) in d1
		move.l		#-2,d2		;Access Read	
		jsr		-84(a6)		;Lock
		move.l		d0,Lock
		move.b		#0,FIBFlag	;Reset
		rts

UnLock		tst.l		Lock		;Already Unlocked ?	
		beq		_NoUnLock	;If so, Exit Routine !
		movea.l		_DosBase,a6
		move.l		Lock,d1
		jsr		-90(a6)		;unlock
		move.l		#0,Lock		;Reset
_NoUnLock	rts

***********************************
Quit		jsr		_Clear(pc)
		lea		MsgExit(pc),a0
		jsr		Print(pc)
		bsr.s		UnLock
_FreeMem2	jsr		_FreeMainMem(pc)
_FreeMem1	jsr		_FreePathMem(pc)
_CloseDos	movea.l		ExecBase,a6
		movea.l		_DosBase,a1
		jsr		-$19e(a6)	; Close Dos	
_error		movem.l		(a7)+,d0-d7/a0-a6
		rts 
***********************************
_GrabPathMem	movea.l		ExecBase,a6 
		move.l		MemNeeded_Path,d0	;MemNeeded (For PathNames)
		move.l		MemType_Path,d1
	 	jsr		-$c6(a6)	;Grab Mem
		rts
_GrabMainMem	movea.l		ExecBase,a6
		move.l		MemNeeded_Main,d0		* Nr of Bytes
		move.l		MemType_Main,d1
		jsr		-$c6(a6)		* AllocMem
		rts
_FreeMainMem	movea.l		ExecBase,a6
		movea.l		MemBase,a1
		move.l		MemNeeded_Main,d0
		jsr		-$d2(a6)
		rts
_FreePathMem	movea.l		ExecBase,a6
		movea.l		DirMB,a1	;PathNames Mem
		move.l		MemNeeded_Path,d0
		jsr		-$d2(a6)
		rts
*-----------------------------------------------*
Convert		movem.l	d1-d3/a0-a1,-(a7)
		moveq	#7,d0			;Convert 8 Digits
		lea	buffer(pc),a0		
		lea	Table_10(pc),a1		;Table 10
_Next		moveq	#"0",d1			;Start With Digit '0'
_Dec		addq	#1,d1			;Digit + 1
		sub.l	(a1),d2			
		bcc.s	_Dec			
		subq	#1,d1			
		add.l	(a1),d2			
		move.b	d1,(a0)+		;Copy Digit in Buffer
		lea	4(a1),a1		;next power_10
		dbra	d0,_Next		;Until All Digits are done
		movem.l	(a7)+,d1-d3/a0-a1
		rts
*-----------------------------------------------*
Refresh		bsr.s		_Clear
		lea		MsgTitle(pc),a0		* TITLE *
		jsr		Print(pc)
		lea		MsgTitleb(pc),a0
		jsr		Print(pc)
		rts
_Clear		movea.l		_DosBase,a6		* Clear Screen *
		move.l		_OutPutHandler,d1	;OutPutHandler
		move.l		#_CLS,D2		
		moveq		#1,D3			;Length	
		jsr		-$30(A6)		;_LVOWrite
		rts

*------------ DATA ---------------*

_CLS		dc.b	$0C	
FIBFlag		dc.b	0		;0 Means Info Ok !
_1stN		dc.b	0
DosName		dc.b	'dos.library',0
DriveName0	dc.b	'DF0:',0
ID		dc.b	'.DiFi',0
_DiskName	dc.b	'DISK :  ',0
_PathName	dc.b	'PATH :  ',0
_FileName	dc.b	'FILES:  ',0
		even
Path		ds.b	50
DiskName	ds.b	50
LockName	ds.b	120
InputBuffer	ds.b	76
FName		ds.b	76
FileName	ds.b	100

* ------------Messages --------------- *

MsgTitle	dc.b	159,10,'  --------------------------------------------------',10
		dc.b	       '  -             DiFi  V1.4    [12-10-1991]         -',10
		dc.b	       '  - File Names of Disk Contents to ASCII Text File -',0
MsgTitleb	dc.b	213,10,'  -                                                -',10
		dc.b	       '  -  Coded by: Maurice `Digital Dictator` Wielink  -',10
		dc.b	       '  -         Released in UGA PD Serie 1991          -',10
		dc.b	       '  --------------------------------------------------',10,0
Msg0		dc.b	1,10,10,0
Msg1		dc.b	122,10,'- Insert Disk to be Scanned in Drive DF0 !',10,10
		dc.b	       '- Press Left Mouse Button When Ready !',10
		dc.b	       '- Press Right Mouse Button to Abort !',0
Msg4		dc.b	190,10,'- Now Insert Disk to Save File to !',10,10
		dc.b	       '- Give DRIVE Name and PATH Name',10,10
		dc.b	       '- Example:  DF0:DiskContents/    ',10,10
		dc.b	       '- DISK NAME Will Be Used As File Name !!',10,10
		dc.b	       '- Enter Drive/Path Name and Press Return: ',0
Msg6		dc.b	18,10,'* SAVING FILE....',0
Msg7		dc.b	16,10,'* FILE SAVED !',10,0
MsgS		dc.b	34,10,'- Scanning Root Directory........',0
MsgS2		dc.b	34,10,'- Scanning Sub Directories.......',0
MsgEnd		dc.b	70,10,'- Left  Mouse Button: Handle Another Disk',10
		dc.b	      '- Right Mouse Button: QUIT.',0
ErrMsg1		dc.b	18,10,'  Memory Error !',10,0
NoSuchDirMsg	dc.b	100,10,'- ERROR: The PATH you`ve given does`nt exist !',10
		dc.b	       '         Press Mouse and give the right PATH Name !',10
FastMemMsg	dc.b	55,10,$1b,$5b,$33,$6d
		dc.b	' FastMem Detected........[Press Left Mouse !]'
		dc.b	$1b,$5b,$30,$6d,10
MsgExit		dc.b	22,10,"1> D¡g¡tål D¡çtåtør",10,10
*----------------------------------------------*		
		even
DirMB		dc.l	0		;Start Address of Mem wich hold Paths
DirMB_Curr	dc.l	0		;Variable
DirMB_Path	dc.l	0		;Variable
MemBase		dc.l	0		;Start Address of Final TextFile Mem
MemType_Main	dc.l	$10002		;Chip
MemType_Path	dc.l	$10002		;Default = Chip  (Fast if available)
MemNeeded_Path	dc.l	0
MemNeeded_Main	dc.l	0
MemPath_End	dc.l	0
MemMain_End	dc.l	0
_DosBase	dc.l	0
_OutPutHandler	dc.l	0
_InputHandler	dc.l	0
_FileHandler	dc.l	0
FileLength	dc.l	0
Lock		dc.l	0
Table_10	dc.l	10000000
		dc.l	1000000
		dc.l	100000
		dc.l	10000
		dc.l	1000	
		dc.l	100
		dc.l	10	
		dc.l	1
		even
buffer		ds.b	8
*---------------------------------------*
		even
		dc.l	0	;Incase of FIB Error
FileInfoBlock	ds.b	260	;All kind of useful Bullshit appears here !
		even

; The
  End

