as promised, I had a look at the problem of copying large files onto a
The answer is simple : if you try to write anything larger than 32 MiB,
you'll get an end of file error. This is because, for slave blocks,
sector numbers are stored are in a word.
Thus, in dev8_dv3_dv3_albf_asm you can read this:
cmp.l d3c_feof(a0),d4 ; end of file?
blt.s dv3_lcbf ; ... no, locate
move.l ddf_smask(a4),d3 ; byte within sector
bne.s dlb_loc1 ; not the start of a new sector
addq.w #1,d5 ; next sector ***********!
bcc.s dab_do ; ... current version can only
; with sector number up to
move.l d4,d5 ; start of file?
subq.w #1,d5 ; highest sector number
So, if a sector number of a file would be higher than 65536, the error
is triggered. As each sector is 512 =Bytes long, after 65536 * 512 =
32Mib, it's the end.
To get around this, you would have to rewrite, at least, the parts of
the filesystem handling the slave blocks.
NB there is another 65536 limit in the filesystem, that of the number of
clusters a qxl.win drive may have....
QL-Users Mailing List