# Configuration

The S-132 requires only minimal configuration to get working.

The majority of features require no configuration to make work. However, the boot.conf file on the IMSAI8080 or Cromemco Z-1 replica must be edited to enable the TTY: (TTY2: & TTY3: - Cromemco Z-1 only) and VIO: keyboard (IMSAI8080 only) to be recognized as input/output devices by the HAL in the IMSAI8080 or the HAL in the Cromemco Z-1 respectively.

The VT100 terminal emulation (VT132), on the other hand, has extensive configuration options. See the VT132 Operation Manual for details.

# Start-up

With the S-132 connected to the IMSAI8080 or Cromemco Z-1 replica along with a VGA monitor and suitable keyboard, apply power and press the hardware reset on the IMSAI8080 or Cromemco Z-1 replica. As the replica boots it will force the S-132 to reboot.

The S-132 will perform a hand-shake with the ESP32-PICO-KIT on the replica and you will (may) briefly see the message

Host found

displayed in the upper left-hand corner of your VGA monitor. This will rapidly be replaced with the message

Wait

and a brief bell tone from the buzzer while the VT100 terminal initializes and retrieves its setting from the NVRAM.

TIP

When you first start the S-132, or after a full firmware re-flash (not an upgrade) it is completely normal to see the massage

Error

and a long bell tone from the buzzer.

This is the original behavior of the VT100 terminal and indicates that no settings were saved in NVRAM.

To avoid this message and warning tone in future simply go to one of the VT100 menus and save settings to NVRAM.

# Power Options

The S-132 can be powered from the connected IMSAI8080 or Cromemco Z-1 replica. Additional power is not required.

Alteratively, the S-132 can provide power to the connected IMSAI8080 or Cromemco Z-1 replica if you connect a DC power supply via the DC barrel jack on the S-132. In which case you should remove any USB cable providing power to the connected IMSAI8080 or Cromemco Z-1 replica.

When used with the SDH-100 the S-132 is powered from the +5VDC regulated by the SDH-100. Do not use the DC barrel jack to provide power in this configuration

# Configure the IMSAI8080 replica

You must edit the HAL settings in the boot.conf file. You can use the Web Desktop, or mount the µSD card in a PC and edit the /imsai/conf/boot.conf file directly.

Enable and initialize the S-132

### Enable S-132
S132.init=1

To make the S-132 the first (and only) preference for the TTY: and VIO: devices, use:

### SIO-2 default port mappings (HAL)
SIO1.portA.device=S132TTY,WEBTTY,UART0
SIO1.portB.device=S132VIO,VIOKBD

To make the S-132 the first preference for the TTY: & VIO: devices and also simultaneously use the Web Desktop devices if connected, use:

### SIO-2 default port mappings (HAL)
SIO1.portA.device=S132TTY+,WEBTTY,UART0
SIO1.portB.device=S132VIO+,VIOKBD

To allow the Web Desktop to capture the TTY: and VIO: devices with priority ove the S-132, use:

### SIO-2 default port mappings (HAL)
SIO1.portA.device=WEBTTY,S132TTY,UART0
SIO1.portB.device=VIOKBD,S132VIO

For more information on the boot.conf see HAL configuration for the IMSAI8080

# Configure the Cromemco Z-1 replica

You must edit the HAL settings in the boot.conf file. You can use the Web Desktop, or mount the µSD card in a PC and edit the /cromemco/conf/boot.conf file directly.

Enable and initialize the S-132

### Enable S-132
S132.init=1

To make the S-132 the first (and only) preference for the TTY: devices, use:

### TU-ART default device mappings (HAL)
TUART0.deviceA.device=S132TTY,WEBTTY,MODEM,UART0
TUART1.deviceA.device=S132TTY2,WEBTTY2,SCKTSRV1,UART1
TUART1.deviceB.device=S132TTY3,WEBTTY3,SCKTSRV2,UART2

To make the S-132 the first preference for the TTY: devices and also simultaneously use the Web Desktop devices if connected, use:

### TU-ART default device mappings (HAL)
TUART0.deviceA.device=S132TTY+,WEBTTY,MODEM,UART0
TUART1.deviceA.device=S132TTY2+,WEBTTY2,SCKTSRV1,UART1
TUART1.deviceB.device=S132TTY3+,WEBTTY3,SCKTSRV2,UART2

To allow the Web Desktop to capture the TTY: devices with priority ove the S-132, use:

### TU-ART default device mappings (HAL)
TUART0.deviceA.device=WEBTTY,S132TTY,MODEM,UART0
TUART1.deviceA.device=WEBTTY2,S132TTY2,SCKTSRV1,UART1
TUART1.deviceB.device=WEBTTY3,S132TTY3,SCKTSRV2,UART2

For more information on the boot.conf see HAL configuration for the Cromemco Z-1

# Configure the SDH-100

The S-132 is auto-detected at power-up by the SDH-100 when it is connected. No specific configuration is required on the SDH-100 to enable the S-132.

# TTY Display (VT100 emulation)

The TTY: display is the default. To return to the TTY: from other screens press Ctrl-Alt-F1.

The TTY: display is an advanced VT100 emulation with color, fonts, personalities and its own setup menu system. See the VT132 Operation Manual for more details.

# VIO Display

The IMSAI8080 VIO is an 80 × 24 character-cell display that emulates the original 1979 video board. To bring the VIO onto the screen press Ctrl-Alt-F4. To return to the TTY: press Ctrl-Alt-F1.

VIO display — green phosphor with scanlines

# Setup key — color and scan style

Each press of Setup (mapped to PrtScr / SysRq, or Ctrl-Alt-Space on keyboards that lack PrtScr) advances the VIO through six display states:

Step Phosphor colour Scanlines
1 White on
2 Green on
3 Amber on
4 White off
5 Green off
6 Amber off

The seventh press wraps back to step 1.

TIP

The current colour and scan style are part of the S-132 configuration that Save Cfg writes to NVRAM, so once you have picked your preferred VIO look it will come back the same way after a power-cycle.

# Dazzler Display

The Cromemco Dazzler is a low-resolution color graphics card. To bring the Dazzler onto the screen press Ctrl-Alt-F5. To return to the TTY: press Ctrl-Alt-F1.

Dazzler display — 512-pixel raster, alternate (orange) palette

While the Dazzler is the active device any printable keystroke is forwarded to the last-active console — typically the TTY: (or the VIO: if VIO: was the last console you used). This means you can flip to the Dazzler for graphics output and still type into the underlying program without flipping back. The Setup and PgUp keys are intercepted by the S-132 and used to change the Dazzler's appearance.

# Setup key — raster size

Each press of Setup steps the raster size down by 128 pixels and wraps:

Step Raster
1 512 × 384 (default)
2 384 × 384
3 256 × 256
4 128 × 128

Smaller rasters are centred on the screen with a black border, and pixels are drawn at proportionally larger sizes — useful if you want a punchier, more "chunky" Dazzler look.

# PgUp key — colour palette

In color mode (the Dazzler's normal mode of operation), each press of PgUp cycles between two palettes:

  • Standard — the historically-correct 16-colour palette.
  • Alternate — identical to Standard except Dark Yellow is replaced with Orange (255, 128, 0).

In monochrome (grey) mode the PgUp key has no effect — the grey palette is unchanged.

TIP

The raster size and the selected colour palette are both saved by Save Cfg.

# System Menu

The System Menu SYS: provides functions to inspect the host, mount and eject disk images, drive the IMSAI / Z-1 front panel, configure the D+7AIO, save and restore configuration, and flash firmware. It runs entirely on the S-132 — it does not need the host to be running.

System Menu — IMSAI8080 with [RUN][PWR.ON] in the title bar

# Bringing up the System Menu

Press Ctrl-Alt-F6 to switch directly to the S-132 SYS: system menu.

To leave the menu, press Esc from the top level. The S-132 will return to whichever device was active when you opened the menu.

Key Action
/ move the highlight up / down
Enter or Space activate the highlighted entry
Esc go back one level (or leave the menu if at the top)
Backspace go back one level
underlined letter jump to and activate that entry

TIP

The highlighted entry's hot-letter is shown underlined in the menu — pressing that letter is faster than arrowing down to it.

# Title bar

The title bar of the System Menu shows what the host is doing:

Host Title format Meaning
IMSAI8080 / Cromemco Z-1 System Menu : [RUN][PWR.ON] etc. run / wait state followed by power state
SDH-100 System Menu : V1.0.0 [MPU-A] host firmware version, then CPU type ([MPU-A] or [ZPU])

On the IMSAI / Z-1 you will see [RUN] when the CPU is running, [WAIT] when the front-panel STOP is asserted, and nothing between the brackets when the host is otherwise idle. [PWR.ON] and [PWR.OFF] reflect the emulated front-panel power switch.

# Top-level structure

The menu reshapes itself to match the connected host. The layout below is for the IMSAI8080 / Cromemco Z-1; the SDH-100 layout is a subset (see the next section).

Entry What it does
Disks > mount and eject the four virtual floppy drives A:DSK:D:DSK:. Each drive shows its currently mounted image, with Eject and a Mount > list of images on the SD card.
Library > the SD-card image library — all .dsk files at the top of the SD card, plus any >-prefixed remote images.
System > host-side inspection and configuration. See below.
CP-A > drives the emulated front panel — Run, Stop, Reset, Ext.Clr. Hidden on the SDH-100.
S-132 > configuration of the S-132 itself. See below.

# System sub-menu

Entry What it does
Guest dumps the host emulator's guest-OS configuration (CP/M version, BIOS info, etc.)
Host dumps the host's own configuration — emulator version, sound mode, memory map
Env dumps the runtime environment string of the host
Tasks live snapshot of the host's RTOS task list — name, state, core, priority, stack high-water mark, CPU %
Config > boot.conf shows the contents of boot.conf from the host's SD card
Config > system.conf shows the contents of system.conf
Reboot reboots the host (not the S-132)

# S-132 sub-menu

Entry What it does
First Dev > radio group choosing which device is brought up at S-132 power-on — TTY, VIO, or Dazzler.
D+7AIO > the D+7AIO configuration menu (see the D+7AIO Settings page).
Save Cfg writes the full S-132 configuration to NVRAM — initial device, D+7AIO settings, Dazzler raster size, Dazzler palette, VIO colour, VIO scan style. The terminal rings the bell on success.
Restore Cfg reads the saved configuration back from NVRAM. Useful if you have changed settings and want to revert without rebooting.
Restart restarts the S-132 only — the host keeps running.
Flash F/W starts the S-132 OTA firmware update flow over the host's network.

TIP

Save Cfg saves only the S-132 settings. The VT100-terminal settings (cursor style, keyboard layout, etc.) are saved separately by the existing VT132 SETUP Save key.

# SDH-100 host — reduced layout

When the connected host reports itself as an SDH-100, the System Menu drops the entries that do not apply to that hardware and adds two SDH-100-specific inspection views:

Entry What it does
Disks > / Library > unchanged
System > Memory Map dumps the SDH-100 memory map provided by the host firmware
System > Boot Log dumps the SDH-100 boot log provided by the host firmware
System > Env unchanged
System > Config > boot.conf unchanged
S-132 > unchanged

The Guest, Host, Tasks, system.conf, Reboot, and the CP-A sub-menu are all hidden on the SDH-100. The title bar shows the SDH-100 firmware version and CPU type instead of the run / power indicator.

# D+7AIO Settings

The D+7AIO is configured entirely from the System Menu — there are no jumpers or DIP switches on the board. Open SETUP with Ctrl-Alt-F6, then select S-132 > D+7AIO >.

The menu adapts to the selected Mode: only the options relevant to the current mode are shown.

TIP

All ten D+7AIO settings are included in the configuration that Save Cfg writes to NVRAM, so once you have the board configured for your application you do not need to re-set it after a restart.

D+7AIO menu — Joystick/Audio mode selected

# Mode

The Mode selector controls how the D+7AIO behaves and which secondary options are presented.

Mode Use this when…
Off the D+7AIO is not fitted, or you want to disable it for this session
Joystick/Audio you have a pair of Cromemco-compatible joysticks (4 buttons + X/Y per stick) and/or want audio output via the two DAC channels
LPT: Passthrough the digital ports are wired to a Centronics-style parallel printer and you want the host to drive it directly
Full Input/Output you are running an application that uses the full seven analog inputs, two analog outputs, eight digital inputs and eight digital outputs of the D+7A interface

When you switch Mode the menu resets the Options for the new mode to their recommended defaults (see below). This means it is safe to flip back and forth between modes while you are getting started.

# Joystick/Audio mode

The defaults applied when you pick Joystick/Audio are tuned for a pair of Cromemco-style joysticks. You should not normally need to change them.

D+7AIO Options — Joystick/Audio

Option Default Notes
Analog centre Zeroed report joystick position relative to the stored centre. Use Raw to send the unmodified ADC reading instead.
Analog sample Average 4 4-sample running average smooths out ADC noise on cheap potentiometers. Raw reports each sample as it is read.
Analog rate 60 Hz how often the joystick is polled. 30 Hz is plenty for most games; 1 KHz is only useful for Full Input/Output mode.
Re-centre resamples the four joystick axes 32 times and stores the average as the new centre position. Use this if a joystick is showing a non-zero rest position.
Audio DAC Split how the host's two audio channels are routed to the ESP32's two DAC outputs. See below.
DAC bias Signed how the host's 8-bit audio sample is decoded. See below.

The Audio DAC option controls routing of the two audio channels sent by the host:

  • Split — host channel A1 → DAC 1, host channel A3 → DAC 2 (stereo, the Cromemco JS-1 convention)
  • Mix to A — both host channels are sent to DAC 1
  • Mix to B — both host channels are sent to DAC 2

The DAC bias setting must match the encoding used by the host's audio routine. Signed treats the byte as −128…+127 around silence; Unsigned treats it as 0…255 with 128 as silence. If audio sounds clipped at the loud parts and silent in the middle, you have the wrong bias selected — flip it.

Once configured, a Re-centre is performed automatically the first time the joystick is polled. The joystick will continue to report data even when the D+7AIO screen is not the currently displayed device — the screen is only the inspector, not the gating.

# LPT: Pass-through mode

LPT: Passthrough has no further options — the eight digital outputs and the STB output strobe are wired up as a Centronics-style parallel port, and the two digital input bits _ACK and BUSY are read back for handshake.

When the host sends a byte to the D+7AIO it is buffered on the S-132. The S-132 forwards each byte to the printer when the printer asserts _ACK high and BUSY low. If the host outruns the printer, the S-132 sends back an in-band flow-control on the D+7AIO channel.

TIP

Pass-through requires nothing else on the D+7AIO connector beyond the printer cable adapter. The board's analog inputs and outputs are unused in this mode.

# Full Input/Output mode

This mode exposes the full D+7AIO peripheral set to the host: seven 8-bit analog inputs (via the on-board MCP3008), two 8-bit analog outputs (via the ESP32's DACs), eight digital input bits and eight digital output bits with an output strobe.

D+7AIO Options — Full Input/Output

Defaults when you pick Full Input/Output:

Option Default Notes
Analog sample Raw no averaging — every poll sends the raw ADC value
Analog rate 1 KHz the fastest the polling task will run
Analog channels ..A7 poll all seven analog inputs each cycle. Pick a lower channel to stop the S-132 reading channels you are not using — A1 only polls only A1, ..A4 polls A1 through A4, and so on.
ADC bias Signed how the 8-bit sample is sent to the host. Signed = −128…+127 (mid-rail = 0); Unsigned = 0…255 (mid-rail = 128).
DAC A maps A1 which host analog output channel drives the ESP32's first DAC
DAC B maps A3 which host analog output channel drives the ESP32's second DAC. The DAC outputs are not on adjacent host channels by default to match the JS-1 convention.
DAC bias Signed how the 8-bit DAC sample from the host is interpreted before it reaches the DAC

Only the analog input channels that are enabled by Analog channels are forwarded to the host — the others are ignored. This is cheaper than reading all seven channels and discarding the unused ones.

The two DAC A maps and DAC B maps lists let the host's analog-output namespace be mapped onto the S-132's two physical DACs in any combination. If the same channel is selected for both, both DACs are driven by that channel (the on-screen indicator shows >+ next to the channel).

The Analog centre and Re-centre controls are not shown in this mode — analog input is always reported as the raw ADC reading. If your application needs centring around a zero point, do it on the host side.

# ADC and DAC bias — choosing Signed or Unsigned

The ADC bias and DAC bias settings select how the 8-bit byte that travels between the host and the D+7AIO is interpreted:

  • Signed — the byte is a two's-complement signed value, −128…+127. A value of 0 is mid-rail; a negative value is below it.
  • Unsigned — the byte is an unsigned value, 0…255. A value of 128 is mid-rail; 0 is the lowest reading.

Pick the bias that matches what the program running on the host expects to read or write. If you do not know, Signed is the historically common choice for Cromemco software and is the default. The two settings are independent — you can run signed-mode input alongside unsigned-mode output if that is what the application wants.

# Saving the configuration

D+7AIO settings persist only after you select S-132 > Save Cfg. Restart or power-cycle without saving and the board will come back up with the compile-time defaults (Mode = Off).

Restore Cfg re-reads the saved state. There is no factory-reset entry — to go back to first-power-on defaults, do a Save Cfg while Mode is Off and the other options are at their out-of-box values.

# D+7AIO Display

To bring the D+7AIO display onto the screen, press Ctrl-Alt-F7. The display only opens when Mode is Joystick/Audio or Full Input/Output — in Off and LPT: Passthrough mode the hot-key is ignored.

TIP

The D+7AIO display has two panes: a Joystick view (two crosshair panels showing X / Y / buttons) and an Input/Output view (seven analog bars + eight digital bits, both directions). Press J while the display is active to swap between them. Press Z to toggle the zero-line basis.

D+7AIO Display — Joystick

D+7AIO Display — Input/Output

Last Updated: 5/24/2026, 11:27:42 AM