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 |