OmniTron Bio-FeedBack Biofeedback software for psychologists, which he wrote and sold. This is version 2.0, 1990.
- Original program · his
OMNI91.EXE, unmodified - About 1988–90 · “Ver 2.0 (c) 1990”
- Turbo Pascal 5
- 6,320 lines of his own Pascal in 8 files
- Sold to psychologists, in his account
- Simulated sensor signals · a simulated sensor board, and a fictional client
A clinician hooks a client up to sensors, picks how each one is shown (a scrolling graph or a dial), and runs a timed session while the client learns to change what the needles show. The program keeps a client file, replays sessions, and prints reports. Andrew remembers it as a galvanic-skin-response program. This version’s menus offer skin temperature, heart rate and EMG. Here it runs in DOSBox in your browser.
Can’t run it here? Watch a 36-second recording: a live session on the simulated board, his review and statistics of the demo session, then the recreation with heart rate
His session screen with a realistic heart rate
- A faithful recreation, 2026, from Andrew’s
BIOSESS.PAS - Simulated sensor signals: skin temperature and heart rate
The original above cannot show a real heart rate, because this version of his program never reads one. This screen is redrawn from his code instead: his layout for one temperature graph and one heart-rate dial, his dial and needle routines, his colours and words. A simulated client relaxes. Her hands warm from about 90.5 °F toward 93 °F, and her pulse settles from about 72 to 65 beats a minute, rising and falling a little with each breath.
From his code: the screen layout, the frames, the dial with its five colour bands, the needle, the scrolling graph, the labels and keys. Added in 2026: the signals, and the dial’s span of 40 to 120 beats a minute (his dial maps the board’s raw 0–4,096 reading across the half circle, with no scale printed). His program has no GSR channel in this version, so none is shown; its third sensor type is EMG (muscle tension).
What’s original: the program, byte for byte, from his July 1992 disk. A December 1990 build is on another disk too.
Simulated sensor signals: the sensors plugged into an AD1000 analog-to-digital board from Real Time Devices, which the program reads through I/O ports 512–521, using the board maker’s routines it includes. No board exists here, so the DOSBox in this page was rebuilt with a small simulated one (the change, 86 lines). It answers those reads with skin temperatures that start near 90.5 °F and warm toward 93 °F over about ten minutes, the way hands warm when someone relaxes. Each temperature is turned into the raw number the board would give, using his own calibration formula, and the unchanged program turns it back. Without the board, every channel read full scale, which his formula turns into 322.4 °F.
Heart rate and EMG: this version never reads them from the board. His code fills both with test waves (sin(nHR/16)*2000+2000), which is where readings like 3,800 came from, so the sessions here use skin temperature only. His review screen in this version also plots only the temperature channels.
The client file: it holds one fictional record, “Sample Client”, and one ten-minute demo session, both written in 2026 in the program’s own file formats. The program finds the record, replays the session and prints it as if a clinician had recorded it. His own client file stays off this page because it holds personal details.
How to use it: click the screen first. Arrow keys and Enter move through the menus, and Esc backs out. In a session, F10 starts, F2 marks an event, F4 pauses and F6 ends.
Lines counted from the eight units that build OMNI91.EXE: OMNI91, BIOSESS, BIODBAS2, BIOREV3, BIOMISC, REPORT2, BIOAID and HARDCHEK, with comments and blank lines. Not counted: two units that are lightly edited copies of TechnoJock’s Turbo Toolkit (2,245 lines), the board maker’s two driver routines, and test copies of his units. Emulation is js-dos 8.5.2 (DOSBox in WebAssembly, GPL-2.0). For this page its DOSBox core was rebuilt from the js-dos source with Emscripten 5.0.2, adding only the simulated board (dosbox-ad1000.patch). The other players use the unchanged core in ../js-dos/.