Technical Specifications for Lyrics v1.3
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Lyrics is copyrighted 1994,96 by Dominic Dupuis
mailto: ddupuis@9bit.qc.ca

Here's some specifications on how works Lyrics technically. This file is
mostly adressed to programmers but anyone can read it !!!

Also, there's some frenquently asked questions answers about Lyrics.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Files: How do I reset the new songs, or a database letter?
Transfer Protocols: Why there's only Zmodem available for upload?
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

WARNING: YOU ARE NOT AUTHORIZED TO RELEASE ANY PROGRAM COMPATIBLE WITH LYRICS
         WITHOUT MY WRITTEN PERMISSION.

First of all, I would like to say that I did this program for myself. I needed
a program with some kind of database to put some order in my Lyrics and
Tablatures files. You know, searching in a directory where there's 400
different tablatures files makes me feel really bad, so that's why this
program now exists. I remarqued that most of my files came from Internet
UWP site (ftp.uwp.edu) and that's why I support that format. Also, there's
the Online Guitar Archive (http://www.guitar.net/olga/winolga/) format that I
now support from this version. You just have to use the OLGA2LYR.EXE program
to convert them (from OLGA) to Lyrics format.


About upgrading
----------------

I am the Sysop of a BBS and I know how to install a door. I hate upgrading
most of the doors that I have online. You know, when you have to do this, and
that and if it does that, do this, ........ <grrr!>. Lyrics is very simple,
you just have to run UPDATE.EXE to upgrade from any version to any version.
UPDATE.EXE reads the VERSION file and then upgrade Lyrics with the appropriate
changes.


Database files formats
-----------------------

I decided to program Lyrics with Turbo Pascal. I am a programmer and I was
learning the C++ langage when I started to work on Lyrics. I didn't want to
lose my knowledge with Turbo Pascal so that's why Lyrics is in TP. The
database is very simple:

An index file (for the groups), an album file, a song file and a database
file which contains all the text strings.

Also, there's a User file, a New Songs file and a Quotes file.

Here's all the files structures:
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

{ INDEX.* files }
     TypeIndex = record
                   group  : string[32]; { Name of the group.                 }
                   album  : longint;    { Pointer to the first album of the  }
                 end;                   { group.                             }

{ ALBUM.* files }
     TypeAlbum = record
                   name  : string[70];  { Name of the album.                 }
                   songs : longint;     { Pointer to the first song of the   }
                                        { album.                             }
                   next  : longint;     { Pointer to the next album of the   }
                 end;                   { group.                             }

{ SONGS.* files }
     TypeSongs = record
                   title   : string[70]; { Title of the song.                }
                   posdata : longint;    { Position of the song in the data  }
                                         { file.                             }
                   next    : longint;    { Pointer to the next song of the   }
                                         { album.                            }
                   upl     : longint;    { Pointer to the user that uploaded }
                 end;                    { the song.                         }

{ DATA.* files }
     The first 4 bytes (longint) of the pointed area indicates the size of
     the song to read/write, excluding those 4 bytes. The text of the song is
     compressed with the LZW compression algorithm.

{ LYRICS.QTS -=- Quotes file }
     TypeQuotes = record
                    txt  : string[75]; { Text of the quote.                  }
                    user : string[25]; { Name of the user who wrote the quote}
                    date : string[10]; { Date it was written.                }
                    time : string[10]; { Time it was written.                }
                  end;

{ LYRICS.USR -=- Users file }
     TypeUser = record
                  name : string[25]; { Name of the user.                     }
                  ul   : longint;    { Number of songs the user uploaded.    }
                  dl   : longint;    { Number of songs the user downloaded.  }
                  nbON : longint;    { Number of times the user entered the  }
                end;                 { door.                                 }

{ LYRICS.NEW -=- New songs file }
     TypeNew : file of string[79];

{ VERSION file }
     There's no format for this file since it contains only the version
     information for UPDATE.EXE and LYRICS.EXE. The version in this file must
     match the one in LYRICS.EXE for the program to run.


Well, that's it for the files formats !!!

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-


                          Frequently Asked Questions

                       -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Files: How do I reset the new songs, or a database letter?
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

       Lyrics will create all the files listed a the top of this file if they
don't already exist. This means that if you want, for example, to delete all
the QUOTES written within the door Lyrics, just delete the file LYRICS.QTS !!
Same thing for the new songs: LYRICS.NEW! Deleting a database file is *very*
dangerous. For example, if you delete "DATA\SONGS.M", all the other files
associated with the "M" database will be reseted (INDEX.M, ALBUM.M, SONGS.M
and DATA.M) and this will result in a complete reset of the "M" letter of
Lyrics.


-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Transfer Protocols: Why there's only Zmodem available for upload?
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

       Lyrics has compatibility with Xmodem, Ymodem and Zmodem protocols for
downloading songs.  You can only use Zmodem for uploading songs.  This is an
internal technical spec with DSZ which restricts the upload to Zmodem only.
Why?  When DSZ sends a file with Zmodem to another computer, it sends in the
first packet the name of the file.  Xmodem and Ymodem don't do that.  Imagine
if you send a ZIP file and the door Lyrics save it as a text file?  I'll
think about a method to avoid this little technical problem.


-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Dominic Dupuis
ddupuis@9bit.qc.ca
Le Microbe BBS (819)478-3643 (14.4k)
Log: "Lyrics" PW: <no password>
Author of Lyrics
