Zahlavi

Выберите язык

Первая пользовательская программа для EPS-103

Следующим логическим шагом в попытке модифицировать EPS-103 является написание короткой программы, которую можно было бы запустить в устройстве. Конечно, мы не начнем с перезаписи оригинальной прошивки. На этом этапе мы просто опробуем весь процесс разработки программы на чем-нибудь простом. Учебники по программированию обычно начинаются с «Hello world». Придерживаемся традиции и напишем программу, которая будет выводить эту надпись на дисплей при включении EPS-103.

Выбрать язык программирования, как правило, просто. Из-за размера EPROM и RAM это будет ассемблер. Забудьте о C или любом более высоком языке программирования. Даже с включенными оптимизациями их код всегда будет длиннее. Другой причиной использования ассемблера является тот факт, что исходная прошивка все еще имеет свои данные в оперативной памяти, которые мы не должны повредить. Поэтому необходимо иметь полный контроль над написанной программой.

Это означает, что нам нужно знать ассемблер 8085. Это не означает, что нам нужно запомнить все инструкции. Но некоторая документация, безусловно, была бы полезна. Вы можете найти намного больше в Интернете. К сожалению, процессор 8085 сильно устарел с сегодняшней точки зрения, и информации о нем сохранилось немного. Вот почему я подготовил несколько основных документов, которые помогут вам начать работу. Вы можете найти их в общем файле SDK8085.zip. К моему удивлению, мы все еще можем найти онлайн-симулятор 8085 сегодня. По мере прохождения программы вы увидите, как отдельные инструкции влияют на содержимое регистров.

Для написания программы будет достаточно любого текстового редактора. Важно только, чтобы редактор не добавлял к написанному тексту никаких собственных тегов. Мне нравится использовать PSPad. Использование интегрированной среды разработки оставим на потом.

И пора приступать к написанию исходного текста. Конечно меня вдохновила оригинальная прошивка. Самое главное — установить стек на правильный адрес в оперативной памяти. Это гарантирует, что инструкции, использующие стек, не перезапишут другую часть памяти. Вот почему мы начнем с этого. Кроме того, я предполагаю, что некоторые из вас будут проводить эти эксперименты с прикрепленным моторным блоком ЭПР-203. Поэтому на следующем шаге необходимо инициализировать схему 8255А и установить на выходе ПК значение 0. Это означает отключение двигателей. Затем мы можем инициализировать дисплей и отправить на него надпись. Мы завершаем выполнение программы бесконечным циклом. Или инструкции HLT. На ассемблере такая программа может выглядеть так:

; 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

Сохраняем текст в файле *.asm в любом из наших рабочих каталогов. Следующим шагом будет перевод исходного текста в машинный код. Обычно это делается через объектный файл *.obj. Целевой машинный код также может быть в формате *.bin. Программа, которая сделает эту работу за нас, называется компилятором/компоновщиком. Я использовал программу tasm.exe. В файле tasm32.zip вы найдете две таблицы набора инструкций и документацию. Добавьте программу в рабочий каталог. Его можно запустить в командной строке Windows, включая Win10. Фактический перевод выполняется с помощью команды:

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

Указанные параметры означают:

  • -t85: использует таблицу инструкций процессора 8085 из файла TASM85.TAB
  • -b: создает чистый двоичный код машинного кода
  • Test01.asm: имя исходного текстового файла
  • Test01.bin: имя выходного файла машинного кода

Чтобы начать перевод, нужно открыть окно командной строки и перейти в нашу рабочую директорию с компилятором и исходным текстом. Чтобы упростить себе работу, я написал простой файл для запуска Run.cmd. Благодаря этому мне не нужно запускать окно командной строки вручную. Файл находится в рабочей директории и в первой строке написана команда для перевода. Во второй строке я набрал cmd /k , из-за чего окно командной строки не закрывается. Поэтому после завершения перевода я могу прочитать любые сообщения об ошибках. Итак, у меня есть эти файлы в моем рабочем каталоге:

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

Полученный двоичный файл загружается программатором в стертую память EPROM. И это все. Когда вы захотите внести какие-либо изменения в программную часть прошивки, в вашем распоряжении уже есть основные необходимые инструменты. Вы можете скачать все описанные здесь файлы одним пакетом SDK8085.zip.

 

 

 

 

No comments

Leave your comment

In reply to Some User