!!!!    6    0    1  617920879                                                


!     8570
!     256-by-8 bit Static CMOS RAM
!     revision A.02.00


!safeguard is "high_out_cmos"

sequential

vector cycle   10u
receive delay  9.9u

assign VCC              to pins 8
assign GND              to pins 4

assign Test             to pins 7
assign Address          to pins 3,2,1
assign Serial_clock     to pins 6

assign Serial_data      to pins 5

power            VCC,GND

family           TTL

inputs           Test,Address,Serial_clock
bidirectional    Serial_data


!The bidirectional data line, Serial_data, does not enter a tri-state
!mode.  When the bus is available (not busy) Serial_data is high.


!***********************   Backtrace Information   *****************

trace Serial_data to Serial_clock,Address,Test

!This test anticipates all possible topologies.  The units that
!are not necessary can be commented out.
!The pin 'Test' (pin 7) has not been tested since it requires a voltage
!of 1V to 2V to force the device into the power saving mode.  For normal
!operation, 'Test' is set to 0V.
!Note that when 'Test' is 1V to 2V, the device enters the power
!saving mode and 'Test',Serial_data,and Serial_clock take on the
!voltage VDDR which is the voltage maintained by 'Test' until
!'Test' is brought back to 0V.
!Note that pull-ups are required on pins 5 and 6 for this test to operate
!properly.


warning "Pull-ups required on Serial_data and Serial_clock (pins 5,6)"
warning "for entire test to run."

set load on groups  Serial_data  to pull up

!********************************************************************
!*************************   VECTOR SECTION   ***********************
!********************************************************************

vector Set_values
   drive Serial_data
   set Address             to "000"
   set Serial_clock        to "1"
   set Test                to "0"
   set Serial_data         to "1"
end vector

vector Keep_values
   drive Serial_data
   set Address             to "kkk"
   set Serial_clock        to "k"
   set Test                to "k"
   set Serial_data         to "k"
end vector

vector Keep_values_receive
   receive Serial_data
   set Address             to "kkk"
   set Serial_clock        to "k"
   set Test                to "k"
   set Serial_data         to "k"
end vector

vector Clock_receive_high
   initialize to Keep_values_receive
   set Serial_clock        to "1"
end vector

vector Clock_high
   initialize to Keep_values
   set Serial_clock        to "1"
end vector

vector Clock_low
   initialize to Keep_values
   set Serial_clock        to "0"
end vector

vector Data_0
   initialize to Keep_values
   drive Serial_data
   set Serial_data         to "0"
end vector

vector Data_1
   initialize to Keep_values
   drive Serial_data
   set Serial_data         to "1"
end vector

vector Data_receive_0
   initialize to Keep_values_receive
   receive Serial_data
   set Serial_data         to "0"
end vector

vector Data_receive_1
   initialize to Keep_values_receive
   receive Serial_data
   set Serial_data         to "1"
end vector

vector Address_000
   initialize to Keep_values
   set Address             to "000"
end vector

vector Address_001
   initialize to Keep_values
   set Address             to "001"
end vector

vector Address_010
   initialize to Keep_values
   set Address             to "010"
end vector

vector Address_011
   initialize to Keep_values
   set Address             to "011"
end vector

vector Address_100
   initialize to Keep_values
   set Address             to "100"
end vector

vector Address_101
   initialize to Keep_values
   set Address             to "101"
end vector

vector Address_110
   initialize to Keep_values
   set Address             to "110"
end vector

vector Address_111
   initialize to Keep_values
   set Address             to "111"
end vector

!********************************************************************
!************************   SUBROUTINE SECTION  *********************
!********************************************************************

sub Start                    !Start condition.
   execute Clock_high
   execute Data_1
   execute Data_0
   execute Clock_low
end sub

sub Stop                     !Stop condition.
   execute Clock_high
   execute Data_0
   execute Data_1
   execute Clock_low
   execute Clock_high
   execute Clock_low
end sub

sub Slave_Address            !The first 4 bits of the slave address for
   repeat 2 times            !the 8570.
      execute Data_1
      execute Clock_high
      execute Clock_low
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
end sub

!********************************************************************
!*************************    UNIT SECTION    ***********************
!********************************************************************

unit "Test Address 000"
   execute Set_values
   execute Address_000         !Set address of device.
   call Start
   call Slave_address          !Enable the device.
   repeat 3 times
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_0              !Write bit.
   execute Clock_high
   execute Clock_low
   execute Clock_receive_high  !Acknowledge bit from the device.
   execute Data_receive_0
   execute Clock_low
   repeat 4 times              !Write to address F0h.
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   repeat 4 times
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
   execute Clock_receive_high
   execute Data_receive_0      !Acknowledge received from device.
   execute Clock_low
   repeat 4 times              !Write AAh to address F0h.
      execute Data_1
      execute Clock_high
      execute Clock_low
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
   execute Clock_receive_high  !Acknowledge from the device.
   execute Data_receive_0
   execute Clock_low
   call Stop

   call Start
   call Slave_address          !Write to a different device.
   execute Data_0
   execute Clock_high
   execute Clock_low
   execute Data_1
   execute Clock_high
   execute Clock_low
   execute Data_0
   execute Clock_high
   execute Clock_low
   execute Data_0              !Write bit.
   execute Clock_high
   execute Clock_low
   execute Data_1              !Acknowledge bit.
   execute Clock_high
   execute Clock_low
   repeat 4 times              !Write to memory address F0h.
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   repeat 4 times
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_1              !Acknowledge bit.
   execute Clock_high
   execute Clock_low
   repeat 4 times              !Write 55h to address F0h.
      execute Data_0
      execute Clock_high
      execute Clock_low
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_1              !Acknowledge bit.
   execute Clock_high
   execute Clock_low
   call Stop

   call Start
   call Slave_address          !Access the device.
   repeat 3 times
      execute Data_0
      execute Clock_high
      execute Clock_low
    end repeat
   execute Data_0              !Write bit.
   execute Clock_high
   execute Clock_low
   execute Clock_receive_high
   execute Data_receive_0      !Acknowledge received from device.
   execute Clock_low
   repeat 4 times              !Access memory address F0h.
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   repeat 4 times
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
   execute Clock_receive_high
   execute Data_receive_0      !Acknowledge from device.
   execute Clock_low

   call Start
   call Slave_address
   repeat 3 times
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_1              !Read bit.
   execute Clock_high
   execute Clock_low
   execute Data_receive_0      !Acknowledge from device.
   execute Clock_receive_high
   execute Clock_low
   repeat 4 times              !Transmit data AAh.
      execute Data_receive_1
      execute Clock_receive_high
      execute Clock_low
      execute Data_receive_0
      execute Clock_receive_high
      execute Clock_low
   end repeat

   call Stop

end unit


unit "Test Address 001"
   execute Set_values
   execute Address_001         !Set address of device.
   call Start
   call Slave_address          !Address the particular device.
   repeat 2 times
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_1
   execute Clock_high
   execute Clock_low
   execute Data_0              !Write bit.
   execute Clock_high
   execute Clock_low
   execute Clock_receive_high  !Acknowledge from the device.
   execute Data_receive_0
   execute Clock_low
   repeat 4 times
      execute Data_0           !Write to memory address 55h
      execute Clock_high
      execute Clock_low
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_receive_0      !Acknowledge from device.
   execute Clock_receive_high
   execute Clock_low
   repeat 2 times              !Write CCh to memory address 55h.
      execute Data_1
      execute Clock_high
      execute Clock_low
      execute Data_1
      execute Clock_high
      execute Clock_low
      execute Data_0
      execute Clock_high
      execute Clock_low
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
   execute Clock_receive_high
   execute Data_receive_0      !Acknowledge from device.
   execute Clock_low
   call Stop

   call Start
   call Slave_address          !Address a different device.
   repeat 3 times
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_0              !Write bit.
   execute Clock_high
   execute Clock_low
   execute Data_1              !Acknowledge bit.
   execute Clock_high
   execute Clock_low
   repeat 4 times
      execute Data_0           !Write to memory address 55h
      execute Clock_high
      execute Clock_low
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_1              !Acknowledge bit.
   execute Clock_high
   execute Clock_low
   repeat 2 times              !Write 33h to the specified Address.
      execute Data_0
      execute Clock_high
      execute Clock_low
      execute Data_0
      execute Clock_high
      execute Clock_low
      execute Data_1
      execute Clock_high
      execute Clock_low
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_1              !Acknowledge bit.
   execute Clock_high
   execute Clock_low
   call Stop

   call Start
   call Slave_address          !Address the particular device.
   repeat 2 times
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_1
   execute Clock_high
   execute Clock_low
   execute Data_0              !Write to memory address.
   execute Clock_high
   execute Clock_low
   execute Clock_receive_high
   execute Data_receive_0      !Acknowledge from device.
   execute Clock_low
   repeat 4 times              !Access memory address 55h.
      execute Data_0
      execute Clock_high
      execute Clock_low
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_receive_0      !Acknowledge from device.
   execute Clock_receive_high
   execute Clock_low

   call Start
   call Slave_address          !Address the particular device.
   repeat 2 times
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_1
   execute Clock_high
   execute Clock_low
   execute Data_1              !Read bit.
   execute Clock_high
   execute Clock_low
   execute Data_receive_0      !Acknowledge from device.
   execute Clock_receive_high
   execute Clock_low
   repeat 2 times
      execute Data_receive_1   !Transmit Data CCh.
      execute Clock_receive_high
      execute Clock_low
      execute Data_receive_1
      execute Clock_receive_high
      execute Clock_low
      execute Data_receive_0
      execute Clock_receive_high
      execute Clock_low
      execute Data_receive_0
      execute Clock_receive_high
      execute Clock_low
   end repeat
   call Stop
end unit


unit "Test Address 010"
   execute Set_values
   execute Address_010         !Set address of device.
   call Start
   call Slave_address          !Enable the device.
   execute Data_0
   execute Clock_high
   execute Clock_low
   execute Data_1
   execute Clock_high
   execute Clock_low
   execute Data_0
   execute Clock_high
   execute Clock_low
   execute Data_0              !Write bit.
   execute Clock_high
   execute Clock_low
   execute Clock_receive_high  !Acknowledge bit from the device.
   execute Data_receive_0
   execute Clock_low
   repeat 4 times              !Write to address AAh.
      execute Data_1
      execute Clock_high
      execute Clock_low
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
   execute Clock_receive_high
   execute Data_receive_0      !Acknowledge received from device.
   execute Clock_low
   repeat 4 times              !Write AAh to the specified Address.
      execute Data_1
      execute Clock_high
      execute Clock_low
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
   execute Clock_receive_high  !Acknowledge from the device.
   execute Data_receive_0
   execute Clock_low
   call Stop

   call Start
   call Slave_address          !Write to a different device.
   execute Data_1
   execute Clock_high
   execute Clock_low
   execute Data_1
   execute Clock_high
   execute Clock_low
   execute Data_0
   execute Clock_high
   execute Clock_low
   execute Data_0              !Write bit.
   execute Clock_high
   execute Clock_low
   execute Data_1              !Acknowledge bit.
   execute Clock_high
   execute Clock_low
   repeat 4 times              !Write to memory address AAh.
      execute Data_1
      execute Clock_high
      execute Clock_low
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_1              !Acknowledge bit.
   execute Clock_high
   execute Clock_low
   repeat 4 times              !Write 55h to address.
      execute Data_0
      execute Clock_high
      execute Clock_low
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_1              !Acknowledge bit.
   execute Clock_high
   execute Clock_low
   call Stop

   call Start
   call Slave_address          !Access the device.
   execute Data_0
   execute Clock_high
   execute Clock_low
   execute Data_1
   execute Clock_high
   execute Clock_low
   execute Data_0
   execute Clock_high
   execute Clock_low
   execute Data_0              !Write bit.
   execute Clock_high
   execute Clock_low
   execute Clock_receive_high
   execute Data_receive_0      !Acknowledge received from device.
   execute Clock_low
   repeat 4 times              !Access memory address AAh.
      execute Data_1
      execute Clock_high
      execute Clock_low
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
   execute Clock_receive_high
   execute Data_receive_0      !Acknowledge from device.
   execute Clock_low

   call Start
   call Slave_address          !Access the device.
   execute Data_0
   execute Clock_high
   execute Clock_low
   execute Data_1
   execute Clock_high
   execute Clock_low
   execute Data_0
   execute Clock_high
   execute Clock_low
   execute Data_1              !Read bit.
   execute Clock_high
   execute Clock_low
   execute Data_receive_0      !Acknowledge from device.
   execute Clock_receive_high
   execute Clock_low
   repeat 4 times              !Transmit data AAh.
      execute Data_receive_1
      execute Clock_receive_high
      execute Clock_low
      execute Data_receive_0
      execute Clock_receive_high
      execute Clock_low
   end repeat

   call Stop

end unit

unit "Test Address 011"
   execute Set_values
   execute Address_011         !Set address of device.
   call Start
   call Slave_address          !Address the particular device.
   execute Data_0
   execute Clock_high
   execute Clock_low
   repeat 2 times
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_0              !Write bit.
   execute Clock_high
   execute Clock_low
   execute Clock_receive_high  !Acknowledge from the device.
   execute Data_receive_0
   execute Clock_low
   repeat 2 times
      execute Data_0           !Write to memory address 33h
      execute Clock_high
      execute Clock_low
      execute Data_0
      execute Clock_high
      execute Clock_low
      execute Data_1
      execute Clock_high
      execute Clock_low
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_receive_0      !Acknowledge from device.
   execute Clock_receive_high
   execute Clock_low
   repeat 2 times              !Write CCh to memory address 33h.
      execute Data_1
      execute Clock_high
      execute Clock_low
      execute Data_1
      execute Clock_high
      execute Clock_low
      execute Data_0
      execute Clock_high
      execute Clock_low
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
   execute Clock_receive_high
   execute Data_receive_0      !Acknowledge from device.
   execute Clock_low
   call Stop

   call Start
   call Slave_address          !Address a different device.
   repeat 3 times
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_0              !Write bit.
   execute Clock_high
   execute Clock_low
   execute Data_1              !Acknowledge bit.
   execute Clock_high
   execute Clock_low
   repeat 2 times              !Write to memory address 33h.
      execute Data_0
      execute Clock_high
      execute Clock_low
      execute Data_0
      execute Clock_high
      execute Clock_low
      execute Data_1
      execute Clock_high
      execute Clock_low
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_1              !Acknowledge bit.
   execute Clock_high
   execute Clock_low
   repeat 2 times              !Write 33h to the specified Address.
      execute Data_0
      execute Clock_high
      execute Clock_low
      execute Data_0
      execute Clock_high
      execute Clock_low
      execute Data_1
      execute Clock_high
      execute Clock_low
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_1              !Acknowledge bit.
   execute Clock_high
   execute Clock_low
   call Stop

   call Start
   call Slave_address          !Address the particular device.
   execute Data_0
   execute Clock_high
   execute Clock_low
   repeat 2 times
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_0              !Write to memory address.
   execute Clock_high
   execute Clock_low
   execute Clock_receive_high
   execute Data_receive_0      !Acknowledge from device.
   execute Clock_low
   repeat 2 times              !Access memory address 33h.
      execute Data_0
      execute Clock_high
      execute Clock_low
      execute Data_0
      execute Clock_high
      execute Clock_low
      execute Data_1
      execute Clock_high
      execute Clock_low
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_receive_0      !Acknowledge from device.
   execute Clock_receive_high
   execute Clock_low

   call Start
   call Slave_address          !Address the particular device.
   execute Data_0
   execute Clock_high
   execute Clock_low
   repeat 2 times
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_1              !Read bit.
   execute Clock_high
   execute Clock_low
   execute Data_receive_0      !Acknowledge from device.
   execute Clock_receive_high
   execute Clock_low
   repeat 2 times              !Transmit data CCh.
      execute Data_receive_1
      execute Clock_receive_high
      execute Clock_low
      execute Data_receive_1
      execute Clock_receive_high
      execute Clock_low
      execute Data_receive_0
      execute Clock_receive_high
      execute Clock_low
      execute Data_receive_0
      execute Clock_receive_high
      execute Clock_low
   end repeat

   call Stop

end unit

unit "Test Address 100"
   execute Set_values
   execute Address_100         !Set address of device.
   call Start
   call Slave_address          !Enable the device.
   execute Data_1
   execute Clock_high
   execute Clock_low
   repeat 2 times
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_0              !Write bit.
   execute Clock_high
   execute Clock_low
   execute Clock_receive_high  !Acknowledge bit from the device.
   execute Data_receive_0
   execute Clock_low
   repeat 2 times              !Write to address CCh.
      execute Data_1
      execute Clock_high
      execute Clock_low
      execute Data_1
      execute Clock_high
      execute Clock_low
      execute Data_0
      execute Clock_high
      execute Clock_low
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
   execute Clock_receive_high
   execute Data_receive_0      !Acknowledge received from device.
   execute Clock_low
   repeat 4 times              !Write AAh to the specified Address.
      execute Data_1
      execute Clock_high
      execute Clock_low
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
   execute Clock_receive_high  !Acknowledge from the device.
   execute Data_receive_0
   execute Clock_low
   call Stop

   call Start
   call Slave_address          !Write to a different device.
   repeat 3 times
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_0              !Write bit.
   execute Clock_high
   execute Clock_low
   execute Data_1              !Acknowledge bit.
   execute Clock_high
   execute Clock_low
   repeat 2 times              !Write to memory address CCh.
      execute Data_1
      execute Clock_high
      execute Clock_low
      execute Data_1
      execute Clock_high
      execute Clock_low
      execute Data_0
      execute Clock_high
      execute Clock_low
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_1              !Acknowledge bit.
   execute Clock_high
   execute Clock_low
   repeat 4 times              !Write 55h to address.
      execute Data_0
      execute Clock_high
      execute Clock_low
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_1              !Acknowledge bit.
   execute Clock_high
   execute Clock_low
   call Stop

   call Start
   call Slave_address          !Access the device.
   execute Data_1
   execute Clock_high
   execute Clock_low
   repeat 2 times
      execute Data_0
      execute Clock_high
      execute Clock_low
    end repeat
   execute Data_0              !Write bit.
   execute Clock_high
   execute Clock_low
   execute Clock_receive_high
   execute Data_receive_0      !Acknowledge received from device.
   execute Clock_low
   repeat 2 times              !Access memory address CCh.
      execute Data_1
      execute Clock_high
      execute Clock_low
      execute Data_1
      execute Clock_high
      execute Clock_low
      execute Data_0
      execute Clock_high
      execute Clock_low
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
   execute Clock_receive_high
   execute Data_receive_0      !Acknowledge from device.
   execute Clock_low

   call Start
   call Slave_address          !Access device.
   execute Data_1
   execute Clock_high
   execute Clock_low
   repeat 2 times
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_1              !Read bit.
   execute Clock_high
   execute Clock_low
   execute Data_receive_0      !Acknowledge from device.
   execute Clock_receive_high
   execute Clock_low
   repeat 4 times              !Transmit data AAh.
      execute Data_receive_1
      execute Clock_receive_high
      execute Clock_low
      execute Data_receive_0
      execute Clock_receive_high
      execute Clock_low
   end repeat

   call Stop

end unit


unit "Test Address 101"
   execute Set_values
   execute Address_101         !Set address of device.
   call Start
   call Slave_address          !Address the particular device.
   execute Data_1
   execute Clock_high
   execute Clock_low
   execute Data_0
   execute Clock_high
   execute Clock_low
   execute Data_1
   execute Clock_high
   execute Clock_low
   execute Data_0              !Write bit.
   execute Clock_high
   execute Clock_low
   execute Clock_receive_high  !Acknowledge from the device.
   execute Data_receive_0
   execute Clock_low
   repeat 8 times              !Write to memory address 00h.
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_receive_0      !Acknowledge from device.
   execute Clock_receive_high
   execute Clock_low
   repeat 2 times              !Write CCh to memory address 00h.
      execute Data_1
      execute Clock_high
      execute Clock_low
      execute Data_1
      execute Clock_high
      execute Clock_low
      execute Data_0
      execute Clock_high
      execute Clock_low
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
   execute Clock_receive_high
   execute Data_receive_0      !Acknowledge from device.
   execute Clock_low
   call Stop

   call Start
   call Slave_address          !Address a different device.
   repeat 3 times
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_0              !Write bit.
   execute Clock_high
   execute Clock_low
   execute Data_1              !Acknowledge bit.
   execute Clock_high
   execute Clock_low
   repeat 8 times              !Write to memory address 00h.
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_1              !Acknowledge bit.
   execute Clock_high
   execute Clock_low
   repeat 2 times              !Write 33h to the specified Address.
      execute Data_0
      execute Clock_high
      execute Clock_low
      execute Data_0
      execute Clock_high
      execute Clock_low
      execute Data_1
      execute Clock_high
      execute Clock_low
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_1              !Acknowledge bit.
   execute Clock_high
   execute Clock_low
   call Stop

   call Start
   call Slave_address          !Address the particular device.
   execute Data_1
   execute Clock_high
   execute Clock_low
   execute Data_0
   execute Clock_high
   execute Clock_low
   execute Data_1
   execute Clock_high
   execute Clock_low
   execute Data_0              !Write to memory address.
   execute Clock_high
   execute Clock_low
   execute Clock_receive_high
   execute Data_receive_0      !Acknowledge from device.
   execute Clock_low
   repeat 8 times              !Access memory address 00h.
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_receive_0      !Acknowledge from device.
   execute Clock_receive_high
   execute Clock_low

   call Start
   call Slave_address          !Address the particular device.
   execute Data_1
   execute Clock_high
   execute Clock_low
   execute Data_0
   execute Clock_high
   execute Clock_low
   execute Data_1
   execute Clock_high
   execute Clock_low
   execute Data_1              !Read bit.
   execute Clock_high
   execute Clock_low
   execute Data_receive_0      !Acknowledge from device.
   execute Clock_receive_high
   execute Clock_low
   repeat 2 times              !Transmit data CCh.
      execute Data_receive_1
      execute Clock_receive_high
      execute Clock_low
      execute Data_receive_1
      execute Clock_receive_high
      execute Clock_low
      execute Data_receive_0
      execute Clock_receive_high
      execute Clock_low
      execute Data_receive_0
      execute Clock_receive_high
      execute Clock_low
   end repeat

   call Stop

end unit


unit "Test Address 110"
   execute Set_values
   execute Address_110         !Set address of device.
   call Start
   call Slave_address          !Enable the device.
   repeat 2 times
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_0
   execute Clock_high
   execute Clock_low
   execute Data_0              !Write bit.
   execute Clock_high
   execute Clock_low
   execute Clock_receive_high  !Acknowledge bit from the device.
   execute Data_receive_0
   execute Clock_low
   repeat 8 times              !Write to address FFh.
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_receive_0      !Acknowledge received from device.
   execute Clock_receive_high
   execute Clock_low
   repeat 4 times              !Write AAh to address FFh.
      execute Data_1
      execute Clock_high
      execute Clock_low
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
   execute Clock_receive_high  !Acknowledge from the device.
   execute Data_receive_0
   execute Clock_low
   call Stop

   call Start
   call Slave_address          !Write to a different device.
   repeat 3 times
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_0              !Write bit.
   execute Clock_high
   execute Clock_low
   execute Data_1              !Acknowledge bit.
   execute Clock_high
   execute Clock_low
   repeat 4 times              !Write to memory address FFh.
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_1              !Acknowledge bit.
   execute Clock_high
   execute Clock_low
   repeat 4 times              !Write 55h to address.
      execute Data_0
      execute Clock_high
      execute Clock_low
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_1              !Acknowledge bit.
   execute Clock_high
   execute Clock_low
   call Stop

   call Start
   call Slave_address          !Access the device.
   repeat 2 times
      execute Data_1
      execute Clock_high
      execute Clock_low
    end repeat
   execute Data_0
   execute Clock_high
   execute Clock_low
   execute Data_0              !Write bit.
   execute Clock_high
   execute Clock_low
   execute Clock_receive_high
   execute Data_receive_0      !Acknowledge received from device.
   execute Clock_low
   repeat 8 times              !Access memory address FFh.
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_receive_0      !Acknowledge from device.
   execute Clock_receive_high
   execute Clock_low

   call Start
   call Slave_address          !Access device.
   repeat 2 times
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_0
   execute Clock_high
   execute Clock_low
   execute Data_1              !Read bit.
   execute Clock_high
   execute Clock_low
   execute Data_receive_0      !Acknowledge from device.
   execute Clock_receive_high
   execute Clock_low
   repeat 4 times              !Transmit data AAh.
      execute Data_receive_1
      execute Clock_receive_high
      execute Clock_low
      execute Data_receive_0
      execute Clock_receive_high
      execute Clock_low
   end repeat

   call Stop

end unit

unit "Test Address 111"
   execute Set_values
   execute Address_111         !Set address of device.
   call Start
   call Slave_address          !Address the particular device.
   repeat 3 times
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_0              !Write bit.
   execute Clock_high
   execute Clock_low
   execute Clock_receive_high  !Acknowledge from the device.
   execute Data_receive_0
   execute Clock_low
   repeat 4 times
      execute Data_0           !Write to memory address 0Fh
      execute Clock_high
      execute Clock_low
   end repeat
   repeat 4 times
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_receive_0      !Acknowledge from device.
   execute Clock_receive_high
   execute Clock_low
   repeat 2 times              !Write CCh to memory address 0Fh.
      execute Data_1
      execute Clock_high
      execute Clock_low
      execute Data_1
      execute Clock_high
      execute Clock_low
      execute Data_0
      execute Clock_high
      execute Clock_low
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
   execute Clock_receive_high
   execute Data_receive_0      !Acknowledge from device.
   execute Clock_low
   call Stop

   call Start
   call Slave_address          !Address a different device.
   execute Data_0
   execute Clock_high
   execute Clock_low
   repeat 2 times
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_0              !Write bit.
   execute Clock_high
   execute Clock_low
   execute Data_1              !Acknowledge bit.
   execute Clock_high
   execute Clock_low
   repeat 4 times
      execute Data_0           !Write to memory address 0Fh
      execute Clock_high
      execute Clock_low
   end repeat
   repeat 4 times
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_1              !Acknowledge bit.
   execute Clock_high
   execute Clock_low
   repeat 2 times              !Write 33h to the specified Address.
      execute Data_0
      execute Clock_high
      execute Clock_low
      execute Data_0
      execute Clock_high
      execute Clock_low
      execute Data_1
      execute Clock_high
      execute Clock_low
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_1              !Acknowledge bit.
   execute Clock_high
   execute Clock_low
   call Stop

   call Start
   call Slave_address          !Address the particular device.
   repeat 3 times
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_0              !Write to memory address.
   execute Clock_high
   execute Clock_low
   execute Clock_receive_high
   execute Data_receive_0      !Acknowledge from device.
   execute Clock_low
   repeat 4 times              !Access memory address 0Fh.
      execute Data_0
      execute Clock_high
      execute Clock_low
   end repeat
   repeat 4 times
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_receive_0      !Acknowledge from device.
   execute Clock_receive_high
   execute Clock_low

   call Start
   call Slave_address          !Address the particular device.
   repeat 3 times
      execute Data_1
      execute Clock_high
      execute Clock_low
   end repeat
   execute Data_1              !Read bit.
   execute Clock_high
   execute Clock_low
   execute Data_receive_0      !Acknowledge from device.
   execute Clock_receive_high
   execute Clock_low
   repeat 2 times              !Transmit data CCh.
      execute Data_receive_1
      execute Clock_receive_high
      execute Clock_low
      execute Data_receive_1
      execute Clock_receive_high
      execute Clock_low
      execute Data_receive_0
      execute Clock_receive_high
      execute Clock_low
      execute Data_receive_0
      execute Clock_receive_high
      execute Clock_low
   end repeat
   call Stop
end unit

