Hi!

Indeed JAM only works on non-FAT32 kernels because of different
data structures... JAM apparently needs the start cluster of
the compressed disk file so it can use lowlevel (int 25/26...?)
calls to access that file without causing reentrancy while the
kernel accesses files on the compressed disk :-).

> Ignoring the fact that it apparently broke SHARE.EXE, too

Our version of share? Does it work less well on FAT32 aware kernels?

>> It's hard to be compatible to everyone...
>> In any case JAM can be made
>> compatible to MSDOS 7.10 on FAT16 by DEBUG
>> (in addition to the changes discussed before):
>> debug jmount.com
>> edf3
>> 35
>> w

Interesting.

>> That'll make jmount incompatible with MSDOS<4, DRDOS 5&6, but
>> compatible with newer versions, because the word at 35h is the last
>> accessed cluster, and after reading one sector (as Eric showed) that
>> will still be the starting cluster.

Not sure whether JAM will have accessed the file at that moment,
probably yes :-). Of course patching JMOUNT into different extra
versions (one which accepts FreeDOS, one which accepts FreeDOS
and uses FAT32 kernel specific offsets) is not elegant, but that
is a typical problem with closed source software :-p A proper "if
DOS version X then do Y" patch would be quite painful to push in
the JMOUNT binary I guess.

> Does JAM read anything from the archive file (I presume it wants
> the first cluster of that file) before looking into the SFT?

It does the following: Drive reset, network flush buffers, check
if drive is remote, check for DJ mechanism state, for dblspace,
for JAM drive properties, truename, more JAM drive properties.

Then it checks the DPB of the drive with the JAM compressed disk
file on it, OPENs that. Then dosdebug/dosemu logged that a first
disk sector read happens, not sure why. Next JMOUNT seeks to:
current +0, end +0, start +0. Now JMOUNT reads the first sector
of the compressed disk file. Then it checks the JFT and SFT to,
indeed, get the start cluster of the compressed disk file :-).

> Also, what if it read  
> exactly one sector (or more) but the cluster size was only one sector,  
> either? Then it would read the second cluster instead of the first one  
> from the SFT.

I am not sure whether DOS would already read the next cluster
when you read the first (size of cluster) bytes of a file, I
would guess it will not...

>> It won't help FreeDOS of course because it still uses fnodes
>> for these things instead of SFTs.

In your context: Wrong. FreeDOS keeps the SFT in sync as far
as outside viewers are concerned. Only WHILE the kernel works
with fnodes, some information might not yet be updated. But
as soon as FreeDOS returns the first sector of data to JMOUNT
you can assume that the SFT of FreeDOS (yes it does use it)
already has the cluster number that JMOUNT needs :-). The only
problem is that JMOUNT has no idea how to work with FAT32 SFT
which makes it fail on FAT32 enabled kernels - even on FAT16
and FAT12 drives in this case ;-).

> Doesn't it update the SFT relative and absolute current cluster values,  
> too? As far as I've understood it, fnodes should be invalidated when  
> leaving DOS, so if these cluster references were saved in the fnode only,  
> it wouldn't help a lot.

FreeDOS already does exactly that - as soon as any int 21 call
is done, the SFT is updated with information from the fnodes
where necessary. Only if an outside software would WRITE to the
SFT you could cause problems because this might get the SFT out
of sync with the fnodes: FreeDOS might have information stored
in the fnodes which the outside software which manipulated the
SFT will fail to update if it does not know about fnodes. Maybe
extremely lowlevel software such as task swappers could cause
problems here, but JMOUNT should be safe :-).

Eric



------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables 
unlimited royalty-free distribution of the report engine 
for externally facing server and web deployment. 
http://p.sf.net/sfu/businessobjects
_______________________________________________
Freedos-kernel mailing list
Freedos-kernel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-kernel

Reply via email to