APPLICATIONSPROGRAMMATION ★ Strings vertauschen ★

Strings Vertauschen (CPC Amstrad International)Applications Programmation
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

Die Maschinensprache belegt den Speicher ab A400H bis A5A0H, liegt also unterhalb des HIMEMs mit Floppy. Die beiden Routinen sind mit ausführlichen Fehlermeldungen versehen, so daß - außer bei einer falschen Aufrufadresse -nichts passieren kann. Die Zeile mit dem fehlerhaften Aufruf wird dann im Edit-Modus aufgelistet, um sie sofort korrigieren zu können.

Um die Funktion der Routine zu verstehen, muß man wissen, wie Basic Strings behandelt. Die Strings werden, von oben beginnend, in den Speicher geschrieben. Dabei existiert ein Descriptor (Beschreiber) zu jedem gültigen String, der die Länge und die Startadresse des Strings enthält. Die Adresse des Descriptors eines Strings, läßt sich mit der Funktion a bestimmen (z.B. PRINT a a$). Dazu muß der String aber schon verwendet, oder als Feld definiert worden sein (dann existiert nämlich ein Eintrag in der, sich ans Basic-Programm direkt anschließenden Variablentabelle, die von jedem Basic-Programm angelegt wird). Wenn nun in Basic zwei Strings vertauscht werden sollen (z.B. um zu Sortieren), dann muß das mit einem Hilfsstring gemacht werden:

  1. hilf$=a$
  2. a$=b$
  3. b$=hilf$

Dabei werden drei neue Strings in den Speicher geschrieben (die alten bleiben stehen). Wenn der Speicher voll ist. wird eine »Garbage Collection« durchgeführt, eine Art »Müllsammlung«, bei dem die alten, ungültigen Strings entfernt, die gültigen Strings nach oben geschoben und ihre Descriptoren korrigiert werden. Diese »Garbage Collection« wird z. B. auch bei fre(" ") ausgeführt und ist sehr zeitaufwendig (bei 2000 Strings mit 16 Zeichen dauert sie über sieben Minuten). Um dies beim Vertauschen von Strings zu vermeiden, benutzt man die Maschinensprache-Routine STREX, die mit CALL &A400, a a$, a bS aufgerufen wird Dabei sind auch Stringfeld-elemente zugelassen. Die Routine vertauscht nach einem Syntaxcheck einfach die beiden Descriptoren. Dadurch zeigt der Zeiger von a$ dann auf b$ und umgekehrt, so daß die Strings für das Basic verlauscht sind. Es werden dann keine neuen Strings in den Speicher geschrieben, so daß hier keine Garbage Collection nötig ist (der Sortiervorgang einer in Basic geschriebenen Adressverwaltung verkürzt sich mit der Routine von 15 min. auf 40 sec.!!!).

Die zweite Routine dient zum Einsortieren eines neuen Strings in ein eindimensionales Stringfeld. Sie wird mit CALL &A500, a a$(x), a b$ aufgerufen, wobei x die Stelle ist. an die der neue String b$, eingefügt werden soll. Die Routine verschiebt dann von der Stelle x an, alle Strings (bzw. deren Descriptoren) um eine Stelle nach oben, und fügt den neuen Descriptor ein. Natürlich sollte die höchste Stelle noch frei sein, da sonst der letzte String verloren geht. Auch hier werden wieder keine neuen Strings in den Speicher geschrieben. wie das bei Basic passieren würde. Die einzusortierende Stelle wird durch das Basic-Programm errechnet. dadurch sind die Sortierkriterien frei verfügbar.

Jens Uwe Timm , CPCAI 8512

★ PUBLISHER: CPC Amstrad International
★ YEAR: 1985
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: CPC AMSTRAD INTERNATIONAL 1982
★ AUTHOR: Jens Uwe Timm
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» Strings  Vertauschen    (CPC  Amstrad  International)    GERMANDATE: 2012-12-16
DL: 231
TYPE: ZIP
SiZE: 5Ko
NOTE: 40 Cyls
.HFE: Χ

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding Src's » Musique Rendez-vous (Amstrad Magazine)
» Coding Src's » Sound Programming (Computing with the Amstrad)
» Coding Src's » Statik 1 (Schneider Aktiv Special)
» Coding Src's » FastCLS (CPC Computing)
» Coding Src's » Conveyor Belt
» Coding Src's » Borde Multicolor (Amstrad Personal)
Je participe au site:
» Vous avez des infos personnel ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 212 millisecondes et consultée 1418 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.