Register parameters
IN:
A = reason code
HL, IX arguments
Reason codes are as follows:
DR_GET ($01) get handle for a DOR name (internal use)
DR_DUP ($02) duplicate DOR
DR_SIB ($03) return brother DOR
DR_SON ($04) return child DOR
DR_FRE ($05) free DOR handle
DR_CRE ($06) create blank DOR
DR_DEL ($07) delete DOR
DR_INS ($08) insert DOR
DR_RD ($09) read DOR record
DR_WR ($0A) write DOR record
OUT, if call successful:
Fc = 0
returned values depend on A(in)
OUT, if call failed:
Fc = 1
A = error code:
RC_HAND ($08), bad handle
RC_BAD ($04), bad argument
RC_ROOM ($07), no room
RC_EOF ($09), end of file
Registers changed after return:
not documented. |
Notes
When the last DOR record in a list has been read, an RC_EOF is reported and the handle is immediatly released, ie. it will not be necessary to release the handle with a DR_FRE call.
Bugs
Corrupts the stack pointer SP when called with an old handle, e.g. when a previous DR_ call resulted in a "End of list" error (RC_EOF).
Reason code specifications
IN:
HL = pointer to a string (full path with device name)
OUT, if call successful:
Fc = 0
IX = DOR handle
A = minor type
Registers changed after return:
..BCDEHL/..IY same
AF....../IX.. different
Do not use this call. Instead use GN_Opf with A = OP_DOR to obtain a DOR handle. |
IN:
IX = DOR handle
OUT, if call successful:
Fc = 0
BC = duplicate DOR handle (IX is still valid)
OUT, if call failed:
Fc = 1
BC = 0 (IX is still valid)
A = error code
RC_HAND ($08), bad DOR handle
Registers changed after return:
....DEHL/IXIY same
AFBC..../.... different |
IN:
IX = DOR handle
OUT, if call successful:
Fc = 0
IX = next DOR handle (original IX invalid)
A = minor type
OUT, if call failed:
Fc = 1
A = error code
RC_HAND ($08), bad DOR handle
Registers changed after return:
..BCDEHL/..IY same
AF....../IX.. different |
IN:
IX = DOR handle
OUT, if call successful:
Fc = 0
IX = child DOR handle (original IX invalid)
A = minor type
OUT, if call failed:
Fc = 1
A = error code
RC_HAND ($08), bad DOR handle
Registers changed after return:
..BCDEHL/..IY same
AF....../IX.. different |
IN:
IX = DOR handle
OUT, if call successful:
Fc = 0
IX = 0
OUT, if call failed:
Fc = 1
A = error code
RC_HAND ($08), bad DOR handle
Registers changed after return:
..BCDEHL/..IY same
AF....../IX.. different |
IN:
IX = parent DOR handle
B = minor type
OUT, if call successful:
Fc = 0
IX = new DOR handle (original IX invalid)
OUT, if call failed:
Fc = 1
A = error code
RC_HAND ($08), bad DOR handle
RC_BAD ($04), bad argument
RC_ROOM ($07), no room
Registers changed after return:
..BCDEHL/..IY same
AF....../IX.. different |
IN:
IX = DOR handle
OUT, if call successful:
Fc = 0, DOR deleted
IX = 0
OUT, if call failed:
Fc = 1
A = error code
RC_HAND ($08), bad DOR handle
Registers changed after return:
..BCDEHL/..IY same
AF....../IX.. different |
Note
This call deletes a DOR node and deallocates its memory used by filesystem (DN_Fil minor type only)
IN:
BC = parent DOR handle
IX = DOR handle
OUT, if call successful:
Fc = 0
original BC and IX DOR handles are still valid
OUT, if call failed:
Fc = 1
BC and IX is still valid
A = error code
RC_HAND ($08), bad DOR handle
Registers changed after return:
..BCDEHL/IXIY same
AF....../.... different |
IN:
B = record type
C = buffer length
DE = user buffer address (to store information of read)
IX = DOR handle
OUT, if call successful:
Fc = 0
original IX DOR handle is still valid
C = actual length of information
OUT, if call failed:
Fc = 1
original IX is still valid
A = error code
RC_HAND ($08), bad DOR handle
RC_BAD ($04), bad argument
RC_FAIL ($16), information is not present
Registers changed after return:
..B.DEHL/IXIY same
AF.C..../.... different |
Note
Special record type (1) is used to store filesystem first sector pointer (16 bits) as DOR son (MSB always zero)
IN:
B = record type
C = buffer length
DE = user buffer address (to copy information of store)
IX = DOR handle
OUT, if call successful:
Fc = 0
original IX DOR handle is still valid
OUT, if call failed:
Fc = 1
original IX is still valid
A = error code
RC_HAND ($08), bad DOR handle
RC_BAD ($04), bad argument
Registers changed after return:
..BCDEHL/IXIY same
AF....../.... different |
Note
Special record type (1) is used to store filesystem first sector pointer (16 bits) as DOR son (MSB always zero)