Hi folks,

I didn't read the last emails about this subject, but I want to add some
new stuff to think about:

To determine if a drive uses a DOS-FAT12 or a DOS-FAT16 system: I don't
think you can derive this information from a bootsector of a partition;
but it can be obtained from the MasterBootRecord of a harddisk. (=absolute
sector 0) This sector contains the partition table and for each partition
also a kind of code (#00=disabled partition, #01=DOS-FAT12, #xx Linux,
#yy=DOS-FAT16 #zz=DOS-FAT32LBA etc., etc.)

I think it is a good idea to pass this information through the GETDPB
(Get diskparameter block function, address #4016 I think) A DPB field is
21 bytes long and it is filled in by the diskrom. The last two bytes are
not filled in by the diskrom, but by the DOSkernel (used to store address
where FAT is buffered) So perhaps we can use these two bytes to pass some
drive-specific info: FAT-type, SCSI/IDE(=ATA)/ATAPI, read-only or not, ...
A new doskernel can use this data in a useful way. A new doskernel can
check if a diskrom supports this feature: before calling GETDPB, fill the
last two bytes with a special code (#0000). If these bytes are still #0000
(and when GETDPB returned no error) then this diskrom doesn't support it;
otherwise use the info.

I've read somewhere about passing data in page1 and diskaccess. In normal
MSX environment you can only use #f37d for executing filecommands. There
are some disadvantages to this: no data can be passed in page 1 because
the masterdiskrom is paged in here. There is also a very limited
'error-handling-support'. The user's stack should be large enough for
handling the #F37D call.
There exists a program called 'MSXDOS(2).SYS' that can be loaded at
address #0100 and executed. This will install a kind of 'in-between'
program that can be called at #0005. parameters in page 1 will be copied
to a free area outside page 1, it switches over to an internal stack and
then the apropriate routine is called in the diskrom (directly; not via
#f37d. So you must use the right SYSversion for a specific diskrom. don't
use msxdos.sys if your using a DOS2kerneldiskrom!) When returning, data is
copied back to page1 (if needed), stack is switched back and if an error
occurred 'Abort, retry, ignore' is displayed.

Conclusion: data can be passed in page1 when using #0005; but not when
using #f37d.

Greetz,
Jon




****
MSX Mailinglist. To unsubscribe, send an email to [EMAIL PROTECTED] and put
in the body (not subject) "unsubscribe msx [EMAIL PROTECTED]" (without the
quotes :-) Problems? contact [EMAIL PROTECTED] (www.stack.nl/~wiebe/mailinglist/)
****

Reply via email to