Zahlavi

Sprache auswählen

Erstes benutzerdefiniertes Programm für EPS-103

Der nächste logische Schritt beim Versuch, den EPS-103 zu modifizieren, besteht darin, ein kurzes Programm zu schreiben, das in der Einheit ausgeführt werden kann. Natürlich beginnen wir nicht damit, die Original-Firmware neu zu schreiben. An dieser Stelle probieren wir den gesamten Programmentwicklungsprozess einfach an etwas Einfachem aus. Programmierlehrbücher beginnen meist mit „Hallo Welt“. Wir bleiben der Tradition treu und schreiben ein Programm, das diese Inschrift beim Einschalten des EPS-103 auf das Display schreibt.

Die Wahl einer Programmiersprache ist im Allgemeinen einfach. Aufgrund der Größe von EPROM und RAM wird es Assembler sein. Vergessen Sie C oder eine höhere Programmiersprache. Selbst mit aktivierten Optimierungen wird ihr Code immer länger sein. Ein weiterer Grund für die Verwendung von Assembler ist die Tatsache, dass die Original-Firmware ihre Daten noch im RAM hat, die wir nicht beschädigen dürfen. Daher ist es notwendig, die volle Kontrolle über das geschriebene Programm zu haben.

Das bedeutet, dass wir den 8085-Assembler kennen müssen, aber nicht, dass wir alle Anweisungen auswendig gelernt haben müssen. Aber eine Dokumentation wäre sicherlich hilfreich. Im Internet findest du noch viel mehr. Leider ist der 8085-Prozessor aus heutiger Sicht sehr veraltet, und es sind nicht viele Informationen darüber erhalten geblieben. Aus diesem Grund habe ich einige grundlegende Dokumente vorbereitet, die Ihnen den Einstieg erleichtern sollen. Sie finden sie in der Gesamtdatei SDK8085.zip. Ein weiterer Helfer kann ein Simulator sein. Zu meiner Überraschung finden wir heute noch einen 8085-Simulator online. Während Sie durch das Programm gehen, werden Sie sehen, wie einzelne Befehle den Inhalt der Register beeinflussen.

Zum Schreiben des Programms reicht ein beliebiger Texteditor aus. Wichtig ist nur, dass der Redakteur dem geschriebenen Text keine eigenen Tags hinzufügt. Ich benutze gerne PSPad. Die Verwendung der integrierten Entwicklungsumgebung verschieben wir auf später.

Und es ist an der Zeit, mit dem Schreiben des Quelltextes zu beginnen. Natürlich habe ich mich von der Original-Firmware inspirieren lassen. Das Wichtigste ist, den Stack auf die richtige Adresse im RAM zu setzen. Dadurch wird sichergestellt, dass Anweisungen, die den Stack verwenden, keinen anderen Teil des Speichers überschreiben. Deshalb fangen wir damit an. Ich gehe weiter davon aus, dass einige von Ihnen diese Experimente mit der angeschlossenen Motoreinheit EPR-203 durchführen werden. Daher ist es im nächsten Schritt erforderlich, die 8255A-Schaltung zu initialisieren und den PC-Ausgang auf 0 zu setzen. Dies bedeutet, die Motoren auszuschalten. Dann können wir das Display initialisieren und ihm eine Inschrift schicken. Wir beenden die Programmausführung mit einer Endlosschleife. Oder HLT-Anweisungen. In Assembler könnte ein solches Programm so aussehen:

; Hello world
          jmp  Start
.ORG 0040h
.dseg
mystring .text "Hello world"
.cseg

Start:    lxi  sp, 4700h   ; Set Stack Address

          mvi  a, 82h      ; CW
          sta  5803h       ; 8255A Write Control Word
          xra  a
          sta  5802h       ; 0 -> PortC: stop motors


          mvi  a, 0Ch      ; LCD Command: Display on, cursor off
          call sub_1B70    ; Command -> LCD


          lxi  h, mystring ; Address of text
          mvi  b, 0Bh      ; Number of characters
Loc01:    mov  a, m
          call sub_1B77    ; Character -> LCD
          inx  h           ; Address of next characters
          dcr  b           ; Decrement counter
          jnz  Loc01

Stop:     jmp  Stop        ; Neverending loop
          hlt              ; For sure


; Write 1 byte command
sub_1B70: call sub_1B7E    ; Wait for LCD ready
          sta  4802h       ; Write command byte
          ret

; Write 1 byte data
sub_1B77: call sub_1B7E    ; Wait for LCD ready
          sta  4803h       ; Write data byte
          ret

; Wait for LCD ready
sub_1B7E: push psw
loc_1B7F: lda  4800h       ; Read LCD status
          ani  80h         ; Test bit 7: 0 = ready
          jnz  loc_1B7F    ; if not, repeat
          pop  psw
          ret

.END

Wir speichern den Text in einer *.asm-Datei in einem unserer Arbeitsverzeichnisse. Im nächsten Schritt wird der Quelltext in Maschinencode übersetzt. Dies geschieht in der Regel über die Objektdatei *.obj. Der Zielmaschinencode kann auch im *.bin-Format vorliegen. Das Programm, das diese Arbeit für uns erledigt, heißt Compiler / Linker. Ich habe das Programm tasm.exe verwendet. In der Datei tasm32.zip finden Sie zwei Befehlssatztabellen und Dokumentation. Fügen Sie das Programm dem Arbeitsverzeichnis hinzu. Es kann in der Windows-Befehlszeile einschließlich Win10 ausgeführt werden. Die eigentliche Übersetzung erfolgt mit dem Befehl:

TASM.EXE -t85 -b Test01.asm Test01.bin

Die angegebenen Parameter bedeuten:

  • -t85: verwendet die Anweisungstabelle des Prozessors 8085 aus der Datei TASM85.TAB
  • -b: erstellt eine saubere Maschinencode-Binärdatei
  • Test01.asm: der Name der Quelltextdatei
  • Test01.bin: der Name der ausgegebenen Maschinencodedatei

Um die Übersetzung zu starten, müssen Sie ein Kommandozeilenfenster öffnen und in unser Arbeitsverzeichnis mit Compiler und Quelltext wechseln. Um meine Arbeit zu vereinfachen, habe ich eine einfache Datei zum Ausführen von Run.cmd geschrieben. Dank dessen muss ich das Befehlszeilenfenster nicht manuell starten. Die Datei liegt im Arbeitsverzeichnis und der Befehl zur Übersetzung steht in der ersten Zeile. In der zweiten Zeile habe ich cmd /k eingegeben, wodurch sich das Eingabeaufforderungsfenster nicht selbst schließt. Nachdem die Übersetzung fertig ist, kann ich also eventuelle Fehlermeldungen lesen. Also habe ich diese Dateien in meinem Arbeitsverzeichnis:

  • Run.cmd
  • TASM.EXE
  • TASM85.TAB
  • Test01.asm

Die resultierende Binärdatei wird vom Programmierer in den gelöschten EPROM-Speicher geladen. Und das ist alles. Wenn Sie Änderungen im Programmteil der Firmware vornehmen möchten, stehen Ihnen bereits die grundlegenden notwendigen Werkzeuge zur Verfügung. Sie können alle hier beschriebenen Dateien in einem SDK8085.zip-Paket herunterladen.

 

 

 

 

Keine Kommentare

Kommentar hinterlassen

Als Antwort auf Some User