// 990811 bkoz

// Copyright (C) 1999 Cygnus Solutions
//
// This file is part of the GNU ISO C++ Library.  This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.

// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING.  If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.

/mnt/cdrom/yabbyyou_jesusdread/disk_2/King Tubby's - Repatriation
/mnt/cdrom/yabbyyou_jesusdread/disk_2/Vivian Jackson and the Prop
/mnt/cdrom/yabbyyou_jesusdread/disk_2/Michael Rose - Born Free (d
/mnt/cdrom/yabbyyou_jesusdread/disk_2/King Tubby's - Love Thy Nei
/mnt/cdrom/yabbyyou_jesusdread/disk_1/Vivian Jackson and the Defe
/mnt/cdrom/yabbyyou_jesusdread/disk_1/Vivian Jackson and the Ralp
/mnt/cdrom/yabbyyou_jesusdread/disk_1/Tommy McCook and Don D. Jnr
/mnt/cdrom/yabbyyou_jesusdread/disk_1/Big Youth and Vivian Jackso
/mnt/cdrom/yabbyyou_jesusdread/disk_1/King Tubby's - Big Youth Fi
/mnt/cdrom/yabbyyou_jesusdread/disk_1/Upsetter Mix - Rally Dub
/mnt/cdrom/yabbyyou_jesusdread/disk_1/Dicky Burton - God Is Watch
/mnt/cdrom/yabbyyou_jesusdread/disk_1/Pablo and Vivian Jackson - 
/mnt/cdrom/yabbyyou_jesusdread/disk_1/King Tubby's - Rock King Tu
/mnt/cdrom/TORTOISE_millions_now_living/tortoise_5
/mnt/cdrom/TORTOISE_millions_now_living/tortoise_6
/mnt/cdrom/bettycarter_i'myours,you'remine/This time
/mnt/cdrom/bettycarter_i'myours,you'remine/I'm Yours, You're Mine
/mnt/cdrom/bettycarter_i'myours,you'remine/Lonely House
/mnt/cdrom/bettycarter_i'myours,you'remine/Close Your Eyes
/mnt/cdrom/bettycarter_i'myours,you'remine/Useless Landscape
/mnt/cdrom/bettycarter_i'myours,you'remine/East of the Sun
/mnt/cdrom/bettycarter_i'myours,you'remine/September Song
/mnt/cdrom/bettycarter_it'snotaboutthemelo/Naima's Love Song
/mnt/cdrom/bettycarter_it'snotaboutthemelo/Stay As Sweet As You Are
/mnt/cdrom/bettycarter_it'snotaboutthemelo/Make Him Believe
/mnt/cdrom/bettycarter_it'snotaboutthemelo/I Should Care
/mnt/cdrom/bettycarter_it'snotaboutthemelo/Once Upon a Summertime
/mnt/cdrom/bettycarter_it'snotaboutthemelo/You Go To My Head
/mnt/cdrom/bettycarter_it'snotaboutthemelo/In the Still Of the Night
/mnt/cdrom/bettycarter_it'snotaboutthemelo/When It's Sleepy Time Down 
/mnt/cdrom/bettycarter_it'snotaboutthemelo/The Love We Had Yesterday
/mnt/cdrom/bettycarter_it'snotaboutthemelo/Dip Bag
/mnt/cdrom/bettycarter_it'snotaboutthemelo/You're Mine, Too
/mnt/cdrom/c_adderly_somethin'_else/Autumn Leaves
/mnt/cdrom/c_adderly_somethin'_else/Love For Sale
/mnt/cdrom/c_adderly_somethin'_else/Somethin' Else
/mnt/cdrom/c_adderly_somethin'_else/One For Daddy-O








