Используйте эту команду:
dd if=$INPUT-FILE of=$OUTPUT-FILE bs=$BLOCK-SIZE count=$NUM-BLOCKS
Для создания большого (пустого) файла установите $INPUT-FILE=/dev/zero
.
Общий размер файла будет $BLOCK-SIZE * $NUM-BLOCKS
.
Новый созданный файл будет $OUTPUT-FILE
.
Perhaps start by looking at these:
A good tutorial can be found here: Independent Z80 Assembly Guide
The Undocumented Z80 Documented v0.91 (pdf)
Это немного побочный ход, но, поскольку вы говорите, что у вас нет опыта программирования этого типа, вы можете начать с создания эмулятора для универсальной виртуальной машины из 2006 ICFP программирования. конкурс . Это задача, на которую опытный программист уходит 90 минут, но многие команды без опыта смогли выполнить ее за несколько дней. Когда вы закончите работу с эмулятором, откроется множество забавных вещей, и это может стать хорошей разминкой перед тем, как вы взяться за Z80.
Попробуйте взглянуть на эмуляторы Sega Master System и Game Gear (я почти уверен, что некоторые из них имеют открытый исходный код). Эти консоли имеют Z80 в качестве процессора и ZX Spectrum тоже использовал его, http://www.worldofspectrum.org/emulators.html .
Я бы порекомендовал вам начать с написания эмулятора для более простого, но связанного с ним процессора, 8080 . Z80 на самом деле довольно сложен (многобайтовые инструкции, больше режимов адресации, индексные регистры и т. Д.), Тогда как инструкции 8080 очень легко декодировать (вы можете просто использовать таблицу поиска с 256 записями в качестве решения первого порядка) .
Весь код, который вы пишете для управления программой (отображение, ввод данных, дампы памяти и т. Д.), Должен быть повторно использован, если вы затем решите попробовать Z80, и действительно вам следует разработать пользовательский интерфейс таким образом, чтобы имитироваться независимо от процессора.
Митч совершенно прав. Начните с понимания процессора. Затем немного поиграйте, написав код для реализации конкретных инструкций. Используйте для этого C ++, BTW, а не C, иначе концепции процессора не будут отображаться в классы в вашем коде.
В процессе реализации инструкций вы обнаружите, что вам нужно определить такие вещи, как флаги и указатель инструкции. В конечном итоге это должно привести вас к тому, где вам нужно реализовать модель памяти и даже модель ввода-вывода.
В конечном итоге вам придется выяснить, как загрузить код и данные в память, и, возможно, как выгрузить их обратно на диск.
Только после этого вам нужно будет перейти к эмуляции выполнения кода. , загружается в память по заданному указателю инструкции.
Похоже, вам нужен эмулятор не только для процессора, но и для целой машины. У вас также будет задача эмулировать остальное оборудование, и поиск документации для этого вполне может оказаться более сложной задачей, ожидающей вас.
В зависимости от вашей цели вы можете захотеть начать с уже существующего эмулятора для Z80. Быстрый поиск дает несколько из них, но не эмулятор для TI-84. simh , фреймворк для эмуляции старых компьютеров уже имеет эмуляцию процессора Z80, добавление эмуляции остального оборудования должно быть проще, чем начинать с нуля. Даже если вы не пойдете по этой дороге, есть некоторые дизайнерские документы, которые могут вам помочь.