On 6 Jan 2010, at 17:50, Ralf Reköndt wrote: > gdgqler wrote: >> On 6 Jan 2010, at 17:21, gdgqler wrote: >> >>> >>> On 6 Jan 2010, at 17:04, Ralf Reköndt wrote: >>> >>>> gdgqler wrote: > >>>>> In TK3 sold by Digital Precision there are three commands >>>>> >>>>> SARRAY filename,array saves the array to the file >>>>> SARRAY_O is the same as SARRAY but overwrites an original file >>>>> LARRAY filename,array loads an array from the file >>>>> >>>>> The saved arrays have the following header: >>>>> >>>>> Position Item >>>>> 0 'ATK3' >>>>> 4 Array type (as in the BASIC name table so $0301 is a >>>>> string array) 6 Offset to data >>>>> 8 Number of dimensions >>>>> 10 Index 1 >>>>> 12 Multiplier 1 >>>>> 14 Index 2 >>>>> 16 Multiplier 2 >>>>> >>>>> .. ... >>>>> >>>>> Offset Start of data >>>> >>>> Just to make it a bit more complete: >>>> >>>> Commands >>>> >>>> SARRAY name,array save an array to a file >>>> SARRAY_O name,array SARRAY with overwrite >>>> LARRAY name,array load an array from a file >>>> SORT array$ sort 2-dimensional string array >>>> SORT array$,field sort 3-dimensional string array by field >>>> SORT_I array$ ,field inverted SORT >>>> >>>> Functions >>>> >>>> ADIM (name) find no. of dimensions of a saved array >>>> ADIMN (name,i) find dimension i of a saved array >>>> ATYP (name) find type of a saved array >>> >> >> I see that I have written in my manual that ADIMN doesn't work unless >> the file has at least 64 bytes. >> >> Is this another of my errors? Or was that quirk corrected? > > I do not know, I haven't used such a small file ever. Maybe you can find the > bug (if so) in the source code 8-)?
I no longer have, or can't find, which for immediate practical purposes is the same thing, the source code for TK3 sent to me by Freddy Vaccha. However, I have a file called TK3_TOOL2_asm which does have code for ADIMN. This is similar to the code I have for the amended version of TK3 I use personally. The code in TK3_TOOL2_asm has, near the start, after the file containing the array has been opened, code to read in 64 bytes. If D0.L is non zero after this then an error is reported. Clearly the EOF condition will cause an error for all files of length less than 64. This, I assume, is the error I have mentioned. As for TURBO, I think that the real reason that it did not compile the instructions 18 years ago was due to the fact that at the time TURBO did not allow array parameters to machine code procedures or functions. TURBO allows these now. Although string arrays can still not be used as parameters except under SMSQ/E. George _______________________________________________ QL-Users Mailing List http://www.q-v-d.demon.co.uk/smsqe.htm
