# nedis

> **Tool `tools/dos/nedis.py`** (program, 16-bit DOS). Disassemble 16-bit code with its relocations applied and its names shown.

Run it with `./gameframe run nedis ARGS` or `python3 tools/dos/nedis.py`. [Source on GitHub](https://github.com/tanepiper/game-frame/blob/main/tools/dos/nedis.py).

## Its own help

This is the help text in the tool itself, as `./gameframe tool nedis` prints it.

```text
Disassemble 16-bit code with its relocations applied and its names shown.

Usage: nedis.py BINARY SEG:OFF|LABEL [LENGTH] [--labels FILE]

Ghidra's listing aside, a plain disassembler shows a 16-bit program's calls to other segments
and to imports as `lcall 0:ffff`: the file holds placeholders that the loader fills in. This
tool loads the program the way tools/emu/dos_emu/ does (relocations applied, Ghidra's
selectors, imports as named stubs) and disassembles the result with capstone. Call and jump
targets, and data offsets in DS, are replaced by names from a labels file (labels/names.tsv
by default) where one matches: `lcall Reset_1040_0a12`, `mov al, byte ptr [PlayDemoNum]`.

LENGTH is in bytes (default 0x100). Addresses are Ghidra's (1000:7f40). Needs capstone and
unicorn (GameFrame's .venv). It does not follow jumps or find function ends.
```

## Named by

Skills: [re-ghidra](/skills/re-ghidra).
