!!!!    6    0    1  986413689  V76c4                                         

! Device           : 74ls200
! Function         : Static RAM 3-state 256 x 1
! revision         : B.01.00
! safeguard        : high_out_lsttl
!

sequential

! warning "Pull-ups are required to test high-impedance outputs."

assign  VCC         to pins 16
assign  GND         to pins 8

assign  Data_input  to pins 13
assign  Data_out_bar to pins 6
assign  Address     to pins 14,11,10,9,7,15,2,1

assign  Chip_select_bar to pins 5,4,3
assign  Read_write_bar  to pins 12
assign  Output_disable  to pins 5,4,3,12

family  TTL

power   VCC, GND

inputs  Data_input, Address, Chip_select_bar, Read_write_bar

outputs Data_out_bar

when  Chip_select_bar  is "1XX" inactive    Data_out_bar
when  Chip_select_bar  is "X1X" inactive    Data_out_bar
when  Chip_select_bar  is "XX1" inactive    Data_out_bar

trace Data_out_bar to Data_input, Address, Chip_select_bar, Read_write_bar

disable Data_out_bar  with Chip_select_bar  to "1XX"
disable Data_out_bar  with Chip_select_bar  to "X1X"
disable Data_out_bar  with Chip_select_bar  to "XX1"
disable Data_out_bar  with Output_disable   to "0000"


!*********************************************************************
!*********************************************************************

vector    Address_00000000
     set  Read_write_bar      to "1"
     set  Chip_select_bar     to "111"
     set  Address             to "00000000"
end vector

vector    Address_00000001
     set  Read_write_bar      to "1"
     set  Chip_select_bar     to "111"
     set  Address             to "00000001"
end vector

vector    Address_00000011
     set  Read_write_bar      to "1"
     set  Chip_select_bar     to "111"
     set  Address             to "00000011"
end vector

vector    Address_00000111
     set  Read_write_bar      to "1"
     set  Chip_select_bar     to "111"
     set  Address             to "00000111"
end vector

vector    Address_00001111
     set  Read_write_bar      to "1"
     set  Chip_select_bar     to "111"
     set  Address             to "00001111"
end vector

vector    Address_00011111
     set  Read_write_bar      to "1"
     set  Chip_select_bar     to "111"
     set  Address             to "00011111"
end vector

vector    Address_00111111
     set  Read_write_bar      to "1"
     set  Chip_select_bar     to "111"
     set  Address             to "00111111"
end vector

vector    Address_01111111
     set  Read_write_bar      to "1"
     set  Chip_select_bar     to "111"
     set  Address             to "01111111"
end vector

vector    Address_11111111
     set  Read_write_bar      to "1"
     set  Chip_select_bar     to "111"
     set  Address             to "11111111"
end vector

vector    Chip_disable
     set  Read_write_bar      to "1"
     set  Chip_select_bar     to "111"
end vector

vector    Data_high_read
     set  Read_write_bar      to "1"
     set  Chip_select_bar     to "000"
     set  Address             to "kkkkkkkk"
     set  Data_out_bar        to "1"
end vector

vector    Data_high_write
     set  Chip_select_bar     to "000"
     set  Address             to "kkkkkkkk"
     set  Read_write_bar      to "0"
     set  Data_input          to "1"
end vector

vector    Data_low_read
     set  Read_write_bar      to "1"
     set  Chip_select_bar     to "000"
     set  Address             to "kkkkkkkk"
     set  Data_out_bar        to "0"
end vector

vector    Data_low_write
     set  Chip_select_bar     to "000"
     set  Address             to "kkkkkkkk"
     set  Read_write_bar      to "0"
     set  Data_input          to "0"
end vector

vector    Read_write_high
     set  Chip_select_bar     to "000"
     set  Address             to "kkkkkkkk"
     set  Data_input          to "k"
     set  Read_write_bar      to "1"
end vector

!*********************************************************************
!*********************************************************************

sub  Read_data (Address, Data)
     execute   Address
     execute   Data
     execute   Chip_disable
end sub

sub  Write_data (Address, Data)
     execute   Address
     execute   Data
     execute   Read_write_high
     execute   Chip_disable
end sub

!*********************************************************************

unit "RAM test"

!    write zeros
     call Write_data (Address_00000000, Data_low_write)
     call Write_data (Address_00000001, Data_low_write)
     call Write_data (Address_00000011, Data_low_write)
     call Write_data (Address_00000111, Data_low_write)
     call Write_data (Address_00001111, Data_low_write)
     call Write_data (Address_00011111, Data_low_write)
     call Write_data (Address_00111111, Data_low_write)
     call Write_data (Address_01111111, Data_low_write)
     call Write_data (Address_11111111, Data_low_write)

!    test Address_00000000
     call Write_data (Address_00000000, Data_high_write)
     call Read_data  (Address_00000000, Data_low_read)
     call Read_data  (Address_00000001, Data_high_read)
     call Read_data  (Address_00000011, Data_high_read)
     call Read_data  (Address_00000111, Data_high_read)
     call Read_data  (Address_00001111, Data_high_read)
     call Read_data  (Address_00011111, Data_high_read)
     call Read_data  (Address_00111111, Data_high_read)
     call Read_data  (Address_01111111, Data_high_read)
     call Read_data  (Address_11111111, Data_high_read)
     call Write_data (Address_00000000, Data_low_write)

!    test Address_00000001
     call Write_data (Address_00000001, Data_high_write)
     call Read_data  (Address_00000000, Data_high_read)
     call Read_data  (Address_00000001, Data_low_read)
     call Read_data  (Address_00000011, Data_high_read)
     call Read_data  (Address_00000111, Data_high_read)
     call Read_data  (Address_00001111, Data_high_read)
     call Read_data  (Address_00011111, Data_high_read)
     call Read_data  (Address_00111111, Data_high_read)
     call Read_data  (Address_01111111, Data_high_read)
     call Read_data  (Address_11111111, Data_high_read)
     call Write_data (Address_00000001, Data_low_write)

!    test Address_00000011
     call Write_data (Address_00000011, Data_high_write)
     call Read_data  (Address_00000000, Data_high_read)
     call Read_data  (Address_00000001, Data_high_read)
     call Read_data  (Address_00000011, Data_low_read)
     call Read_data  (Address_00000111, Data_high_read)
     call Read_data  (Address_00001111, Data_high_read)
     call Read_data  (Address_00011111, Data_high_read)
     call Read_data  (Address_00111111, Data_high_read)
     call Read_data  (Address_01111111, Data_high_read)
     call Read_data  (Address_11111111, Data_high_read)
     call Write_data (Address_00000011, Data_low_write)

!    test Address_00000111
     call Write_data (Address_00000111, Data_high_write)
     call Read_data  (Address_00000000, Data_high_read)
     call Read_data  (Address_00000001, Data_high_read)
     call Read_data  (Address_00000011, Data_high_read)
     call Read_data  (Address_00000111, Data_low_read)
     call Read_data  (Address_00001111, Data_high_read)
     call Read_data  (Address_00011111, Data_high_read)
     call Read_data  (Address_00111111, Data_high_read)
     call Read_data  (Address_01111111, Data_high_read)
     call Read_data  (Address_11111111, Data_high_read)
     call Write_data (Address_00000111, Data_low_write)

!    test Address_00001111
     call Write_data (Address_00001111, Data_high_write)
     call Read_data  (Address_00000000, Data_high_read)
     call Read_data  (Address_00000001, Data_high_read)
     call Read_data  (Address_00000011, Data_high_read)
     call Read_data  (Address_00000111, Data_high_read)
     call Read_data  (Address_00001111, Data_low_read)
     call Read_data  (Address_00011111, Data_high_read)
     call Read_data  (Address_00111111, Data_high_read)
     call Read_data  (Address_01111111, Data_high_read)
     call Read_data  (Address_11111111, Data_high_read)
     call Write_data (Address_00001111, Data_low_write)

!    test Address_00011111
     call Write_data (Address_00011111, Data_high_write)
     call Read_data  (Address_00000000, Data_high_read)
     call Read_data  (Address_00000001, Data_high_read)
     call Read_data  (Address_00000011, Data_high_read)
     call Read_data  (Address_00000111, Data_high_read)
     call Read_data  (Address_00001111, Data_high_read)
     call Read_data  (Address_00011111, Data_low_read)
     call Read_data  (Address_00111111, Data_high_read)
     call Read_data  (Address_01111111, Data_high_read)
     call Read_data  (Address_11111111, Data_high_read)
     call Write_data (Address_00011111, Data_low_write)

!    test Address_00111111
     call Write_data (Address_00111111, Data_high_write)
     call Read_data  (Address_00000000, Data_high_read)
     call Read_data  (Address_00000001, Data_high_read)
     call Read_data  (Address_00000011, Data_high_read)
     call Read_data  (Address_00000111, Data_high_read)
     call Read_data  (Address_00001111, Data_high_read)
     call Read_data  (Address_00011111, Data_high_read)
     call Read_data  (Address_00111111, Data_low_read)
     call Read_data  (Address_01111111, Data_high_read)
     call Read_data  (Address_11111111, Data_high_read)
     call Write_data (Address_00111111, Data_low_write)

!    test Address_01111111
     call Write_data (Address_01111111, Data_high_write)
     call Read_data  (Address_00000000, Data_high_read)
     call Read_data  (Address_00000001, Data_high_read)
     call Read_data  (Address_00000011, Data_high_read)
     call Read_data  (Address_00000111, Data_high_read)
     call Read_data  (Address_00001111, Data_high_read)
     call Read_data  (Address_00011111, Data_high_read)
     call Read_data  (Address_00111111, Data_high_read)
     call Read_data  (Address_01111111, Data_low_read)
     call Read_data  (Address_11111111, Data_high_read)
     call Write_data (Address_01111111, Data_low_write)

!    test Address_11111111
     call Write_data (Address_11111111, Data_high_write)
     call Read_data  (Address_00000000, Data_high_read)
     call Read_data  (Address_00000001, Data_high_read)
     call Read_data  (Address_00000011, Data_high_read)
     call Read_data  (Address_00000111, Data_high_read)
     call Read_data  (Address_00001111, Data_high_read)
     call Read_data  (Address_00011111, Data_high_read)
     call Read_data  (Address_00111111, Data_high_read)
     call Read_data  (Address_01111111, Data_high_read)
     call Read_data  (Address_11111111, Data_low_read)
end unit

!    End of test
