# VISTA-20P Emulator Manual Parity Audit — v1.0.7

## Scope

This audit compares the emulator's user-visible operation and installer-programming behavior with the Honeywell/Resideo VISTA-15P/VISTA-20P documentation available for the classic VISTA-20P family. The primary references used for this pass were:

- **Honeywell/Resideo VISTA-15P/VISTA-20P User Guide, 3/15 Rev. B (K5309-series)**
  - https://www.alarmgrid.com/documents/honeywell-vista-15p-vista-20p-user-guide-dated-03-15-rev-b
- **Honeywell/Resideo VISTA-15P/VISTA-20P Program Guide, 3/15 Rev. B (K5305-series)**
  - https://www.alarmgrid.com/documents/honeywell-vista-15p-vista-20p-program-guide-dated-03-15-rev-b
- An older ADEMCO VISTA Series programming-guide revision was also checked where prompt wording and legacy behavior were useful for comparison.

Manual revisions vary slightly across VISTA-20P/VISTA-20PSIA firmware generations. v1.0.7 targets the common classic VISTA-20P behavior represented by these guides; it does not intentionally copy SIA-only restrictions onto the non-SIA profile.

## Corrections made in v1.0.7

| Area | Manual behavior checked | v1.0.7 behavior |
| --- | --- | --- |
| Exit delay | Exit delay begins after arming; last 10 seconds use rapid warning where warning is enabled. | Existing cadence retained; restart/reset behavior was added. |
| Exit Delay Restart/Reset | If enabled, STAY can restart exit delay for quick exit; AWAY can reset the exit delay once through the entry/exit-door sequence. | `*91` option now feeds both behaviors. |
| STAY / NIGHT-STAY | STAY bypasses interior protection; NIGHT-STAY additionally arms interior zones selected in Zone List 5. | NIGHT-STAY now uses Zone List 5 rather than duplicating ordinary STAY. |
| Chime | Normal chime applies to entry/exit/perimeter zones; when Chime-by-Zone is enabled, Zone List 3 selects participating zones. | Field `*26` now selects broad chime vs Zone List 3 behavior. |
| Interior Follower (04) | Follows entry delay once an entry/exit zone has started the delay; otherwise alarms immediately while armed. | Corrected. |
| Day/Night (05) | Produces trouble while disarmed and alarm while armed. | Corrected. |
| CO (14) | Life-safety CO response is distinct from ordinary burglary. | Separate CO state/display/silence path added. |
| Fire with Verification (16) | Requires a verification/recheck sequence rather than behaving as an ordinary immediate fire zone. | Verification window added. |
| RF system-operation zones 20/21/22 | Compatible RF button transmitters can arm STAY, arm AWAY, or disarm. | Runtime actions added. |
| Bypass | Bypass is a disarmed operation; quick bypass operates on faulted eligible zones. | Arming-state and zone-eligibility rules tightened; entry is additive. |
| Walk Test | Requires a ready/disarmed system, briefly operates sounder, announces/faults tested zones without normal alarm operation, and supplies periodic reminder behavior. | Added ready gate, short sounder test, test-only fault feedback, reminder beeps, and auto timeout. |
| Alarm memory | Burglary alarm silence/disarm and subsequent memory clearing are separate operations. | Existing two-step memory behavior retained. |
| `*56` entry | SET TO CONFIRM defaults to 0; zone selection is followed by a summary and attribute prompts. | Existing v1.0.6 corrections retained. |
| `*56` Zone Type 00 | Selecting Not Used presents `DELETE ZONE?` before zone data is removed. | Added explicit confirmation. |
| `*56` zone numbers | VISTA-20P menu supports 01–64 and reserved/emergency numbers 91, 92, 95, 96, 99. | These numbers are accepted by the zone selector. Reserved reporting-zone semantics remain partly abstracted (see below). |
| `*58` Expert Mode | Same zone data as `*56`, fewer prompts, summary/cursor editing, A/B navigation, C copy, D wireless key templates. | Separate compact Expert Mode implemented; wireless-key template branch remains partial. |
| `*57` function keys | A–D are assigned functions in this menu; outside appropriate programming menus they must not accidentally operate normal panel functions. | Programming-time isolation retained from v1.0.6; normal `*57` function selection remains active. |
| `*81` zone lists | Add zones, optionally delete entire list, optionally delete individual zones. | Full documented prompt path represented. |
| `*96` | Initializes downloader ID/subscriber account data. | Account-number data represented by emulator are reinitialized; no real downloader transport exists. |
| `*97` | Restores factory programming defaults. | Field store and core factory hardwire-zone profile now reset together. |
| Direct-field defaults | Factory values in the programming worksheet should be restored by `*97`. | Spot-check corrected `*26`, `*91`, `*95`, keypad-address defaults, delay defaults, and core hardwire-zone defaults used by the browser field database. |
| `*98` / `*99` | Exit programming with lockout vs normal re-entry behavior. | Existing distinction retained. |

## Important remaining differences

The following are known boundaries, not hidden “complete” features:

- **`*58` wireless-key templates:** the Expert Mode D-key branch is represented, but the complete template-selection/enrollment workflow is not yet implemented.
- **`*79` / `*80` outputs:** menu commands are recognized, but full 4204/4229/X-10/on-board-trigger mapping and output-function execution are not yet simulated.
- **Communications:** `*29`, report codes, account numbers, and related fields can be represented, but there is no real telephone/IP/LRR communicator, central-station receiver, Contact ID transport, downloader session, or receiver supervision.
- **Reserved zones 91/92:** menu selection is accepted, but addressable-device-report and duress-report transport semantics are abstracted because the corresponding communicator/device-report path is not fully simulated.
- **Scheduling and real-time automation:** the full installer/master `code + #64` schedule engine and all schedule-trigger actions are not yet complete.
- **Partitions/common lobby:** programming values support partition assignments, but the emulator does not yet model every independent two-partition/common-lobby runtime edge case as separate physical keypad/user worlds.
- **Event logging:** the complete panel event log, event-log reporting, and downloader review workflow are not implemented.
- **Expansion/RF physical layer:** the browser models zone devices and serial/loop concepts, but not actual 5881 RF timing/collision/supervision radio behavior, ECP electrical faults, analog zone-loop resistance, or module-bus electrical timing.
- **Configurable zone types / advanced reporting:** not every configurable-zone-type and central-station reporting edge case is executed.
- **Hardware timing:** browser audio scheduling and UI rendering are intentionally close approximations, not measurements of a specific physical keypad/panel revision.

## Accuracy policy

For features that are implemented, the project should prefer documented VISTA behavior over “convenient web UI” behavior. Where a hardware subsystem does not exist in the browser model, the emulator should label that subsystem as partial instead of inventing a fake complete implementation.

The highest priority remains the experience a person sees and hears at a 6150/6160/6160V while operating and programming a VISTA-20P: keypad prompts, accepted key sequences, arm/disarm states, delays, faults/alarms, LEDs, acknowledgements, and menu progression.
