• Re: C=128 Basic 7.0 HEADER command with variables

    From Johann Klasek - swap last two domai@3:770/3 to Anton Treuenfels on Mon Jun 4 11:10:47 2018
    Anton Treuenfels <teamtempest@yahoo.com> wrote:

    "GEO" <ghandle75.x@gmail.com-SPAM> 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)