Оглавление:

Z80-mbc2 Z80 Code Flash User LED: 3 шага
Z80-mbc2 Z80 Code Flash User LED: 3 шага

Видео: Z80-mbc2 Z80 Code Flash User LED: 3 шага

Видео: Z80-mbc2 Z80 Code Flash User LED: 3 шага
Видео: Z80-MBC2 Flashing LED Clock 2024, Ноябрь
Anonim
Z80-mbc2 Индикатор пользователя вспышки кода Z80
Z80-mbc2 Индикатор пользователя вспышки кода Z80

Это пример пользовательской светодиодной программы, написанной на ассемблере Z80 для компьютера z80-mbc2.

Я сделал это упражнение по тестированию и доработке, это моя первая программа Z80 за более чем 35 лет.

Наслаждаться

Запасы

Компьютер z80-mbc2

Копия Z80ASM от SLR Systems Rel. 1.32, загружаемый из многих архивов cp / m

В качестве редактора я использовал ZDE16, так как он уже был в загрузочном образе CP / M для z80-mbc2.

Шаг 1. Установите Z80asm на свой Z80-mbc2

Установите Z80asm на свой Z80-mbc2
Установите Z80asm на свой Z80-mbc2

Я предполагаю, что вы знакомы с инструментами, которые у вас есть для Z80-MBC2, а именно с любой версией cpmtools, которую вы используете. Вот шаги, если вы используете версии командной строки:

  1. Загрузите файлы z80asm.com и z80asm.doc (необязательно) в каталог где-нибудь на вашем компьютере.
  2. Вставьте SD-карту в тот же компьютер, я предполагаю, что ниже она отображается как диск E: ниже.
  3. Я поместил ассемблер на свой CP / M диск A, для cp / m 2.2 это будет образ диска DS0N00. DSK
  4. Команда: cpmcp -f z80mbc2-d0 e: DS0N00. DSK z80asm.com 0: скопирует файл z80asm.com в образ
  5. Команда cpmcp -f z80mbc2-d0 e: DS0N00. DSK z80asm.doc 0: скопирует документацию на диск (необязательно)

При загрузке cp / m 2.2 на вашем z80-mbc теперь у вас должны быть z80asm.com и z80asm.doc (необязательно) на диске A

Шаг 2: Скопируйте исходный код себе Z80-mbc2

Подключитесь к z80-mbc с помощью терминальной программы

Я предлагаю вам использовать незаполненный диск для сохранения исходного кода, например f: чтобы выбрать этот тип диска:

F:

через несколько секунд вы увидите приглашение F:.

теперь используйте программу zde16 на диске A для редактирования пустого файла:

а: zde16 myled.z80

Это создаст файл с именем myled.z80 на диске F:, обратите внимание: для работы z80asm в имени требуется.z80.

Теперь скопируйте и вставьте приведенный ниже код, в зависимости от скорости вашего терминала и т. Д. Вам, возможно, придется копировать и вставлять небольшие участки. Или введите его! вернуть ощущение 1980-х.

;

; Протестируйте пользовательский светодиод и пользовательский ключ; BDOS equ 05h; cp / m точка входа BDOS USRLED equ 0; код операции для управления пользовательским светодиодом USRKEY equ 80h; код операции для управления пользовательским переключателем DPORT equ 0; порт данных ввода / вывода CPORT equ 1; вывод командного порта; org 0100h; ld (estack), sp; сохранить существующую информацию для возврата в cp / m ld sp, stack; ld hl, msg; hello message call _puts lp: ld a, 1; turn on = 1 call led call delay; delay and wait for key (s) jr nz, finish; ненулевое значение означает, что клавиша / переключатель нажата xor a; a = 0 вызов светодиод задержки вызова; задержка или ожидание клавиши / переключателя jr z, lp; если ноль, нет клавиши / переключателя, перейти снова; finish: xor a; была нажата клавиша или переключатель, так что сделано call led ld hl, bye; say bye call _puts; display msg HL = ld sp, (estack); original stack ret; return to cp / m; led: push af; сохранить значение светодиода 0 или 1 ld a, USRLED out (CPORT), a; optcode отправлен pop af out (DPORT), a; данные отправлены ret;; Цикл задержки, который проверяет нажатие клавиши на терминале или задержку пользовательской клавиши: ld bc, 00e00h; примерно 1/2 с 8 МГц CPU, чистое предположение loop2: dec bc; подсчитывать нажатие на цикл bc; сохранять регистры при вызове BDOS push de ld c, 6; необработанный ввод-вывод BDOS проверяет, нажата ли клавиша ld e, 0ffh call BDOS pop de; получить наши значения обратно из стека pop bc или a; проверить, нажата ли клавиша на терминале ret nz; yes return (также сохраняет установленный флаг nz) ld a, USRKEY; Теперь проверьте выход ключа пользователя (CPORT), a; порт команды в a, (DPORT); ключ чтения и a, 1; интересует только бит 0 ret nz; возврат, если пользовательская клавиша нажата ld a, b; или bc = 0 или c jr nz, loop2; счет не завершен, перейти снова x или a; установить флаг z в 0 ret; вернуть ни одной нажатой клавиши, конец задержки; _puts: push bc; сохранить наши регистры, готовые для вызовов bdos push de nxt: ld a, (hl); получить char или a; проверить, 0, конец сообщения jr z, готово; да, готово ld e, a; настроить вызов BDOS для печати char ld c, 2 push hl; сохранить текстовый указатель call BDOS; распечатать его pop hl inc hl; next char jr nxt; продолжить работу done: pop de; завершено восстановление regs pop bc ret; и return; msg db 'User LED test, любая клавиша для выхода' db 0ah, 0dh, 0 bye db 'Exit' db 0ah, 0dh, 0 estack dw 0 ds 256 - 2 stack: dw 0

Сохраните файл с помощью ESC x. См. Руководство по использованию ZDE16 для получения дополнительной информации, это немного похоже на wordstar для большинства операций редактирования, за исключением того, что параметры Ctrl-K отличаются.

Шаг 3: скомпилируйте и запустите программу

Когда у вас есть исходный код на машине.

Тип:

F>

F> a: z80asm myled / a Z80ASM Авторские права (C) 1983-86, SLR Systems Rel. 1.32 MYLED / A Конец файла Pass 1 0 Обнаружены ошибки. 406 абсолютных байтов. Обнаружено 16 символов.

Это будет искать файл myled.z80 и создавать двоичный файл (.com), это то, что означает параметр / a.

Дополнительную информацию см. В файле z80asm.doc.

Чтобы запустить программу, введите:

F> мылед

Пользовательский тест светодиода, любая клавиша для выхода Exit F>

Для выхода нажмите либо пользовательскую кнопку, либо клавишу на терминале.

Выполнено.

Рекомендуемые: