Ausgabe 23, März1998

Mikrocontroller

BASIC-Standalone Systeme
Autonomer Betrieb von ES535-Systemen


Obwohl BASIC vielfach bereits totgesagt wurde, spielt es im technischen Bereich nach wie vor eine wichtige Rolle. Gerade auch in der Industrie kommt es bei der Entwicklung kleiner bis mittlerer Steuerungen oft entscheidend auf kurze Entwicklungszeiten an. In vielen Fällen ist BASIC dabei klar im Vorteil. Ziel ist es meist, ein abgeschlossenes Gerät zu entwickeln, das dann autonom, also ohne einen PC seinen Dienst verrichtet. Mit dem ES535 ist dies nun möglich.

Die Entwicklungssysteme ES535 und ES535-SIOS dienen in erster Linie dem schnellen Austesten von Programmen im RAM. Im Normalfall gehen Programme deshalb mit dem Ausschalten des Systems verloren und müssen bei einem Neustart neu geladen werden. In Assembler oder mit dem Makrocompiler entwickelte Programme können in einem EPROM eingesetzt werden, so daß die Entwicklungssysteme auch als Zielsysteme verwendbar sind. Mit BASIC-Programmen war das allerdings bisher nicht ohne weiteres möglich, weil diese primär im RAM des Systems ablaufen.

Nun gibt es auch für BASIC-Programme die Möglichkeit, spezielle Programm-EPROMs einzusetzen und damit eine Autostart-Funktion zu nutzen. Das System-EPROM enthält dabei sowohl das BASIC-Betriebssystem als auch das nachträglich hinzugefügte Anwenderprogramm. Durch eine Erweiterung der BASIC-Reset-Routine wurde es möglich, ein vorhandenes Programm im EPROM beim Start zu erkennen, ins RAM zu kopieren und automatisch zu starten.

Für das ES535 sorgt ein neues EPROM für die geforderte Autostart-Fähigkeit. Der Anwender muß aber sicherstellen, daß das System sofort im Modus 3 mit parallelem Daten- und Programmbereich startet. Die Umschaltung erfolgt über das System-GAL und kann durch Verbindung der Anschlüsse SEL1 und SEL2 mit +5V erzwungen werden. Das BASIC-Betriebs-system startet also sofort mit dem Einschalten, wenn am Pfostenstecker ST2 die Pins 33, 35 und 37 miteinander verbunden werden. Man könnte auch einen Schalter anbringen und das System je nach Bedarf im BASIC-Modus oder im Grundmodus starten.

Für das ES535-SIOS ist ebenfalls ein spezielles EPROM (ES535SIB) mit dem speziell angepaßten BASIC-Interpreter und einem freien Anwenderbereich erhältlich. Neben dem EPROM muß auch das GAL des Systems ausgetauscht werden, damit es im Modus 3 mit parallel liegendem Daten- und Programmspeicher startet. Prinzipiell kann jedes SIOS-Interface zu einem speziellen BASIC-System umgerüstet werden. Solange noch kein festes BASIC-Programm eingebrannt wurde, meldet sich das System mit der normalen Einschaltmeldung und kann vom Terminalprogramm aus programmiert werden. Mit einem User-Programm startet dieses zuerst, kann aber vom Terminal aus unterbrochen und editiert werden.

Hier noch ein Tip für Spezialisten: Das normalerweise im SIOS eingesetzte GAL 16V8 enthält exakt dasselbe Programm wie das im ES535. Die Anschlüsse SEL1 und SEL2 (Pin16, Pin17) sind hier ebenfallsÜ vorhanden, aber nicht verdrahtet. Man könnte also auch hier eine Hardware-Umschaltung realisieren. Dasselbe SIOS wäre damit einmal als normales Interface und einmal als spezielles BASIC-System nutzbar.

Das Dateiformat des ins EPROM kopierbaren BASIC-Programms entspricht dem Token-Format im RAM des Systems, ist also kein Quellcode, wie er üblicherweise auf Diskette gespeichert wird. Deshalb muß ein spezielles Kopierprogramm eingesetzt werden. Beide beschriebenen Systeme werden Autostart-fähig, wenn ein fertig entwickeltes BASIC-Programm in der Token-Form mit in das System-EPROM gebrannt wird. Dazu sind folgende Schritte erforderlich:

Der technische Ablauf der Autostart-Funktion beruht auf der erweiterten Reset-Routine. Bei einem Neustart sucht das System bei Adresse 51FFh im EPROM (11FFh absolut) nach der Marke 55h als Signal für ein vorhandenes Programm. Bei Erfolg wird dann der Adreßbereich 1200h bis 4000h (11,5 K) aus dem EPROM in das RAM ab Adresse 0200h kopiert und das so geladene Programm gestartet. Das System ist damit im selben Zustand wie nach einem von Diskette geladenen und gestarteten Programm. Das Programm BASCOPY.EXE erzeugt eine Kopie des Programms im RAM ab Adresse 0200h, also in der Token-Form. Zusätzlich wird die Startmarke 55h vorangestellt.

Auf der zum ES535-SIB mitgelieferten Diskette befindet sich auch die Datei SIOSBAS2.BIN mit dem kompletten Inhalt des EPROMs ohne ein zusätzliches BASIC-Programm. Der Bereich 11FFh bis 3FFFh enthält FFh und ist damit frei. Damit lassen sich weitere Kopien des EPROMs herstellen, um z.B. mehrere Programme bereitzuhalten. Das EPROM enthält zusätzlich auch das normale SIOS-Betriebssystem. Um es zu nutzen, braucht nur das Standard-GAL des SIOS eingesetzt zu werden.

Das ES535 und sein Betriebssystem werden in einem Buch aus dem Franzis-Verlag (Kainka, MSR mit Mikrocontrollern) ausführlich erläutert. Die entscheidende Änderung in der Reset-Routine wird für interessierte Programmierer im nachfolgenden Listing dargestellt.

INIT    setb BD                 ;ADCON.7, Baudratengenerator

         orl PCON,#80H           ;SMOD=1

         mov SCON,#50H           ;InitRS232

         setb TI                 ;SCON.1, sendebereit     



 EPROMstart      mov DPTR,#51FFh

         clr A

         movc A,@A+DPTR

         cjne A,#55H,RAMstart    ;Startmarke?

         mov DPTR,#5200H

 COPYLOOP        clr A

         movc A,@A+DPTR          ;aus dem EPROM lesen

         push ACC

         mov A,DPH

         subb A,#50H             ;von 1200h nach 200h

         mov DPH,A

         pop ACC

         movx @DPTR,A            ;ins RAM schreiben

         mov A,DPH

         cjne A,#30h, WEITERCOPY ;genau 11,5 K kopieren!

         ljmp RUNPROG

 WEITERCOPY      mov A,DPH

         add A,#50H

         mov DPH,A

         inc DPTR

         sjmp COPYLOOP

 RUNPROG mov A,#02H

         mov 13H,A               ;Anfangsadresse High

         mov A,#00H

         mov 14H,A               ;Anfangsadresse Low

         setb 45                 ;Erweiterung aktiv

         mov A,#42H

         lcall 30H               ;RUN-Modus

 RAMstart        mov A,#7        ;CR ausgeben

         lcall 30H

         mov R3,#22H             ;Startadrese

         mov R1,#00H             ;Einschaltmeldung

         setb 52mov A,#6         ;Text ausgeben

         lcall 30H     



         clr A

         LJMP 30H                ;Zum Kommandomodus   


Zurück zum CompaS-Archiv
Zurück zur Startseite AK-Modul-Bus