Zahlavi

Zvolte jazyk

První vlastní program pro EPS-103

Dalším logickým krokem v pokusech s úpravami EPS-103 je napsat si nějaký krátký program, který by šel v jednotce spustit. Samozřejmě nezačneme přepisováním původního firmware. V tuto chvíli si jen na něčem jednoduchém vyzkoušíme celý proces vývoje programu. V učebnicích programování se obvykle začíná programem „Hello world“. Budeme se držet tradice a napíšeme program, který po zapnutí EPS-103 napíše na displeji tento nápis.

Volba programovacího jazyka je v celku jednoduchá. Vzhledem k velikosti EPROM i RAM to bude assembler. Zapomeňte na C nebo ještě vyšší programovací jazyk. I se zapnutými optimalizacemi bude jejich kód vždy delší. Dalším důvodem pro použití assembleru je fakt, že původní firmware má stále v RAM svoje data, která nesmíme poškodit. Proto je nutné mít psaný program plně pod kontrolou.

To znamená, že musíme znát assembler 8085. Tím nechci říct, že je potřeba mít všechny instrukce naučené nazpaměť. Ale určitě se bude hodit nějaká dokumentace. Na internetu se dá ještě ledacos najít. Bohužel procesor 8085 je z dnešního pohledu velmi zastaralý a informací o něm se už zase tak moc nedochovalo. Proto jsem připravil několik základních dokumentů, které vám pomohou začít. Najdete je v celkovém souboru SDK8085.zip. Dalším pomocníkem může být simulátor. K mému překvapení dnes ještě najdeme simulátor 8085 online. Při krokování programu uvidíte, jak jednotlivé instrukce ovlivňují obsah registrů.

K psaní programu bude stačit libovolný textový editor. Jen je důležité, aby si editor do psaného textu nedoplňoval žádné svoje značky. Já rád používám program PSPad. Použití integrovaného vývojového prostředí necháme na později.

A je čas pustit se do psaní zdrojového textu. Samozřejmě jsem se nechal inspirovat původním firmware. Nejdůležitější je nastavení zásobníku na správnou adresu v RAM. To zajistí, že instrukce používající zásobník nebudou přepisovat jinou část paměti. Proto tím začneme. Dále předpokládám, že někteří z vás budou provádět tyto experimenty s připojenou motorovou jednotkou EPR-203. Proto je potřeba v dalším kroku inicializovat obvod 8255A a výstup PC nastavit na 0. To znamená vypnout motory. Pak už můžeme inicializovat displej a poslat na něj nápis. Běh programu ukončíme nekonečnou smyčkou. Popřípadě instrukcí HLT. V assembleru by takový program mohl vypadat takto:

; 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

Text uložíme do souboru *.asm v libovolném našem pracovním adresáři. Dalším krokem bude přeložení zdrojového textu do strojového kódu. To se většinou provádí přes objektový soubor *.obj. Cílový strojový kód může být i ve formátu *.bin. Program, který tuto práci vykoná za nás, se jmenuje compiler / linker. Já jsem použil program tasm.exe. V souboru tasm32.zip najdete dvě tabulky instrukčních sad a dokumentaci. Program přidáme do pracovního adresáře. Lze jej spouštět v příkazovém řádku windows včetně Win10. Vlastní překlad se provede příkazem:

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

Uvedené parametry znamenají:

  • -t85: použije tabulku instrukcí procesoru 8085 ze souboru TASM85.TAB
  • -b: vytvoří binární soubor čistého strojového kódu
  • Test01.asm: název souboru se zdrojovým textem
  • Test01.bin: název souboru s výstupním strojovým kódem

Pro spuštění překladu je potřeba otevřít okno příkazového řádku a přepnout se do našeho pracovního adresáře s kompilátorem a zdrojovým textem. Abych si práci zjednodušil, napsal jsem si jednoduchý soubor pro spouštění Run.cmd. Díky němu nemusím okno příkazového řádku spouštět ručně. Soubor je v pracovním adresáři a na prvním řádku je napsaný příkaz pro překlad. Na druhý řádek jsem napsal příkaz cmd /k který způsobí, že se okno příkazového řádku samo nezavře. Takže po skončení překladu si mohu přečíst případná chybová hlášení. V pracovním adresáři mám tedy tyto soubory:

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

Výsledný binární soubor nahrajeme programátorem do vymazané paměti EPROM. A to je vše. Když budete chtít provádět jakékoliv změny v programové části firmware, máte už základní potřebné nástroje k dispozici. Všechny zde popisované soubory si můžete stáhnout v jednom balíčku SDK8085.zip.

Žádné komentáře

Zanechat komentář

Odpověď na Some User