# EPRSim XOP for Igor Pro — what survives (recovered 2026-09-06)

Source: the two BinHex files linked from https://www.hoodedhawk.com/xop_page.html
(`/Users/Shared/Data/dreamhost_mirror/hoodedhawk.com/xop/EPRSim_XOP_{68K,PPC}.sea.hqx`,
dated 28 Oct 2004 on the server; the contents are dated 12–19 April 1996).
Decoded with `unar` (BinHex → StuffIt self-extracting archive), the Igor packed
experiment parsed record by record, the plug-in resource forks read with
`rsrcfork`. Nothing here was edited; text is as written in 1996 (Mac Roman,
line ends converted).

## What each archive held

| File | What it is | Source? |
|---|---|---|
| `EPRSim XOP PPC` (52 KB data + 70 KB resources) | the compiled plug-in, PowerPC PEF code, version **1.1** ("EPRSim by John Boswell, using QPOW by Nilges", for Igor 2.00 or later) | no C source. Resources: `vers`, error strings, the two Igor function-help documents, a 44 KB `snd` of *The Good, the Bad, and the Ugly*, the beach-ball cursor |
| `EPRSim XOP 68K` (0 data + 249 KB resources) | the same plug-in as one 179 KB 68K `CODE` resource | no source |
| `EPRSim XOP Demo` (64 KB, identical in both archives) | an **Igor packed experiment**, 13 records | YES — everything below came from it |

## Recovered files

| File | From | What |
|---|---|---|
| `procedure.txt` | the experiment's procedure window | **your Igor macro source**: the "Simulation" menu, `InitParams_1/_2`, `Simulation`, `ParamsWaveToGlobals`, and the two graph window macros |
| `recreation.txt` | the experiment's recreation record | the window layout: two graphs (`Powder_Example`, `Isotropic_Example`), two tables, two notebooks |
| `notebooks.txt` | the two packed notebooks | **"EPRSim Demo Help"** (your full user manual, April 19 1996, all 70 `params` slots documented, the QPOW description and the three references to cite) and **"More Help"** (the walkthrough you wrote after users asked about the macros) |
| `function_help.txt` | the plug-in's `WMT0` resources | the Igor "Function Help" text for `Simulate()` and `SimulateIso()` — same content as the notebook's second half, plus the Oehler & Janzen 1982 reference for the isotropic code |
| `wave_phm382.txt` | wave `phm382` | **experimental data**: 2000 points, X from 2440 G in 0.5 G steps (2440–3439.5 G), 9.105 GHz — "PHM (Type II Cu protein)" per the graph legend, i.e. peptidylglycine α-hydroxylating monooxygenase, sample 382 |
| `wave_sim1.txt` | wave `sim1` | the QPOW simulation of it: 500 points, 2440 G start, 2.004 G/pt |
| `wave_params.txt`, `wave_params382.txt` | the two 70-slot parameter waves (identical values) | the Cu(II) parameters used: ν 9.105 GHz, g = 2.036 / 2.036 / 2.245, A = 40 / 40 / 525 MHz, linewidths 130 / 130 / 160 MHz, I = 3/2, two isotopes (63Cu 69 %, gr 1.071 → 65Cu), quadrupole 5 / −1 MHz, first derivative, Gaussian, centre 2940 G, sweep 1000 G, 2 G/pt, NTH 10, NPH 1, strain terms 2/2/2 and 0/0/0.75, 0/0/2. Sound on |
| `wave_paramsIso.txt` | the 13-slot isotropic parameter wave | DMPO-S (thiyl) spin adduct: 0.1 G/pt, 2 nuclei, linewidth 1, 30 % Lorentzian; 1 N (I = 1) a = 14.1 G; 1 H (I = 1/2) a = 16.3 G |
| `wave_IsoWave.txt` | wave `IsoWave` | the `SimulateIso()` output, 1000 points (the six-line DMPO-S pattern) |
| `variables_1.bin` | the variables record | the globals (`freq`, `gx…`, `linewidth_*`, `SimulationWave`, `ParamsWave`) — binary, values also visible in `procedure.txt` defaults |
| `packedfile_9.bin`, `packedfile_10.bin` | the raw notebooks | Igor formatted-notebook files (`WMT0`), openable by any Igor Pro |
| `eprsim_demo_plot.png` | made today | the two spectra plotted from the waves above; the fit in the upper panel is what the demo graph showed |

## What is NOT here

- The C source of the XOP (your Igor wrapper around QPOW) and the QPOW Fortran/C it wrapped. Only compiled code survived.
- Any other experiment or data set. The demo carried one Cu(II) spectrum and one isotropic example.

## What could be done with it

- The waves are plain text and load anywhere (Igor, Python, Excel).
- Modern Igor Pro (9/10) opens the packed experiment directly — the macros, tables, notebooks and graphs would come back, but `Simulate()` would be missing (the XOP is 68K/PPC Classic Mac OS only), so the graphs show the stored waves, not a live simulation.
- QPOW itself is still distributed by the Illinois EPR Research Center (Nilges/Belford), and EasySpin does the same powder simulation today. The params-slot documentation in `notebooks.txt` maps one to one onto QPOW's input file, so the parameters could be re-run there.
