Mit der Erweiterung ISuche nimmt der Computer Ihnen die Mühe ab, lange Listings zu durchsuchen. Bei längeren Basic-Programmen taucht sehr leicht das Problem auf, daß man bald nicht mehr weiß, ob man das eine oder andere schon programmiert hat, oder etwas verbessern muß, von dem man nicht mehr weiß, wo es steht. Aus diesem Grunde habe ich das folgende Programm bzw. den Zusatzbefehl |SUCHE entwickelt. |SUCHE |SUCHE < ,zeile% >, @such$ Das Kommando sucht einen Text in dem im Speicher befindlichen Basic-Programm und editiert die Zeile, in der er zum ersten Mal gefunden wird. such$ muß dabei eine Stringvariable sein, die den gesuchten Text enthält, und zeile% ein Integerausdruck mit der Zeilennummer, ab der gesucht werden soll. Fehlt zeile%, so wird am Programmanfang mit der Suche begonnen. Ist zeile% = 0, so wird dort angefangen, wo such$ das letzte Mal gefunden wurde. Mit dem wiederholten Kommando |SUCHE, 0, @such$ läßt sich also sehr schnell eine Liste der Zeilen erstellen, in denen such$ vorkommt. Wurde such$ beim letzten Mal nicht (mehr) gefunden, wird jetzt wieder am Anfang begonnen. Enthält such$ (außer als letztes Zeichen) ein so wird an dieser Stelle jedes Zeichen der Basic-Zeile angenommen. Ist ”?” das letzte Zeichen von such$, so wird hier nur ein ”?” akzeptiert. Beispiel: Bei Eingabe von such$ = "var (?)”: |SUCHE, zeile%, @such$ wird z.B. gefunden: ...var(0)... ...var(7)... ...var(8)... ...var(i) ... usw. Ist das letzte Zeichen von such$ = CHR$(0), so wird such$ nur am Zeilenende gefunden. Wegen 0 < Zeilennummer < 65536 und -32768 < zeile% < 32767 muß evtl. folgende Anpassung vorgenommen werden: IF Zeilennummer > = 32768 THEN zeile% =zeilennummer-65536 ELSE zeile% = zeilennummer oder zeile% = UNT (zeilennummer) Die Variablen: adresse: enthält die Adresse der Speicherstelle, die gerade bearbeitet wird h: HIMEM zahl: aus den DATA-Zeilen gelesene Zahl, die gerade bearbeitet wird Das MC-Programm steht in den DATA-Zeilen 370-420. Die Daten in den Zeilen 430-470 werden für die Manipulation des Tastaturpuffers benötigt. Die ersten 9 Byte des MC-Programms werden nur zum Einbinden gebraucht und können nach dem CALL h+1 dem Basic-Speicher wieder zur Verfügung gestellt werden. Ein MEMORY h im Basic-Programm hat jedoch "Memory full” zur Folge. Deshalb wird das MEMORY h im Direktmodus (Ready-Modus) eingegeben. GOTO 360 setzt dann das Programm fort. Das MC-Programm kann auch an andererstelle im Speicher stehen, je nachdem, welchen Wert HIMEM vor der Ausführung hat. Andreas Höhr , CPC Magazin |