# Getting Started (Air-Gapped Deployment)

## Prerequisites

- Radare2 5.8.0+ (built from source on the target machine)
- GCC (to compile the plugin)
- Python 3 (optional, for test ROM generation)

## Setup

1. Copy the entire `adsp219x-re/` directory to the air-gapped machine.

2. Build and install the radare2 plugin:

        cd r2plugin
        make
        make install

3. Verify installation:

        r2 -a adsp219x -b 24 -q -c "pd 10" examples/isa_test.bin

   You should see decoded instructions (NOP, AX0 = 0x1234, etc.).

## Loading a ROM Dump

For a raw 24-bit packed binary (3 bytes per instruction, big-endian):

    r2 -a adsp219x -b 24 firmware.bin

For a padded 32-bit dump (4 bytes per instruction with leading 0x00),
strip the padding first or adjust the base offset manually.

## Useful r2 Commands

    pd 100          # Disassemble 100 instructions
    s 0x200         # Seek to PM address 0x200 (byte offset 0x600)
    /x 1c           # Search for JUMP opcodes (Type 10a prefix)
    axt @@ sym.*    # Cross-references (after analysis)

## Validation

Compare your disassembly against the reference examples in
`examples/`. The `isa_test.bin` was assembled with the open21xx
toolchain and contains verified opcodes for all major instruction
types.

## Reference Documentation

The `docs/` directory contains the original Analog Devices
instruction set reference chapters (PDF and text extracts):

- `9x_opcodes.*`   - Opcode definitions and mnemonics
- `9x_ALUops.*`    - ALU operations
- `9x_mltops.*`    - Multiplier/MAC operations
- `9x_shftops.*`   - Shifter operations
- `9x_flowops.*`   - Flow control (jumps, loops, returns)
- `9x_moveops.*`   - Data move operations
- `9x_multiops.*`  - Multifunction operations
