Graphic 1 über ASM (TED) starten?

  • Das ist kein Absturz. Du siehst jetzt einfach das, was im Speicher steht wenn TED ihn als Bitmap sieht. Allerdings wird der BASIC-Anfang auch nicht verlegt womit sich da was überschneidet.

    Wenn du wieder auf den normalen Modus zurückschaltest sollte der Rechner noch laufen.
  • Da Du ja deine Anwendung in Maschinensprache schreiben willst, sollte es egal sein wo der Speicher für BASIC-Programme liegt, und letztendes ist das für die Problemstellung auch gar nicht relevant.

    An dieser Stelle bleibt nur der erneute Hinweis, daß Du dich mit der Registerbelegung des TED auseinandersetzen solltest, damit der TED-Chip die Bitmap und den Speicher für die Farb-Informationen da findet, wo Du diese ablegst. Du kannst nicht ernsthaft erwarten, daß man dir hier das auch noch einzeln vorkaut, vor allem dann nicht, wenn auch gar nicht erkennbar ist, was Du überhaupt vorhast.

    So long...
  • sta.to schrieb:


    LIMITING THE BASIC MEMORY
    LET'S START WITH THE END
    Basic programs use the free memory while running. If you have stored your own
    machine language programs into the memory or your own character set, you have to
    inform Basic not to use that area of memory, or otherwise Basic will overwrite
    your machine language programs or your character set with temporary data.
    To protect your machine language programs and/or your custom character set, the
    easiest way is to place them at the end of the memory and to inform Basic that the
    memory available for Basic ends right before your machine language programs and/or
    custom character set begins.
    The highest address of Basic memory can be read and set through memory
    locations 55 and 56. Location 55 contains the lower 8 bits of the address and 56
    the upper 8 bits.
    To read the current "Top of Basic memory" (=end position), type the following line
    in Basic and press Return:
    PRINT PEEK(55) + PEEK(56) * 256
    To protect your machine language programs and/or custom character set, follow
    9
    these steps:
    1. Calculate the total size needed for your machine language programs
    and/or custom character set. (SIZE)
    2. Get the "top of Basic memory", as instructed earlier. (TOBM)
    3. Calculate new "top of Basic memory" (NTOBM): TOBM - (SIZE + 1).
    4. Calculate low and high parts of the NTOBM:
    HI = INT(NTOBM / 256)
    LO = NTOBM - (HI * 256)
    5. Set new "top of Basic memory":
    POKE
    55, LO
    POKE 56, HI
    CLR
    Note! The CLR statement at the end of step 5 is essential. It sets a lot of
    pointers used by Basic to the "top of Basic memory" and Basic will crash unless it
    is executed after the POKEs.
    Note! If you have a Plus/4 and want your program to be C16 compatible, then
    instead of calculating from the real top (end) of memory (64768), calculate from
    16374 instead.
    ON THE OTHER SIDE
    You can also move the start of the basic memory instead, but that is a bit more
    difficult as the whole basic program then needs to be moved. You can alter the
    start position of the basic memory this way:
    POKE
    44,x : POKE x*256,0 : NEW
    ...and the basic memory will then start at x*256. If x for example is 32, then the
    basic memory will start at 32*256=8192. But as a NEW command is used, it is tricky
    to do this at run time. It needs
    multi part
    loading,
    poking
    into the keyboard
    buffer etc, or another trick is to have two basic programs in memory where one is
    starting the other one... Complicated stuff... but on the expanded vic-20 this is
    quite common as the vic chip only can address the first internal 5K and not the
    expanded higher memory. But anyway, for us, it's much easier to move the end limit
    of the memory instead, as described above... except for if you use the following
    little trick on the Plus/4:
    GRAPHIC1:GRAPHIC0
    ...Then (as described in the Basic 3.5 document under GRAPHIC), the whole basic
    program is moved at runtime from 4097 to 16385 taking 12kb from the basic memory.
    If you don't use the graphics, you can use this 12kb area for other things. And
    even if you use the graphics, the 2kb area 4097-6143 is still unused and available
    for other things. But this approach will give programs that NOT are compatible
    with the C16! Well, as long as you don't use the extra 4097-6143 area and only the
    10kb graphics area, then it's C16 compatible, but then you will only have 2kb left
    for the basic...
    GREETINGS PROFESSOR FALKEN
    A STRANGE GAME.
    THE ONLY WINNING MOVE IS NOT TO PLAY.
    HOW ABOUT A NICE GAME OF CHESS?