Hi all,

as promised, I had a look at the problem of copying large files onto a QXL.WIN drive.

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  d3c_fsect(a0),d5
        move.l  ddf_smask(a4),d3         ; byte within sector
        and.w   d4,d3
        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?
        beq.s   dab_do

        moveq   #0,d5
        subq.w  #1,d5                    ; highest sector number
        moveq   #err.eof,d0

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

Reply via email to