Entry | |
---|---|
R0 | Pointer to descriptor block |
R1 | Pointer to calling module’s base |
R2 | Pointer to calling module’s private word |
R3 | Drives configuration |
R4 | Suggested size for directory cache |
R5 | Suggested number of 1024 byte buffers or file cache |
R6 | Hard disc map sizes |
Exit | |
---|---|
R0 | Pointer to FileCore instance private word |
R1 | Address to call after completing background floppy op |
R2 | Address to call after completing background hard disc op |
R3 | Address to call to release FIQ after low level op |
The purpose of this call is to create a new instantiation of an ADFS-like filing system.
It must be called on initialisation by any filing system module that is adding itself to FileCore.
The only start up option currently supported is ‘No directory state’ which is indicated by setting bit 30. All other bits representing start up options must be clear.
If the filing system doesn’t support background transfer of data, R5 must be zero.
The hard disc map size are given using 1 byte for each disc, with drive 4 in the low byte, and drive 7 in the high byte. The byte should contain ‘map size’/256 (ie 2 for the old map). This is just a good guess and shouldn’t involve starting up the drives to read from them. You might store this in the CMOS RAM.
You must store the FileCore instance private word returned by this SWI in your module’s workspace; it’s your module’s means of identifying itself to FileCore.
When your module calls the addresses returned in R1-R3, it must be in SVC mode with R12 holding the value of R0 that this SWI returned. Interrupts need to be disabled. R0, R1, R3-R11 and R13 will be preserved by FileCore over these calls.