inpax
BMW INPA Interpreter & Toolchain
🔗 GitHub
About
inpax is a cross-platform interpreter for BMW INPA (INterface for Programming Applications). INPA is BMW's diagnostic tool for running test procedures on vehicle ECUs.
Features
- 📄 IPO Parser — Parse compiled INPA bytecode
- 🔧 Disassembler — Decompile IPO to readable assembly
- 🖥️ TUI Runtime — Terminal UI matching original INPA
- ⌨️ IPS Compiler — Compile source scripts (WIP)
- 🔌 Provider System — Pluggable UI and EDIABAS backends
Installation
bash
npm install -g inpaxUsage
Disassemble
bash
# Disassemble IPO file
inpax dis script.ipo
# Output to file
inpax dis script.ipo -o script.asmRun
bash
# Run with TUI
inpax run script.ipo
# Headless mode
inpax run script.ipo --headless
# Debug mode
inpax run script.ipo --debugInfo
bash
# Show IPO file information
inpax info script.ipoArchitecture
┌─────────────────────────────────────────────┐
│ CLI │
├─────────────────────────────────────────────┤
│ TUI Provider │ CLI Provider │
├─────────────────────────────────────────────┤
│ Interpreter │
├─────────────────────────────────────────────┤
│ IPO Parser │ EDIABAS Provider │
└─────────────────────────────────────────────┘Packages
| Package | Description |
|---|---|
@inpax/core | Constants, opcodes, types |
@inpax/disassembler | IPO → assembly |
@inpax/interpreter | VM execution |
@inpax/tui | Terminal UI (ink) |
@inpax/tui-provider | UI state management |
@inpax/cli-provider | Headless UI |
@inpax/ini-parser | INPA config parser |
@inpax/cli | Command-line interface |
INPA Script Example
ips
// INPA script example
PROC inpainit()
{
settitle("My Script");
setscreen(my_screen, TRUE);
setmenu(main_menu);
}
PROC main_menu()
{
setitem(1, "Read Ident", TRUE);
setitem(10, "Exit", TRUE);
}Status
| Component | Status |
|---|---|
| IPO Parser | ✅ Complete |
| Disassembler | ✅ Complete |
| Interpreter | 🔄 In progress |
| TUI | ✅ Complete |
| Compiler | 🔬 Research |
