2个版本

使用旧的Rust 2015

0.1.1 2016年7月31日
0.1.0 2016年7月29日

#z80中排名27

MIT许可证

130KB
3.5K SLoC

Crates.io Build Status

rz80 (工作进展中)

用Rust编写的Z80芯片家族仿真库。

文档

用法

# Cargo.toml
[dependencies]
rz80 = "0.1.0"

示例

运行ZEXDOC和ZEXALL兼容性测试

> cargo test --release -- --nocapture --ignored

运行Z1013家用电脑仿真器

> cargo run --release --example z1013

在Z1013仿真器中,使用以下命令启动BASIC解释器

# J 300[Enter]

BASIC解释器将启动并请求内存大小,只需按Enter键。

输入并运行一个简单的Hello World程序

>AUTO[Enter]
10 FOR I=0 TO 10[Enter]
20 PRINT "HELLO WORLD!"[Enter]
30 NEXT[Enter]
40 [Escape]
OK
>LIST[Enter]
...
>RUN[Enter]
...
>BYE[Enter]

lib.rs:

rz80是一个用Rust编写的Z80芯片家族仿真库,可以作为编写完整的基于Z80的计算机仿真器的起点。

概述

rz80库提供了Z80 CPUPIO(并行输入/输出)、CTC(计数器/定时器通道)的芯片仿真器,以及一个定义特定仿真系统中芯片如何连接在一起的Bus trait。

编写家用电脑仿真器通常涉及以下步骤

  • 导入所需的芯片
  • 使用include_bytes!宏导入ROM转储
  • 定义一个包含仿真器所需状态的State struct,除了芯片状态外
  • 定义一个包含所有芯片和State struct的System struct,并用RefCells包装
  • 编写一个System::poweron()函数,该函数初始化嵌入式芯片和状态对象,初始化内存映射,并将CPU PC寄存器设置为ROM转储的起始地址
  • 编写一个video-decoder函数,该函数每帧生成一个线性RGBA8帧缓冲区
  • 在System struct上实现Bus trait,这通常涉及以下内容
    • 键盘仿真
    • 内存银行切换
    • 在各个硬件组件之间转发中断请求
    • 声音生成
  • 实现main loop,该循环创建窗口,转发键盘输入,并推进芯片仿真器

非常简单的8位家用电脑系统(类似于ZX81)不需要任何额外的代码,更复杂的家用电脑将需要rz80库之外的自定义芯片仿真。

查看附带的两个示例仿真器

> cargo run --release --example z1013
> cargo run --release --example kc87

无运行时依赖项