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:


dv3_albf
        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
                                                cope
                                         ; with sector number up to
                                                65535
        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
        rts



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.

HTH

Wolfgang

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