Привожу схему реализации ведомого USB интерфейса для любой системы на базе z80. Что это даёт:
возможность разработки и отладки bios без перепрошивки ППЗУ и использования эмуляторов. Прямой доступ к памяти на лету. Возможность вывода данных в терминал
PC из программного кода z80.
В схеме есть несколько некрасивых решений, обусловленных экономией на корпусах в моём проекте. Так что за ряд монтажных ИЛИ на диодах и пару емкостей прошу ногами не пинать - знаю )
Программная часть со стороны PC или Mac максимально проста: Используется стандартный VCP-драйвер виртуального порта. (из под linux будет /dev/ttyUSBn), который предварительно необходимо проинициализировать с параметрами 8N1, аппаратное управление потоком.
Далее, перед началом операций чтения или записи данных в память системы на z80, посылаем в данный порт четыре байта 0xFE для синхронизации (либо необходимо подать !RESET).
Затем следует 5-ти байтовый цикл чтения или записи данных в произвольную область памяти:
1-ый байт 0xFF - начало потока данных (разрешает последующий приём)
2-ой байт lADDR - младший байт адреса памяти
3-ий байт hADDR - старший байт адреса памяти
4-ий байт 0xFF/0x0F - разрешение / запрет записи в память
5-ый байт 0xNN - данные для записи (если bit7 предыдущего байта = 0, то данный байт игнорируется и производится только чтение содержимого из указанного адреса)
В ответ на каждый посланный байт данных в консоль будет приходить содержимое данного адреса RAM до его записи.
Разумеется в адресном пространстве ППЗУ в этом случае должна быть подключена SRAM
P.S. Можно конечно было всё реализовать на микроконтроллере, но само его наличие в схеме практически лишает смысла в прикручивании всего этого к системе на z80
