Auktion
HIS Auktion - die neue Auktionssoftware. Erstellen Sie ein eigenes Auktionshaus.

C-Control-intern - Forum zur CC-1

Zur Übersicht - Neuer Beitrag - Zur FAQ - Zum CC-2-Forum

Re: Verschachtelung von gosub (von Georg Ziegelbauer - 11.5.2001 22:36)
Hi!

Du kannst die GOSUB/RETURN-Routinen 4-fach schachteln. Häufig passiert der Fehler wenn der Stack (8 BYtes) voll ist.
Das passiert so:
Du springst mit GOSUB in eine Unterroutine und verläßt diese über einen anderen Weg als RETURN wieder. Der Stack
wird nicht gelöscht und so wird beim nächsten auftretenden GOSUB die nächste Rücksprungadresse beschrieben. Das
heißt: eigentlich befindest Du Dich in einer 2.Verschachtellungsstufe und nicht in der 1. wie Du eigentlich wolltest.
Nach 4 geschrieben Adressen ist der Speicher voll und Dein Programm spinnt.
Es kann einfach passieren daß man mal ein RETURN vergisst oder absichtlich über eine IF-Schleife z.B. zurück springen
will.

Ich habe mir so geholfen: Ich habe immer in meiner Main-Schleife also ganz am Anfang wo das Programm immer
wieder zurückkommt, einen Sprung um den Stack der RETURNS zu löschen (über SYS). Damit kann sich so ein gemeiner
Fehler nicht mehr einschleichen.

So long
Georg
> Hi.
> Folgenden Problem.
> Wenn ich mittels gosub in Unterroutine1 verzweige und dann aus dieser mit gosub zu Unterroutine2 verzeige und dann
> das return kommt dann landet das Programm nicht in 1 sondern bei Aufruf von 1 also beim 1. gosub.
> Kann man das denn nicht verschachteln?
> Hat vielleicht jemand eine Idee wie man das Problem ohne viel Aufwand umgehen/lösen kann.
>
> Danke
> Matthias


Auf diese Nachricht eine Antwort schreiben

bisherige Antworten:

Zum Bezugsartikel