Re: [Ql-Users] QXL.WIN internal format?
Evening David, David Tubbs wrote: It is some time since I was looking into the depths of QXL_WIN, and at that time I found a full and detailed specification of the layout. Not sure where it came from, a web page, not on my current machine but I could look at an old HDD ? I have received a lot of helpful information from John H. and Daniele T. and written it up - which should keep Per happy :-) - so thanks for your offer but I won't need to take you up on it. I found quite a lot of QXL.WIN form at information on the Internet - most of which seems to be incomplete strangely enough. Hopefully, when I get mine finished, it will be complete in content. Thanks again. Cheers, Norman. ___ QL-Users Mailing List http://www.q-v-d.demon.co.uk/smsqe.htm
Re: [Ql-Users] QXL.WIN internal format?
Evening Ralf, 8-) Winbackup seems quite a long time ago ;.) WinBack does seem a long time ago - it was the first program I had reviewed in QL World magazine. We must be getting old. Cheers, Norman. ___ QL-Users Mailing List http://www.q-v-d.demon.co.uk/smsqe.htm
Re: [Ql-Users] QXL.WIN internal format?
Hi, Norman. Ok, 0-1-2-3 but when we get to C-D-E-F-$. What's going on here? Is this sequence telling me that the map groups (of 4 sectors each) 0 through $F are all linked in a chain belonging to whichever file has file_id 1 and that block group $10 is the final one in the file? Almost :-) The chain actually belongs to the header/map and map entry $F (containing $) is the last in the chain. This would suggest that the entry for the first free group is pointing to that of the next free group... I don't follow you here. According to the header fields, the first free block is $338F and not the zero'th block in the map. Unless you mean block $338f and not block zero of course, as the first free block. Yes: map_entry_for_first_free_group-map_entry_for_next_free_group-... Assuming the root directory is file zero, this would be why we need to have it listed somewhere as otherwise it would start at sector zero on the disc. That's right - the file number is an index into the directory, not the map or the disk. I assume that then that the directory entry for the root directory is all zeros then? This seems to be the case with my example file so far. I guess so. I appreciate your taking the time to explain these things to me, one last question for now. Where did you find out? I could tell you but then I'd have to kill you :-) Actually, the scheme is basically the same as used by FAT-formatted PC disks. The rest is just experience and a (little) bit of logic... John ___ QL-Users Mailing List http://www.q-v-d.demon.co.uk/smsqe.htm
Re: [Ql-Users] QXL.WIN internal format?
Evening John, Thanks for yet more explaining. I discovered (!) that if I take the file_id from the file's entry in the directory and use that to index into the block map (having subtracted 1 first) I get a 'value' which I call stragely, the block number. Multiply that by the number of sectors per disc and we have a sector number. Multiply that by 512 and we have the file's address in the hard disc. It appears that in QLWA formatted 'discs' there is a header of 64 bytes at that address immediately followed by the first 2048-64 bytes of the file. Progress! I haven't yet figured out where the second block of the file should be, but I'll be looking at some point in the future.e I thought that the block number (also) pointed at the next block in the chain but when I followed that logic, I found that the second block in my test file was not in anyway connected to the first one. Needs more investigation I think. Almost :-) The chain actually belongs to the header/map and map entry $F (containing $) is the last in the chain. Hmmm, see above. This is where I seem to lose the plot. Are you saying that the zero block in the map, holding $0001 is telling me (a) where on disc to find the 4 sectors for this block PLUS (b) where the second block in this file is (ie, map entry $0001). This is what I tried with my test file but got nowhere. :-( Unless you mean block $338f and not block zero of course, as the first free block. Yes: map_entry_for_first_free_group-map_entry_for_next_free_group-... Ok, thanks. That's right - the file number is an index into the directory, not the map or the disk. I was going to ask about sub-directories and adding/deleting files to and from those but then I discovered that each entry in every directory has a file_id word (implies 65536 maximum files per disc) at offset $3a in the directory entry - which leads nicely into the block map and from there to the first 4 sectors on disc. last question for now. Where did you find out? I could tell you but then I'd have to kill you :-) Aha, that old one - I use it often myself at work. :-) Actually, the scheme is basically the same as used by FAT-formatted PC disks. Ok, thanks, I'll see what other info I can dig up on FAT discs sometime. Might help! The rest is just experience and a (little) bit of logic... Ah well, experience is something I can look forward to, I only started this yesterday! Thanks again. Cheers, Norman. ___ QL-Users Mailing List http://www.q-v-d.demon.co.uk/smsqe.htm
Re: [Ql-Users] QXL.WIN internal format?
8-) Winbackup seems quite a long time ago ;.) Cheers...Ralf - Original Message - From: Norman Dunbar Sent: Friday, April 25, 2008 8:52 PM Subject: Re: [Ql-Users] QXL.WIN internal format? Evening John, Thanks for yet more explaining. I discovered (!) that if I take the file_id from the file's entry in the directory and use that to index into the block map (having subtracted 1 first) I get a 'value' which I call stragely, the block number. Multiply that by the number of sectors per disc and we have a sector number. Multiply that by 512 and we have the file's address in the hard disc. It appears that in QLWA formatted 'discs' there is a header of 64 bytes at that address immediately followed by the first 2048-64 bytes of the file. Progress! I haven't yet figured out where the second block of the file should be, but I'll be looking at some point in the future.e I thought that the block number (also) pointed at the next block in the chain but when I followed that logic, I found that the second block in my test file was not in anyway connected to the first one. Needs more investigation I think. Almost :-) The chain actually belongs to the header/map and map entry $F (containing $) is the last in the chain. Hmmm, see above. This is where I seem to lose the plot. Are you saying that the zero block in the map, holding $0001 is telling me (a) where on disc to find the 4 sectors for this block PLUS (b) where the second block in this file is (ie, map entry $0001). This is what I tried with my test file but got nowhere. :-( Unless you mean block $338f and not block zero of course, as the first free block. Yes: map_entry_for_first_free_group-map_entry_for_next_free_group-... Ok, thanks. That's right - the file number is an index into the directory, not the map or the disk. I was going to ask about sub-directories and adding/deleting files to and from those but then I discovered that each entry in every directory has a file_id word (implies 65536 maximum files per disc) at offset $3a in the directory entry - which leads nicely into the block map and from there to the first 4 sectors on disc. last question for now. Where did you find out? I could tell you but then I'd have to kill you :-) Aha, that old one - I use it often myself at work. :-) Actually, the scheme is basically the same as used by FAT-formatted PC disks. Ok, thanks, I'll see what other info I can dig up on FAT discs sometime. Might help! The rest is just experience and a (little) bit of logic... Ah well, experience is something I can look forward to, I only started this yesterday! Thanks again. Cheers, Norman. ___ QL-Users Mailing List http://www.q-v-d.demon.co.uk/smsqe.htm ___ QL-Users Mailing List http://www.q-v-d.demon.co.uk/smsqe.htm