  TYPE
    ost$spi_communication_buffer = packed record
{
{  First word is the PP portion of the communication buffer.
{
      current_pp_buffer: ost$parcel,
      current_byte_offset: ost$parcel,
      current_pp_status: ost$parcel,
      pp_word_filler: ost$parcel,
{
{  Second word is the CP portion of the communication buffer.
{
      current_cp_buffer: ost$parcel,
      current_cp_status: ost$parcel,
      spi_identifier: ost$parcel,
      processor_0_select: boolean,
      processor_1_select: boolean,
      processor_2_select: boolean,
      processor_3_select: boolean,
      processor_4_select: boolean,
      processor_5_select: boolean,
      processor_6_select: boolean,
      processor_7_select: boolean,
      interrupt_port_selector: ost$byte,
{
{ Third word is the control information for the SPI collection.
{
      number_of_spi_samples: ost$halfword,
      spi_sampling_interval: ost$halfword,
{
{ Fourth word starts the buffer control area for the SPI collection.
{
      spi_data_buffer_control: array [ost$number_of_spi_buffers] of
            ost$spi_data_buffer_control,
      element_reservation: array [1 .. 1] of cmt$element_reservation,
    recend,

    ost$number_of_spi_buffers = osc$first_spi_buffer .. osc$last_spi_buffer,
    ost$bytes_in_spi_buffer = 0 .. 2047,
    ost$words_in_spi_buffer = 0 .. 255,
    ost$spi_data_buffer_control = record
      current_word_offset: ost$parcel,
      current_buffer_status: ost$parcel,
      rma_of_buffer: ost$real_memory_address,
      pva_of_buffer: ^ost$spi_data_buffer,
      buffer_filler: ost$parcel,
    recend,
    ost$spi_data_buffer = record
      buffer: array [ost$words_in_spi_buffer] of integer,
    recend,
    ost$spi_buffers = array [ost$number_of_spi_buffers] of ost$spi_data_buffer;

  CONST
{
{  Values for the limits on the number of SPI buffers.
{
    osc$first_spi_buffer = 1,
    osc$last_spi_buffer = 16,
{
{  Values for CP Operation Status.
{
    osc$spi_wait_for_start = 1,
    osc$spi_start_collecting = 2,
    osc$spi_stop_collecting = 3,
    osc$spi_termination_requested = 4,
    osc$spi_process_complete = 5,
{
{ Values for PP Operation Status.
{
    osc$spi_pp_waiting_for_start = 6,
    osc$spi_pp_collecting_data = 7,
    osc$spi_pp_stopped_collecting = 8,
    osc$spi_pp_terminated = 9,
{
{  Values for Buffer Status.
{
    osc$spi_buffer_available = 1,
    osc$spi_buffer_in_user = 2,
    osc$spi_buffer_has_data = 3;

?? PUSH (LISTEXT := ON) ??
*copyc cmt$element_reservation
*copyc ost$byte
*copyc ost$halfword
*copyc ost$hardware_subranges
*copyc ost$parcel
*copyc ost$spi_types
?? POP ??
