APPLICATIONSPROGRAMMATION ★ FLIEßKOMMA-COMPILER|CPC MAGAZIN) ★

Fließkomma-Compiler (CPC Magazin)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 ★ 

Bei diesem Programm handelt es sich um eine eingeschränkte Basic-Version, die dem Assembler-Programmierer auf einfache Weise die Vorzüge der Fließkomma-Arithmetik zur Verfügung stellt. Der CPC verfügt zwar über ROM-Routinen zur Verarbeitung von Fließkommazahlen; diese lassen sich aber nur ziemlich umständlich und aufwendig nutzen.

Dieses Problem löst der “FLK-Compiler“. Er übersetzt überschaubare Basic-Routinen in kommentierten Assem-bler-Quellcode, der problemlos in eigene Programme eingebaut werden kann.

Befehlsübersicht

Der ”FLK-Compiler” dient ausschließlich zur Erstellung von Fließkommaroutinen. Dementsprechend ist auch sein Wortschatz ausgelegt. Bis auf wenige neue Kommandos, die vor allem die Umwandlung der verschiedenen Zahlenformate betreffen, sind die Funktionen/Befehle sinngemäß aus Basic übernommen.

1. Funktionen

  • Addition a1=a2+a3
  • Subtraktion a1=a2-a3
  • Multiplikation a1=a2*a3
  • Division a1=a2/a3
  • Potenzierung a 1 =a2 * a3
  • Vorzeichenwechsel a1=-a1
  • Quadratwurzel a1=SQR (a2)
  • Exponentialfunktion a1=EXP(a2)
  • nat. Logarithmus a1 =LOG (a2)
  • Sinus a1=SIN(a2)
  • Cosinus a1 =COS (a2)
  • Tangens a1=TAN(a2)
  • Arcustangens a1=ATN(a2)
  • Ganzzahl a1=INT(a2)
  • Minimum a1 =MIN (a2, a3)
  • Maximum a1 =MAX (a2, a3)

2. Variablen

Der ”FLK-Compiler” unterscheidet hier drei verschiedene Typen, nämlich Fließkomma- und Integer-Variablen sowie Integerflags.

Fließkommavariablen bzw. -konstanten belegen 5 Byte Speicherplatz. Alle Berechnungen erfolgen mit ihnen. Integer-Variablen werden im 2-Byte-Format gespeichert (Low-High). Sie lassen sich leicht als Parameter von anderen Teilen des Assembler-Programms übergeben. Die Umwandlung zwischen diesen beiden Variablentypen ist möglich. Beim dritten handelt es sich um die 1-Byte-lnteger-Zahl.

Sie wird als Flag verwendet, um über die Ergebnisse der Routine zu informieren.

FLK-Variablen erhalten als Kennung den Anhang flk, eine FLK-Konstante wird durch ein vorausgehendes k markiert.. Falls der verwendete Assembler nur eine bestimmte Länge der Labels zuläßt, sollte man dies berücksichtigen. Namen von Z80-Registern dürfen nicht für Integer-Variablen Verwendung finden, da der Assembler die Variable sonst als Register interpretieren würde.

3. Befehle

a. Variablenbehandlung IN a1,a2,a3, ...an

Dient zur Übergabe von Integer-Variablen an das Programm über den Stapel (IX+n), analog zur Parameterübergabe bei CALL bzw. RSX. Mit diesen Variablen läßt sich jedoch noch nicht rechnen.

MODIFY a1, a2, a3,... an

Bringt die angegebenen Integer-Variablen in das für die Berechnungen erforderliche 5-Byte-FLK-Format. INTEGER < FLK-Variable > = < lnteger-Variabie > Gegenstück zu MODIFY, wandelt FLK-Variablen wieder in 2-Byte-lnteger-Werte um, die vom Assembler-Programm weiterverarbeitet werden können.

DEFINT a1, a2, a3,... an

Reserviert Speicherplatz für Integer-Variablen, etwa als Ergebnis (absolute Koordinaten) einer Winkelberechnung.

DEFFLAG a1, a2, a3,... an

Reserviert Speicherplatz für 1-Byte-lntegerflags. Es erfolgt nur ein Eintrag in die interne Variablentabelle; das Flag wird nicht auf Null gesetzt. DEFINT und DEFFLAG ' sind nicht zwingend; es können auch bereits definierte Labels des Assembler-Programms übernommen werden.

FLAG < flag > =

Wertzuweisung an Integerflags, z.B. FLAG failed = 1. KONSTANTE < name > = < Dezimalzahl >

Definiert eine FLK-Konstante, mit der sich beliebige Berechnungen durchführen lassen, z.B. KONSTANTE pi=3.14159265.

b. Sonstige

IF THEN

Entspricht weitgehend dem Basic-Befehl. Ais Bedingung wird ein Vergleich zweier Variablen angegeben. Erlaubte Operatoren sind: =, < >, >, <,> =,<=. Hinter THEN darf nur eine Zeilennummer stehen.

ORG < Hexzahl >

Setzt die Startadresse des Assembler-Programms, so daß die Routine selbständig lauffähig wird.

RETURN

Entspricht dem Assembler-Befehl RET und muß ans Ende einer selbständigen Routine gesetzt werden.

DEG

Schaltet das Winkelmaß für trigonometrische Funktionen ein.

RAD

Schaltet das Bogenmaß ein.

4. Bemerkungen

Alle Berechnungen arbeiten mit höchstens drei Variablen. Diese Anzahl darf nicht überschritten werden. Trotz dem ist es auch möglich, verschachtelte Ausdrücke umzusetzen; diese sind jedoch zuvor in Zwischenergebnisse zu zerlegen. Die Formel a = (SIN(2*b)/5) wird so zu: b1=2*b s=SIN (b1) a=s/5

Dieses Verfahren beeinflußt die Rechengeschwindigkeit nicht, half aber, das Programm in akzeptabler Länge zu halten.

Öie Spaces bei einigen Befehlen sind zwingend. Nichtbeachtung führt zu einer Fehlermeldung.

Programmbeschreibung

Nach dem Start meldet sich das Programm mit. dem Hauptmenü, das folgende acht Punkte umfaßt:

  1. Sourcefile laden
  2. Source-Text editieren
  3. Source-Text neu anlegen
  4. Source-Text speichern
  5. Kompilieren und speichern
  6. Kompilieren und drucken
  7. Assembler-Format einstellen
  8. Ende

Punkt 1 lädt ein Sourcefile von Diskette bzw. Cassette. Das Format ist auf den Basic-Editor ausgerichtet, d.h., Zeilennummern sind zwingend, und jeder von ihnen folgt ein Space. Wird diese Darstellung berücksichtigt, läßt sich der Source-Text mit jedem beliebigen Texteditor erstellen.

Die Punkte 2 und 3 aktivieren den eingebauten Editor. Dieser dient eigentlich nur zur Änderung und zur Eingabe von kleineren Routinen. Daher beschränkt er sich auf die Grundfunktionen löschen, einfügen und editieren. Beim Löschen wird die Zeilennummer genannt; beim Einfügen reicht es, die Programmzeile mit ihrer Nummer einzugeben. Zum Editieren wird die entsprechende Zeile ausgedruckt und läßt sich mit dem Copy-Cursor in die Eingabezeile holen (entspricht dem Basic-Editor).

Punkt 4 speichert das Sourcefile auf Diskette bzw. Cassette, wobei für Diskettenbetrieb der vollständige Dateiname (mit Extension) anzugeben ist. Das gilt übrigens auch für Punkt 1.

Die Punkte 5 bzw. 6 starten den Kompiliervorgang mit Ausgabe des Assembler-Quellcodes auf dem Datenträger bzw. auf einem angeschlossenen Drucker. Stößt das Programm auf eine fehlerhafte Zeile, erscheint die entsprechende Fehlermeldung mit Zeilenzahl. Nach ca. zwei Sekunden folgt automatisch ein Sprung in den Editiermodus, und die Zeile kann sofort verbessert werden. So läßt sich ein Fehler einfach und schnell korrigieren. Anschließend verzweigt das Programm wieder ins Hauptmenü, so daß der Kompiliervorgang unmittelbar wiederholt werden kann.

Punkt 7 ermöglicht die Anpassung des Assembler-Quellcodes an alle gängigen Assembler, so daß das System universell einsetzbar ist. Menügesteuert lassen sich alle Parameter, wie z.B. Zeilennummern, Darstellung von Hexzahlen, Label-Trennzeichen usw., verändern. Das Programm speichert das Format in der Datei FLKFORM.DAT, die bei jedem Neustart des Systems geladen wird. Daher reicht eine einmalige Adaption des Assembler-Formats aus. Das Format ist voreingestellt auf den Laser-Genius-Assembler (unter LOAD ASCII "narne” ,1).

Anpassungen

Der ”FLK-Compiler” wurde für den CPC 464 geschrieben. Die Anpassung an den CPC 664 bzw. 6128 ist einfach durchzuführen, da das Programm ohne Maschinencode auskommt und alle ROM-Routinen als Labels in der Programmzeile 4530 abgelegt sind. So müssen nur die in Zeile 4530 angegebenen Adressen der jeweiligen Vektoren an das gewünschte CPC-Modell adaptiert werden. Casset-tenbenutzer lassen bitte Zeile 4960 weg. Außerdem ist zu beachten, daß bei Cassetten betrieb die Datei FLKCOM .DAT direkt hinter dem Programm abzulegen ist.

Listing 3 ist lauffähig ab &9000 und stellt den RSX-Befehl |PRINT, Adresse, @Variable zur Verfügung. Dieser legt den Wert der Fließkommazahl ab Adresse inder Variablen ab.

Jochen Meyburg, CPC Magazin

★ PUBLISHER: CPC Magazin
★ YEAR: 1987
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ TAG: /ASM/ASSEMBLER/RSX/
★ LICENCE: LISTING
★ AUTHOR: Jochen Meyburg

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» Fliesskomma-Compiler  v1.7    (CPC  Magazin)    GERMANDATE: 2020-06-13
DL: 29 fois
TYPE: ZIP
SIZE: 11Ko
NOTE: 40 Cyls
.HFE: NON

Je participe au site:
» Newfile(s) upload/Envoye de fichier(s)
★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » CBasic Compiler
» Applications » Basic Compiler
» Applications » Hisoft - C for Amstrad
» Applications » Basic Compiler (CPC Magazin)
» Applications » Sprites Alive - Compiler Version
» Applications » Microsoft Basic Compiler

QUE DIT LA LOI FRANÇAISE:

L'alinéa 8 de l'article L122-5 du Code de la propriété intellectuelle explique que « Lorsque l'œuvre a été divulguée, l'auteur ne peut interdire la reproduction d'une œuvre et sa représentation effectuées à des fins de conservation ou destinées à préserver les conditions de sa consultation à des fins de recherche ou détudes privées par des particuliers, dans les locaux de l'établissement et sur des terminaux dédiés par des bibliothèques accessibles au public, par des musées ou par des services d'archives, sous réserve que ceux-ci ne recherchent aucun avantage économique ou commercial ». Pas de problème donc pour nous!

CPCrulez[Content Management System] v8.7-desktop/cache
Page créée en 292 millisecondes et consultée 164 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.