Skip to content

Releases: charlieh0tel/mc683xx

mc683xx 0.2.0

Choose a tag to compare

@charlieh0tel charlieh0tel released this 25 Oct 07:47

Peripherals on no chip select, and DSACK sized cycle by cycle.

Breaking changes

  • mc683xx_board::peripheral::PeripheralAccess::select is now Option<ChipSelect>: None for a peripheral on no select. PeripheralAccess::new keeps its signature; PeripheralAccess::on_no_select builds a no-select access.
  • mc683xx_board::chip::ChipBuilder gains a required method, bus_peripheral, for a chip implementation outside this workspace.
  • Python: PeripheralAccess.select may be None.

New

  • Bus peripherals: Builder::bus_peripheral(peripheral, decodes, dsack) puts a peripheral on no chip select. It takes the cycles its own decode does (mc683xx_modules::peripheral::BusDecode: address windows, interrupt acknowledges) and drives DSACK itself, checked against PEPAR (DsackFault::BusUnassigned). It shares a cycle with any select that matches, the first DSACK ending it, and takes precedence over a fixed memory. The core serves no page a window touches.
  • Board files: an attachment { base = ..., size = ... } or { iack = <level> } is on no select; such a peripheral states dsack. Peripherals with the same decode share it by role and lane, as on a select. The board-file format stays version 1.
  • DSACK per cycle: MappedPeripheral::dsack_port and the board Peripheral::dsack_port let a peripheral give each cycle's port size (16 bits on DSACK1, 8 on DSACK0 alone).
  • Python: Builder.bus_peripheral(object, windows=..., acknowledges=..., dsack=...), a peripheral's optional dsack_port, DsackFault.BusUnassigned.
  • mc683xx_modules::peripheral::iack_address.

Install

cargo add mc683xx-board@=0.2.0
pip install mc683xx==0.2.0

mc683xx 0.1.0

Choose a tag to compare

@charlieh0tel charlieh0tel released this 25 Oct 07:05

The first release of mc683xx, an emulator of the Motorola MC68331.

What is in it

  • mc683xx-cpu32: the CPU32 core, checked against the manuals, SingleStepTests' 68000 subset, and differential runs against Musashi and Unicorn.
  • mc683xx-modules and mc683xx-mc68331: the SIM (clock, chip selects, ports, watchdog, periodic interrupt, bus monitor), the QSM (QSPI and SCI) and the GPT, composed into the chip.
  • mc683xx-board: board files ([chip], [[memory]], [[peripheral]], [[net]]), board time, nets and the run loop, with complete snapshots.
  • mc683xx-peripherals: stock chips as board-file peripherals: 74x164, 74x244, 74x373, 74x374, AD569, ADC0838, AT28C64B, MC144110, MC68681 and SCC68692.
  • mc683xx-gdb: a GDB remote stub over the bare CPU, the chip and a board.
  • mc683xx-run: the runner, cargo install mc683xx-run.
  • mc683xx on PyPI: Python bindings, abi3 wheels for Python 3.10 and later on Linux, macOS and Windows.

Install

cargo add mc683xx-board@=0.1.0
pip install mc683xx==0.1.0

The crates depend on each other at exactly one version; pin them together.

See the README and docs/ for the host guide, board files, peripherals, tracing, Python and gdb.