;;Module init
;-----------
;Entry:
; R10 - pointer to initialisation parameters
; R11 - instantiation number
; R12 - pointer to private word

.Entry_init
 STMFD   R13!, {R0-R11, R14}

 ADR     R0, FS_Create_Block		;FileCore descriptor block
 ADR     R1, 0				;Base of this module
 ADR     R2, privateWord		;Our Private Word
 MOV     R3, #1				;start-up options (ie no. of floppies)
 MOV     R4, #0				;size of directory cache
 MOV     R5, #0				;no. of 1072 byte buffers, if we
					;..support background transfers
 MOV     R6, #0				;HD map size
 SWI     XFileCore_Create		;PRM2-228

 STR     R0, FileCore_Private		;store our FileCore private word
					;ignore R2-R3 that are returned
.exit_no_error
 SUBS    R0, R0, R0			;clear V
LDMFD   R13!, {R0-R11, PC}




.Entry_kill
 STMFD   R13!, {R0-R11, R14}

 MOV     R0, #Module_Delete		;Kill FileCore%ADFS
 ADR     R1, ADFS_Full_Title
 SWI     XOS_Module			;PRM1-235
B       exit_no_error




;*ADFS
;-----
;Select the ADF File System

.Entry_ADFS
 STMFD   R13!, {R0-R12, R14}

 MOV     R0, #FSControl_SelectFS	;Select ADFS file system
 ADR     R1, ADFS_Name
 SWI     XOS_FSControl			;PRM2-80

LDMFD    R13!, {R0-R12, PC}




.Entry_MiscOp
 TEQ     R0, #1				;Poll changed?
 MOVEQ   R3, #%01001001000		;YES, PRM2-244
					;density sensing works
					;empty works
					;empty
 TEQ     R0, #4				;Poll period
 MOVEQ   R5, #100			;YES, 100cs poll period
 ADREQ   R6, MiscOp_media_type		; |+  media type string
.Entry_DiscOp
MOV     PC, R14

.MiscOp_media_type DCB "disc", 0
 ALIGN




.ADFS_SWI
 STMFD   R13!, {R8, R14}
 LDR     R8, FileCore_Private

 TEQ     R11, #0
 BEQ     our_ADFS_DiscOp

 TEQ     R11, #2
 BEQ     our_ADFS_Drives

 TEQ     R11, #3
 BEQ     our_ADFS_FreeSpace

 TEQ     R11, #4			;ADFS_Retries
 ANDEQ   R1, R0, R1
 MOVEQ   R2, R1
 MOVEQ   R3, R1

 TEQ     R11, #5
 BEQ     our_ADFS_DescribeDisc

 TEQ     R11, #8			;ADFS_ControllerType
 TEQEQ   R0, #0				;..drive 0?
 MOVEQ   R0, #1				;YES, return 1772

 TEQ     R11, #9			;ADFS_PowerControl
 MOVEQ   R2, #1
 MOVEQ   R3, #1

 TEQ     R11, #&C
 BEQ     our_ADFS_MiscOp

 TEQ     PC, #0
 TEQ     PC, PC				;32bit?
 LDMEQFD R13!, {R8, PC}			;YES
LDMFD   R13!, {R8, PC}^			;NO, preserve flags



.our_ADFS_DiscOp
 SWI     XFileCore_DiscOp
LDMFD    R13!, {R8, PC}


.our_ADFS_Drives
 SWI     XFileCore_Drives
LDMFD    R13!, {R8, PC}


.our_ADFS_FreeSpace
 SWI     XFileCore_FreeSpace
LDMFD    R13!, {R8, PC}


.our_ADFS_DescribeDisc
 SWI     XFileCore_DescribeDisc
LDMFD    R13!, {R8, PC}


.our_ADFS_MiscOp
 SWI     XFileCore_MiscOp
LDMFD    R13!, {R8, PC}