Hi!

Let me join this discussion

> So, such system software needs to be SOLID: checked, re-checked,
> checked again, tested, checked again, tested several times more,
> checked again, tested for a while, re-checked, and this for any
> important change you make to it. Get the idea?

As a part of my long MISIX4 project i made a partial disassembly 
of DOS2 "kernel" - i use it when i want to know how one or another 
system call behaves. But i didn't make complete working disassembly - 
for one plain reason - it is IMHO harder than writing the same 
thing from scratch.

> For anyone who wants to join in with such a project, I suggest making
> a COMPLETE disassembly of DOS1 kernel first: many of the system
> details used in DOS2 are somehow 'dictated' by what's done for DOS1.

I _DO_ have complete, working DOS1 DISKROM source code, I even
did huge modifications to it to make it more suitable for HDD 
interfaceing (eg FAT is not held in memory but is loaded from
disk when necessary). I even located and corrected a bug of 
the original code (it is probably present in ALL diskroms
out there, but luckily it needs a very special configuration
to show up)

Technicaly, adding FAT16 to both DOS1 or DOS2 kernels is not hard.
You have to modify 3 routines:

- FAT element getting
- FAT element putting - add 16 bit FAT processing to them
- Cluster Chain processing - must understand both FFx and FFFx special
values for respectively FAT12 and FAT 16.

Oh yes, and you must of course add FAT16 file system detection routine
:-)

Greater than 32 Mb partitions are a different story.
Modification of kernel for them is not very dificult - you have to
modify
only multiplication routine in cluster-to-sector translation module.
But we don't have any worked-out standards of how to pass this sector
number to disk I/O routine!

I have an idea about this and I'm testing it now. It seems to work well 
and is pretty compatible with the "old way". It works as follows:
- when sector number is less than 0xFFFF, we just work the old way.
If sector number is 0xFFFF, we forget it and use 32-bit sector number, 
which is stored somewhere in the BIOS work area. The only thing to be 
determined and standartized is the location address :-)

-- EV
[MSX Maniac][Pendorian Wannabe][Tubed Audiophile]
[email:[EMAIL PROTECTED]] [www.glasnet.ru/~msxegor]

****
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