ist es egal, "wieviel Programm" dahinter noch kommt, Ptermres() gibt den Speicher ja ans OS zurück.
Das ist für mich die Herausforderung: Ptermres gibt ja nicht allen Speicher zurück, sondern nur vom Anfang der TPA + angegebene Größe "keepcnt". Wie ich diesen letzten Wert dann beim Aufruf von PTermres errechne, das wäre das Interessante. Hier:
http://toshyp.atari.org/de/00500b.html#Ptermres steht:
"keepcnt Anzahl der Bytes, die resident gehalten werden sollen (gilt ab Anfang der Basepage und schließt die Länge des TEXT, DATA und BSS Segments des Programms plus der Länge des Stacks ein; Minimum sind 128 Bytes)."
(Nebenbei, das in der Klammer verstehe ich nicht. Wenn ich es selber angebe, dann ist es doch so, wie ich es angebe. Nur, wenn es selbst etwas errechnet, dann kann es die entsprechenden Segmente mit einschließen. Weil, dann entscheidet "Ptermres" und nicht ich. Die Formulierung ist missverständlich, zumindest für mich. Es müsste vielleicht heißen "... und schließt unter Umständen die Länge... ")
Ich weiß aber in C immer noch nicht, wie ich diesen Wert errechnen kann. Momentan habe ich einfach ordentlich Speicher spendiert. In Assembler kann ich nen Label setzen. Aber in C? Auch ein Label?
Zudem: keepcnt ist ja ab Null. Das Programm ist ja relozierbar. Ich müsste also keepcnt errechnen aus:
Ende des Arrays minus Anfang der TPA? Wie mach ich das? Am besten mit Label-Adressen, oder?
Oder wird der Beginn der TPA immer mit Null gezählt, so dass das Ende des Arrays nichtmehr die TPA (=0) abgezogen bekommen muss?
Sorry, wenn ich so frage. Aber ich bin da noch nicht so bewandert...