Sie sind hier  Programmieren

Entwickeln von BASIC-Programmen in INTEL-MCS-BASIC mit MOTRON-Erweiterung

Programmentwicklung:

Es wird sicher Benutzer geben, die auf fertige Programme von MOTRON zurückgreifen. Ebenso kann der Anwender aber auch die vollen Fähigkeiten dieser Sprache nutzen und sein spezielles Programm schreiben. Alle Möglichkeiten hierzu sind vorhanden.

Ablauffähige BASIC-Programme arbeiten zeilenorientiert. Jede Zeile benötigt am Anfang eine Zeilennummer. Die Zeilen werden in aufsteigender Reihenfolge abgearbeitet.

Um eine Zeile zu löschen wird nur die Zeilennummer alleine eingegeben.

Da der Editor des Prozessors 8052 und seiner Derivate nur zeilenorientiert ist und nur einfaches "Zeichen-Löschen" zulässt, ist eine komfortable Bearbeitung im System selbst nicht möglich. Das macht man besser in einem Zeileneditor.

Mit dem ProgTool wird dann dieses Programm auf das Zielsystem (z.B. BasicMaster) geladen. Oder man kann direkt aus der Zwischenablage mit <shift><Einfg> oder V einfügen.

Normalerweise wird man wie folgt arbeiten:


Editieren
Editieren Mit dem gewohnten ASCII-Editor
Verbindung
Verbindung herstellen Com / Baudrate
Einstellung
Einstellungen RAM / ROM / MTOP
ProgTool
Download z.B. MOTRON's ProgTool
mit automatischem REMKILL (PC -> Controller)
Test Test
BasicMaster
Autostart Der Start ohne PC

nach oben

Verbindung herstellen

Das System meldet sich nach dem Einschalten der Spannungsversorgung selbständig über die serielle Schnittstelle 0 (SIO 0). Diese Schnittstelle ist beim BasicMaster auf einem 9-pol. Sub-D-Stecker, beim StepCon auf dem 10-poligen Pfostenstecker K2 herausgeführt.


Die Schnittstellenparameter sind:

Com-Schnittstelle

Am Bildschirm kommt die Meldung

Startanzeige

Sobald der BASIC-Prompt (>) erscheint ist das System bereit, Befehle anzunehmen. Als erstes Zeichen wird immer ein XON gesendet, um die Kommunikation mit dem Hostrechner freizugeben.

nach oben

Einstellungen

Das Speichermodell des Prozessors zeigt 3 Speicherbereiche, von denen für den Programmierer nur der Speicherbereich im RAM und im EEPROM zugänglich ist. Der Bereich der DBY ist zwar zugänglich, erfordert aber tiefere Kenntnisse. Der Bereich der CBY ist fest ins ROM gebrannt.

Die Speicheraufteilung des Controllers:

Memory Map

RAM Storage Allocation 

Storage

Die wichtigste Festlegung ist MTOP.
Wenn die Motion-Control-Fähigkeiten des MOTRON-Betriebssystems genutzt werden sollen,
ist der höchste Wert für MTOP=4FFFH, sonst 7FFFH.

Unterhalb von MTOP wird der Bereich für die Strings angelegt.
Darunter kommt der Bereich für die Variablen, und zwar unterschiedlich für Skalare
oder Feldvariable. (Siehe dazu das ausführlicheOriginal- Manual)

Beispiel:

MTOP=4FFFH

Nach jedem Systemstart oder Reset testet der Basic-Interpreter den externen Speicher.
Die Adresse des Speicherplatzes, der die obere Grenze des verfügbaren Speichers darstellt,
wird der Systemvariablen MTOP zugewiesen. Der Interpreter benutzt ausschließlich den Adressenbereich,
der unterhalb von MTOP liegt.

Das externe Daten-RAM wird nach dem Einschalten nur bis zum Wert von MTOP gelöscht.
Damit kann bei einem gepuffertem RAM verhindert werden, dass BASIC nach Netz-Ein Datenbereiche löscht,
die der Anwender schützen möchte.  Wenn ein Teil des Speichers für andere Zwecke reserviert bleiben soll,
kann MTOP auf eine niedrigere Adresse gesetzt werden.

Weist man MTOP eine Adresse oberhalb des RAM-Adressenbereichs zu, meldet der Interpreter
einen MEMORY ALLOCATION ERROR.

Für den Entwickler ist es wichtig, genügend Speicher für sein aktuelles Programm zu haben.
Wenn z.B. das Programm 5AFFH groß ist, aber der MTOP auf 4FFFH eingestellt ist, gibt es ebenso
einen MEMORY ALLOCATION ERROR.

Beispiel: Der Programmiererr versucht das Programm vom Rom ins RAM zu laden und MTOP ist zu klein:

>ROM
>XFER
>RAM

>MEMORY ALLOCATION ERROR.

nach oben

Programm entwickeln und testen mit dem MOTRON-ProgTool:

Im Menüpunt 'Programmiertools' findet man nützliche Helfer:

Mit REMKILL werden aus dem Text alle Kommentare gefiltert.

Kommentare werden mit ' (Hochkomma) oder ; (Strickpunkt) vom Programm-Code getrennt und beziehen sich immer nur auf eine Zeile.
REM selbst wird nicht gefiltert, damit man auch gewollte Kommentare übertragen kann.
Außerdem wird ein einfacher Syntaxcheck durchgeführt
(Ob die Zeilennummern aufsteigend sind oder ob am Zeilenende ein korrektes Zeichen steht.)

REMKILL erstellt eine neue Datei, (*.Z) ohne Kommentar, die nur temporär gebraucht wird.

Mit DENUM (Denumber) werden im Programmcode in einem vorgewählter Bereich alle Zeilennummern gelöscht, die keine Sprungziele sind.
Das Ergebnis wird in eine neue Datei geschrieben, als Hilfe zum Neumummerieren.

Mit VARLIST (Variablenliste) wird eine Liste der Programmvariablen erstellt. Gleichzeitig wird überprüft, ob die Syntax eingehalten wird.
Variable unterscheiden sich in MCS-BASIC nämlich nur im ersten und letzten Buchstaben und in der Anzahl der Zeichen.
Das Ergebnis wird in eine neue Datei geschrieben.

ProgTool

Für das Programmieren in BASIC gibt es eine Reihe von weiteren Tools, wie z.B. RENUM.EXE oder fertige MOTRON-Beispielprogramme.

Zwischendurch muss immer wieder das Programm gebrannt, d.h. ins Rom gespeichert werden.

Beispiel EEPROM "brennen", der häufigste und auch bequemste Weg:
Befehl 'PROG' senden. Damit wird das EEPROM programmiert.
Die Auto-Start-Kennung und MTOP einfügen.
Der Überschreibschutz ist aktiviert. 

Beispiel EPROM "brennen":
Daten im Intel-Hex-Format in ein PC-File laden. (s. CALL 5545H)
Die Autostart-Kennung und MTOP (=Speichergrenze) einfügen.
Mit einem externen EPROM-Programmer brennen.
EPROM in den User-Sockel des MotorMaster stecken.

nach oben

Autostart

Nach beendetem Test wird die Autostart-Kennung einprogrammiert. Autostart bedeutet, dass das Programm nach Netz-Ein selbstständig anläuft.
Ohne diese Autostart-Kennung müsste man das Programm mit RUN über das Terminal starten. MTOP kann im Programm verstellt werden.

Byte 8000H = 34H

Autostart nach Netz-Ein)

Byte 8003H = 3FH

Low-Byte von MTOP

Byte 8004H = 0FFH

High-Byte von MTOP

Byte 8010H =55H

Ein gültiges Programm ist im E(E)PROM
(wird durch den Befehl PROG automatisch gesetzt)

   

Beispiel:

PUSH 8000H,34H:CALL 554BH         ' setzt das Autostart-Byte.
PRINT XBY(8000H)                  ‘ kontrollieren, ob richtig geschrieben

Sobald in der Adresse 8000H nach dem Einschalten der Wert 34H gelesen wird, startet das System das
im (E)EPROM gespeicherte Programm automatisch nach einem Netz-Ein.

In den Adressen 8003H (H-Byte) und 8004H (L-Byte) kann zusätzlich ein Wert für die Variable MTOP
angegeben werden. Wenn der Wert kleiner ist, als der systeminterne MTOP=4FFFH, so wird MTOP auf den neuen Wert gesetzt.
Reicht beim Programmieren der RAM-Bereich für Programm und Strings nicht aus, kommt die Fehlermeldung "memory allocation error".
MTOP muss dann passend vergrößert werden.