Subj : Re: C=128 Basic 7.0 HEADER command with variables To : Anton Treuenfels From : Johann Klasek - swap last two domai Date : Mon Jun 04 2018 11:10:47 Anton Treuenfels wrote: > > "GEO" wrote in message > news:nm9h1cl5g0f66qdjofd23tps7rsvivtm6k@4ax.com... >> I am trying to use the header command with a variable and it won't >> work with the DISK ID as a variable. >> >> A$="Disk-NAME" >> B$="9U" >> HEADER (A$),I(B$),D0,U8 >> >> Gives a syntax error. > > I(B$) is interpreted as an array variable. BASIC does not allow array > indices to be strings. You would get the same syntax error wherever you > tried to do this. Not a bad guess, but not exactly that what the interpreter really does. It a syntax error too, but not the same! All disk based commands uses a sub-parser to handle the position independent arguments. The parser expects for the "I" argument exactly 2 following characters following. There is no expression evaluation at all. You have to be careful on known tokens like "ON", "TO", "FN", "IF" which represents only one byte, expecting an additional byte which are taken as ID. In the case above, the parser takes "(B" as ID and the parser wants to continue with "$)" where it expects a "," or "TO" (not in this case) or a end-of-line, which raises the syntax error. Currently I may only offer the german version of the command description for HEADER as Wiki article, https://www.c64-wiki.de/wiki/HEADER, which describes the special behavior on disk parameters. The workaround as mentioned before by using ",Ixx" in the diskname parameter is just possible, because the diskname is written directly to command channel. The only limit is the length of 16 characters. In that way the diskname is limited to 12 characters, if the remaining 4 characters are needed for ",Ixx". Johann --- SoupGate-Win32 v1.05 * Origin: Agency HUB, Dunedin - New Zealand | Fido<>Usenet Gateway (3:770/3) .