RSX Übergabebefehle

  • Wo werden die übergebenen Werte beim " |test,a,b,c" zb zwischengespeichert zum abruf im ASM-Programm unten?


    mfg


  • Wah, das ist ja toll im Wiki beschrieben :(.


    Die Anzahl der Uebergabeparameter sind beim Aufruf der RSX-Routinen im Akkumulator (A) enthalten und koennen dann mit

    Code
    CP x
    RET nz


    Abgefragt werden. 'x' ist dabei die Anzahl der Uebergabeparameter des RSX Befehls. Mit 'RET nz' kehrt man ins BASIC zurueck, wenn die Anzahl nicht stimmt.


    Die Uebergabeparameter selbst werden im Indexregister IX uebergeben, wobei IX+0 immer der letzte Uebergabeparameter ist und immer zwei Byte lang sind. Bei Strings wird die Adresse des Strings uebergeben (in Basic: @a$).


    Ein Beispiel:
    |TEXT, farbe, breite, hoehe, @String

    Code
    (ix+0) - Lowbyte Stringadresse
    (ix+1) - Highbyte Stringadresse
    (ix+2) - Lowbyte 'hoehe'
    (ix+4) - Lowbyte 'breite'
    (ix+6) - Lowbyte 'farbe'


    In diesem Beispiel reicht das Lowbyte fuer 'hoehe', 'breite' und 'farbe' aus. Werden Werte groesser 255 benutzt, so kann man natuerlich das Highbyte mit (ix+3), (ix+5) und (ix+7) abfragen.


    Ich hoffe, ich konnte dir ein wenig weiterhelfen.

  • Nun,


    LD BC,(IX+0)


    geht nicht


    entweder


    LD B,(IX+1)
    LD C,(IX+0)


    oder nur


    LD B,(IX+0)

  • Zitat von "schneiderfan"

    Jup, danke.
    Irgendwie wollte ich die Frage erweitern und dann war es weg, weil ich das x betätigt hatte.


    Uups, da war wohl eine Berechtigung zu viel fuer die "normalen" Benutzer der Boards eingestellt. Das Loeschen von eigenen Postings sollte jetzt nicht mehr moeglich sein. Danke fuer den Hinweis.