Release notes for Soviet.hex
----------------------------


Version 0.27    04/10/00
------------------------

- Changed some of the CCD voltages to 5V.

- FPGA gateware version 6 (20/9/2000) 71% used:
    - DIP switch position altering SAMPLE and SPL_RST function removed
    - Internal Gateware version number changed to 6.


Version 0.26    28/08/00
------------------------

- Changed the full-CCD clear algorithm to give better clearing of faulty
  pixels & better speed (0.15s instead of 0.35s).


Version 0.25    22/08/00    Gateware 1.00
-----------------------------------------

- New gateware, version 1.00, 20/8/2000, XCS40XLPQ208-4, 71% used, C Bricker
  Factor of 8 Added to Integration Clock Period.
  Test Rig SP LED added to Operation Mode and Diagnostics commands.

- Integration times of 100 seconds are now supported.

- A new 'single-point LED' mode has been added for the CCD test box.  This
  is enabled for the duration of the next integration only by using a
  diagnostic command with subcmd=6, parameters ignored.

- Some drive CCD voltages have been changed.

- A full CCD clear (done immediately before every integration) now clears 50
  full rows beyond the end of the CCD.

- The 'binning count' setup parameter is only used during a full CCD clear, to
  permit faster clears.  CCD readout is still performed one row at a time.


Version 0.24    07/08/00
------------------------

- Timestamping for time scans has now been enabled.

- Dummy (spare) fields have been added to several message structures to
  ease future changes (ie. avoid incompatibilities between firmware & software
  versions).

- This and later versions of firmware will not work with versions of the
  software built prior to this date.


Version 0.23    31/07/00
------------------------

- Fixed attenuator wait bug (the attenuator was sometimes still moving when
  the first replicate of an integration began, giving a low reading for this
  replicate).


Version 0.22    26/07/00    Gateware 0.21
-----------------------------------------

- New gateware, version 0.21, 18/07/2000, XCS40XLPQ208-4, 70% used, C Bricker
  Changed from 30XL to 40XL device.
  Burr Brown ADS7809U compatibility added.

- Added time-scan timestamp support, but with the new field in the message
  structure disabled for now.

- Redefined the P1PIN field of the status dump to return 0 under normal
  circumstances, or the channel control bits if the casting temperature ADC
  channel has been redefined (only used by factory test code).

- Changed the default overrange saturation level for each pixel to 50000
  (instead of 60000).

- Changed the default number of preread pixels on each CCD row from 1 to 2.

- When reading or clearing the CCD, a couple of extra rows are now read &
  discarded at the end of each frame.


Version 0.21    17/07/00
------------------------

- Added timestamp feature on all data points to enable PC to generate X-axis
  coords in timescans.

- Redefined P1PIN field of Soviet status dump to return 0 if the casting-temp
  field contains the casting temperature ADC value, or non-zero if it contains
  one of the other ADC channel values (P1PIN == last command written to ADC).


Version 0.20    03/07/00
------------------------

- Added control of trace/debug messgae levels (using diag cmd=5, param1=mask).


Version 0.19    22/06/00
------------------------

- Deleted support for the filament control command (it never did anything
  anyway).

- Update the filament-volts field of the status dump.

- Explicitly initialise some external I/O ports during a reset.

- Added range checking to the integration time parameter from the PC (it
  was previously being clamped to the maximum permitted by the current
  hardware configuration, typically 80s).

- Deleted camera-board gateware support for the X30 XILINX chip: all
  soviet instruments now use the larger X40 chip.


Version 0.18    30/05/00
------------------------

- Restored the full camera-version reading code.

- Added the ability to move the attenuator during CCD readout at the
  end of an integration to pre-position it for the next integration.  This
  will cut 2-3 seconds off a full-frame integration sequence.


Version 0.17    25/05/00
------------------------

- Temporarily restored the masked camera version number: the Microsoft
  compiler was geenrating bad code.


Version 0.16    25/05/00
------------------------

- Fixed a bug causing spurious overrange detection: the wrong pixels were
  being checked for each region.

- Changed the camera version to return the full encoded board & gateware
  versions (B12-15 = board (DIP switch for now); B0-11 = gatware).


Version 0.15    24/05/00
------------------------

- Reworked the attenuator reset process to support a change to the
  electronics.  The entire reset procedure is performed at 1/3 of the normal
  step rate.  The reset process is now performed asynchronously during
  startup to avoid delaying the instrument startup by 12-15 seconds.

- Added a new diagnostic command (4=DIAG_SET_ADC_CHANNEL) to return the value
  of any arbitrary ADC channel instead of the casting temperature.  Param1
  can be 16-31 (the raw bit pattern written to ADC chip) or 0 to restore the
  normal behaviour.

- Added a new field to the common status dump for the state of several I/O
  input pins on the 71055 chips.  This replaces a padding byte in the
  structure.  The new I/O pins in the status byte are:
    B0 = port 1B.B0     (DA valve)
    B1 = spare          (not used)
    B2 = port 1C.B2     (Preoptics horizontal opto)
    B3 = port 1C.B3     (Preoptics vertical opto)
    B4 = port 2C.B0     (Soviet FPGA DONE)
    B5 = port 2C.B1     (Soviet FPGA INIT)
    B6 = port 2C.B2     (not used)
    B7 = port 2C.B3     (not used)

- If no camera board is connected or if the firmware is running with a Vista
  camera (ie. Vista instrument), avoid writing any further commands to the
  camera, as these were causing lockup situations.

- Reworked the instrument initialisation sequence for the attenuator &
  missing-camera changes.


Version 0.14    16/05/00
------------------------

- Fixed a bug that was returning the CCD electronic offsets for the wrong
  quadrants (effectively rotating the CCD 180 degrees).


Version 0.13    15/05/00
------------------------

- Reworked attenuator drive to provide guaranteed timing (this also requires a
  resistor change on the breadboard hardware).

- Restored the default number of overscan pixels from 100 to 200.

- Fixed a DMA-initialisation bug that was casuing occasional hangs after
  an instrument reset (requiring a power-off-on sequence to clear).


Version 0.12    11/05/00
------------------------

- Fixed a bug where the stop scan command left the CCD command queue in a
  strange state.

- Moved the overscan readings done on every integration to the end of the
  pre-integration clear step to avoid problems when the CCD is saturated.

- Added a 100ms delay after every attenuator movement command (to try and
  avoid direction-reversal problems with two back-to-back movement commands).

- Made all attenuator timing parameters configurable using diag commands:
    20: param1=step  time in microseconds (default 20000)
    21: param1=pulse time in microseconds (default 2000)
    22: param1=pause time in microseconds (default 100000)
    23: param2=perform this number of test cycles.


Version 0.11    05/05/00
------------------------

- Return attenuator position in region data from scan.

- Added temporary diagnostic to adjust attenuator stepper speed.


Version 0.10    04/05/00
------------------------

- Added board version (old 386-board) checking (partially disabled for now).

- Reworked startup code to check for wrong hardware and reject certain hw-
  specific commands.

- Added crosscheck between instrument type & firmware type (ie. Soviet fw
  downloaded to Vista instrument) and new error codes.

- Flag all dumps not in response to commands with a unique 'command number'.

- Fixed a bug that sometimes returned the wrong integration time.

- Changed the camera read timeout from 0.3s to 0.1s.


Version 0.09    04/04/00
------------------------

- Changed the X-axis quadrant ordering for the returned electronic offsets
  (bug in 0.08).

- Added support for two firmware versions; one for the original 30X XILINX
  FPGA and the other for the larger 40X FPGA (soviet.hex and soviet2.hex).

- Added an experimental serial-drain CCD mode (enabled by diagnostic cmd 9).

- Fixed a bug that was inconsistantly clearing the command queue after
  an abort command.


Version 0.08    03/04/00
------------------------

- Changed the X-axis pixel ordering to match Vista.


Version 0.07    30/03/00    Gateware 0.20
-----------------------------------------

- New gateware, version 0.20, 27/03/2000, XCS30XLPQ208-4, 91% used, C Bricker
  Initial prototype released version which corresponds to SOV CCD Camera Board
    to 386 Board Communication Protocol Version 1.2 (24/3/2000).
  Support faster camera-board EEPROM access.

- Extensive code cleanup.

- Reworked attenuator reset sequence.

- Added configurable peltier-out-of-range check.

- Peform a full CCD read/clear after an integration (the old code was stopping
  when the last region had been read).

- Change comms startup to fix initialisation 'first-command-ignored' bug.

- Fixed a bug returning corrupt instrument type messages.

- Changed the C compiler options to work around compiler optimisation bugs.


Version 0.06    23/03/00
------------------------

- Fixed format of debug message strings.  Each packet now consists of
  one or more '\0'-terminated strings followed by a single extra '\0' as
  a terminator.  Thelength in the header includes all of these nulls.


Version 0.05    23/03/00
------------------------

- Fixed bug generating wrong length on status dump packet.

- Display specific LED codes during long operations (6=attenuator,7-9=scan).

- Fixed erratic reset behaviour.


Version 0.04    22/03/00
------------------------

- Added camera-card EEPROM code.

- Added electronic-offset fields to SOVSCANDATA structure.

- Reworked status-dump & camera-status GPIB send queues.

- Fixed full-illumination LED gateware bugs.



Version 0.03    15/03/00
------------------------

- First internal Soviet/Vista release using modified comms protocol.
