





                                       Remind
                                    Version 1.01

                                  Copyright c 1993
                                         by
                                   Knut Torgersen




            ZIP File Contents
            =================

            The zip file contains the following files:

                 REMIND.EXE          The executable.
                 REMIND.DAT          Sample .DAT file. Delete it if you 
                                     don't want it, but read the manual 
                                     first.
                 REMIND.TXT          You're reading it.
                 REVISION.TXT        Corrections and improvements. A 
                                     history file, if you like.


            Disclaimer
            ==========

            I am not to be held responsible for any damages, including -
            but not limited to  - hardware and/or  software from use  of
            this product. In no  event will I be  liable to you for  any
            damages whatsoever, including lost profits and/or savings or
            other incidental  or consequential  damages arising  out  of
            your use or inability to use the program, or any other claim
            by any other party.


            Shareware
            =========

            This program is  distributed as shareware.  This means  that
            Remind is not  free. If you  like it, you  should send me  a
            donation (say, $10, but any amount  is fine). If you  don't,
            please delete  REMIND.EXE  and it's  accompanying  data  and
            documentation files. Please encourage me to make upgrades by
            sending me your support.  As in all capitalistic  countries,
            support =  money. To  register,  send me  your  contribution
            along with your name, address (paper and e-mail). Please let
            me know  from where  you downloaded  REM110.ZIP -  or  which
            shareware  vendor   provided   it.   Please   also   include
            information on what (if any) you had to pay for it.

            Corporate/commercial/public/etc. companies using my program:
            Please contact me for special arrangements.


                                          1






            A note  to  shareware  distributors (Disk  vendors  and  BBS
            SysOps): Please feel free to distribute the program. I would
            be thankful, though, if you can notify me about it if you do
            so. You are not  to charge anyone  for your distribution  of
            Remind; except for  direct expenses you  have thereof.  This
            means that a  disk vendor may  charge for  the diskette  and
            postage only - not any "club fees".


            Contacting The Author
            =====================

            You may contact me in one of two ways:

            Electronic mail
            ---------------

            InterNet users:          knutt@ifi.uio.no

            Several other computer  networks, like CompuServe,  exchange
            mail with InterNet. Please ask your SysOp for details.

            Snail Mail
            ----------

            Knut Torgersen
            Lauritz Hervigs vei 105A
            N-3035 DRAMMEN
            Norway

            Please write me if  you need additional  help, find bugs  or
            have suggestions for improving the program.


            Requirements
            ============

            So, you may ask - what do  I need to run Remind? Testing  it
            on my system, revealed these results:

            Memory
            ------

            Using EATMEM from TurboPower Software (TSRUtil 3.3 -  HIGHLY
            RECOMMENDED!!!), my shell  program went  limp before  Remind
            did. If you have more than 128Kb of memory, you'll be  safe.
            I guess 64 is OK as well. (NOT TESTED, though!!!)

            Disk
            ----

            By itself, REMIND.EXE uses around 28  - 29Kb of disk  space.
            The sample REMIND.DAT file uses less than 3Kb. Users with  a
            computer without  a  hard  disk should  be  able  to  use  a

                                          2






            diskette without  any  problems.  Just  put  REMIND.EXE  and
            REMIND.DAT on your boot diskette as  the last entry of  your
            AUTOEXEC.BAT file.

            Screen
            ------

            Version 1.00 and  1.01 did  only support  EGA/VGA screens  I
            have now added  support for MDA  and CGA  displays as  well.
            Monochrome cards start up in mode  7. If it detects mode  7,
            Remind selects a  different color scheme.  No further  setup
            should be necessary. The program will search the video  BIOS
            for the EGA  signature. If Remind  finds it, EGA/VGA  colors
            will be the default choice. If not, the program selects  the
            CGA colors instead.

            I do strongly  recommend using Remind  on EGA or  VGA, as  I
            turn off blinking  characters, thus  enabling 16  background
            characters as well. Unfortunately,  CGA screens do not  have
            this option. It does - imho  - look nice turning off  blink.
            IBM didn't do a very good  job on the 8 original  background
            colors.


            Thank You
            =========

            I would like to say thank you to all of you helping me  with
            this program by sending me bug reports, ideas, and  support.
            Many of the features implemented since version 1.00 are  due
            to the fact that you, the users, send me good ideas.

            I haven't thrown  away a single  letter, so when  I get  the
            time to add some  features for a new  major release, I  will
            read them again, to  be sure I get  all the good ideas  into
            the program.

            Please do  send me  more suggestions,  critics, whatever.  I
            read it  all with  great interest.  It  may take  some  time
            before I have the  time to reply, but  I don't think I  have
            neglected a single letter so far.

            Again - thank you. (And if you have some money, please  feel
            free to send me some. Address above.)


            Overview - What Remind Is And What It Is Not
            ============================================

            If you are like  me, you forget  everything about the  world
            surrounding you when  you go to  turn on the  power of  your
            computer. Wouldn't it be nice to  get a reminder about  your
            bills or the date or meeting you were supposedly should show
            up to half an hour ago - at power-up? (Or whenever you  need

                                          3






            a comprehensive list of should-have done?)

            To keep track of  things to do, I made Remind. When invoked,
            the program reads a script file named REMIND.DAT to check if
            there is anything to remind you  about. There are four  date
            types you may use to remind you: A full date: [DD.MM.YY],  a
            day and month:  [DD.MM.], a day  only: [DD.]  or a  weekday:
            [DOW]. See the  Date Types  section below  for details.  If,
            after examining today's date, it finds out that at least one
            of the  entries  in  the data  file  is  true,  the  program
            displays the corresponding message on-screen.


            The Remind Script Language (RSL)
            ================================

            You may safely skip  this section if you  have no plans  for
            doing manual editing on the REMIND.DAT file. If, however you
            want to edit the file, please remember to save the file as a
            plain text file.

            The general format of  RSL is:

                 [Date]
                 [Date]
                 .
                 .
                 .
                 [Date]
                 Message Line
                 Message Line
                 .
                 .
                 .
                 Message Line
                 [End]

            All entries altering  the data  stream must  be enclosed  in
            square brackets - "[" and  "]". Square brackets are  illegal
            as characters in a Message Line, unless you want to  specify
            a [Year]  field. You  can read  more  about [Year]  in  Date
            Types.

            Date
            ----

            [Date] is  one of  the date  types specified  in Date  Types
            below. A [Date] may be followed by another [Date] as long as
            the followers are all of the same type. Thus,

                 [22.03.]
                 [23.03.]
                 Message Line
                 [End]

                                          4







            and

                 [Mon]
                 [Tue]
                 Message Line
                 [End]

            are both legal, but

                 [22.03.]
                 [23.03.]
                 [Mon]
                 Message line
                 [End]

            is not. Delete the DOW (See below) type to get it right.

            Adding more than  one [Date] to  a message  header makes  it
            possible to  display the  same message  at different  times.
            Example:

                 [31.07.93]
                 [02.08.93]
                 [03.08.93]
                 Comput'R'Us have a big sell-off on diskettes
                 [End]

            This message   appears 31 July,  2 and 3  August, but not  1
            August (Sunday).


            Message Line
            ------------

            A message  line  is  a  line  consisting  of  zero  or  more
            characters, including zero  or more [Year]  fields. This  is
            the line of  text that is  displayed when  a message  header
            becomes true. The [Year] is substituted with the  difference
            between this year and the number value in the [Year]  field.
            Here are some examples of valid Message Lines:

                 This is a message.
                 1990
                 [1990]
                 Harrison Ford is [1942] years old today.
                 He was born in 1942.

            These are invalid:

                 Today is [23.07.]
                 This is a [cool] place.
                 Funny, ] is not allowed.


                                          5






            End Field
            ---------

            Every message is terminated  by an [End] line.  Encountering
            end of file or another [date]  without finding an end  value
            is an error. Note: By using the /A switch (described below),
            the  program  will  automatically  insert  an  [End]  marker
            itself. Thus, do not write [End] statements in the  built-in
            editor!


            Date Types
            ==========

            For those  of you  familiar  with programming  languages,  I
            guess "Date Types" may look as a misspelled "Data Types" but
            that is not the case here. The Remind script language  (yes,
            it is a language. A simple one.) does not have any types  at
            all besides Date types.

            Before we go on, just a  note about the date format used  by
            Remind.  Around  the  world,  there  are  several  ways   of
            specifying a date. The American way: D/M/Y, as in 8/1/93 (no
            leading zeros).  The  British write  DD/MM/YY,  as  01/08/93
            (leading zeros).  The Swedes  have  their version  as  well:
            YYYY-MM-DD, yielding 1993-08-01.  Here in  Norway, we  write
            01.08.93 or 1/8/93. Being what I  am, I chose the  Norwegian
            DD.MM.YY version for this program.

            There are four different  ordinary date types available  and
            two for  special  purposes:  (Parenthesised  items  indicate
            where to use them.)

            [DD.MM.YY] (Header)
            -------------------

            Remind will  print  your message  if  it finds  one  with  a
            matching date in its heading. Any number is valid for DD, MM
            and YY. I.e.: You do not get an error message for constructs
            like [32.13.97]. You just won't  ever see it displayed.  (If
            you do, please contact the author at once!) Characters other
            than 0..9 are not legal. This is the only date type that can
            be deleted by  the /C switch.  See Switches  for details  on
            this subject. Note that you should NOT try writing  multiple
            dates for the same message in "reverse order", as this  will
            confuse the /C switch. Thus,

                 [02.09.93]
                 [03.09.93]

            is RECOMMENDED,  but [03.09.93]  in front  of [02.09.93]  is
            NOT. This  will  effectively  delete  your  message  if  the
            outdated part is at the bottom of the date header. The  rest
            of the dates are transferred to  the remind file, leaving  a

                                          6






            "message less" header.

            [DD.MM.] (Header)
            -----------------

            The [DD.MM.] construction resembles the [DD.MM.YY]  version.
            But there are differences: As mentioned above, [DD.MM.YY] is
            the only type you can delete with the /C switch. The purpose
            of the [DD.MM.] (please note the dot in front of the closing
            "]") construction is to display the same message every year.
            [04.07.] will display  a message  on 4  July. [29.02.]  will
            warn you every 4 years.

            [DD.] (Header)
            --------------

            This type is for displaying a  message on certain days in  a
            month: [1.] will warn you every first of a month about, say,
            paying your  rent. Note:  If you  write [31.],  only  months
            having 31 days will be selected. Any number is valid for the
            DD. parameter. But  values greater than  31 yields an  entry
            you'll never  see.  Unless  something  is  wrong  with  your
            computer, that is. (Or my programming...)

            [DOW] (Header)
            --------------

            [DOW] stands for Day Of Week. If you need to be reminded  to
            go to work Monday morning, you  may write an entry  starting
            with [Mon] in the REMIND.DAT file. The seven valid  versions
            of DOW are: Sun, Mon, Tue,  Wed, Thu, Fri and Sat. An  entry
            containing all  seven will  - of  course -  be displayed  on
            every day of the week. I have not provided an eighth value -
            All - but  may do so in future versions. Please let me  know
            if you want such a feature.

            [Year] (Message)
            ----------------

            [Year] is  treated  in  a special  manner:  Whenever  Remind
            encounters such  a  variable  in the  text,  it  substitutes
            [Year] with ThisYear - [Year]   yielding a year  difference.
            Example:

                 [13.07.]
                 Harrison Ford is [1942] years old today. He was born in
            1942.
                 [End]

            will look like

                 [13.07]
                 Harrison Ford is  51 years old  today. He  was born  in
            1942.

                                          7







            on-screen. (If the year is 1993...)

            [End] (End)
            -----------

            The only valid contents  of the [End]  variable is End.  Its
            purpose is to signal the end of the message.


            Switches
            ========

            The general format of Remind is:

                 REMIND [[/?|/H][/C][/A][/W][/B][/M|/L|/E]]

            /? Or /H (Help)
            Types a short help message describing the commands briefly.

            /C (Compress)
            Compresses the REMIND.DAT file, while displaying a  progress
            indicator. Old, outdated items will be deleted from the data
            file. This only affects entries with a [DD.MM.YY] header. If
            a date header  is older than  the current  system date,  the
            entry is removed from the file,  if the date is the  topmost
            item. Example:

                 [11.05.93]
                 [11.07.93]
                 Water the cactus
                 [End]

            If the system date at this  point is 11 July, and you  issue
            an REMIND/C, the REMIND.DAT will look like

                 [11.07.93]
                 Water the cactus
                 [End]

            after compress is done. If, however, you had an entry like

                 [11.07.93]
                 [11.05.93]
                 Water the cactus
                 [End]

            nothing will be deleted until 12 July 1993.

            Remind creates  a temporary  file called  REMIND.$$$ in  the
            same directory that  REMIND.EXE and  REMIND.DAT reside.  All
            non-[DD.MM.YY] entries plus  the not-yet deleteable  entries
            are copied  to this  file.  After completing  the  transfer,
            Remind deletes  the  original REMIND.DAT  file  and  renames

                                          8






            REMIND.$$$ to REMIND.DAT.

            /A (Add new date)
            -----------------

            Provide a window to add a date to the data file. The  editor
            is a simple one. Just type  in whatever you want to add  and
            press F2 to save  them. A window will  pop up asking you  to
            confirm that you want to save. Yes is default. There is some
            more information on the editor below.

            /W (Window)
            -----------

            If there are any  messages - window them!  It should not  be
            necessary to comment on this. The window will pop up only if
            there are any  messages. Press a  key to  continue, or  quit
            Remind. The window  is 68 characters  wide and  14 lines  of
            text.

            /B (Beep)
            ---------

            Just as with window, Remind will  only react to this  switch
            if there is a message. The beep is the familiar honk of  the
            internal speaker.

            /M (Mono-adjusted colors)
            -------------------------

            This switch selects colors suitable for a monochrome system.
            I have tested the colors by switching to MDA mode on my  VGA
            card. Use this switch if you're  on a mono system and  don't
            use the MDA text mode.(Mode 7, for those of you interested.)
            Default when  the video  card detects  a monochrome  display
            mode. This  switch  takes  precedence over  the  /L  and  /E
            switches.

            /L (Low-intensity colors)
            -------------------------

            If you don't like white and light blue background, use  this
            one. It selects  the default CGA  colors. On  a CGA  system,
            this is the default.

            /E (Enhanced colors)
            --------------------

            You should never have to select this switch, but I  included
            it for completeness. It selects the default EGA/VGA  colors.
            CGA users  testing  out this  switch,  will get  a  blinking
            window if it is used along with the /W or /A switch. If  you
            use this switch along with /L, Remind ignores /L.


                                          9







            The Editor
            ==========

            The editor  is extremely  simple. You  invoke it  by  typing
            REMIND/A at the DOS prompt. A window will pop up,  prompting
            you to  write in  a message.  By default,  line #1  contains
            today's date. Line #1 is marked "Date:" on the left, and  is
            only 8 characters long.  The next 12 lines are 60 characters
            wide. This is where your message goes. The date field is for
            entering a  date. Do  not use  brackets in  this field.  The
            program adds them automatically. If you want to add  another
            date of the same  type, you may do  so in the text  section.
            You must use brackets here.

            The editor keys are:

            Ctrl-End       Delete to end of line.
            Delete         Delete to the right of the cursor
            Backspace      Delete to the left of the cursor
            Arrow keys     As you may expect
            Home           Go to beginning of line
            End            Go to end of line
            Insert         Toggle: Ins on/off. Default is off.
            Tab            Type 8 spaces. NOTE! Insert-aware. Overwrites
                           text if Ins is off.
            F2             Abandon text or save it. To save, press enter
                           or the letter 'Y'. Esc equals no.
            Alt-X          Exit the editor. If you have typed anything, 
                           Remind will prompt you to save it. Pressing 
                           Esc at this prompt will terminate the exit, 
                           but you will lose everything you typed.


            Error Messages
            ==============

            Here is a  brief explanation to  the various error  messages
            issued by Remind. Note: Messages numbered 1 thru 50  display
            a line number.  51 and up  do not. (No,  there are not  more
            than 50 messages... I just made room for alterations.)

                  1:  Expected a [date] or a [weekday] at this point
                      The interpreter discovered some rubbish in its 
                      input. You may have forgotten to include a date  
                      header, or when editing by a stand-alone editor, 
                      forgotten to type in the brackets around a header.

                  2:  '"Cause" was not expected after "["'
                      You have typed in a non-existing date type. Check 
                      the Date Types above.

                  3:  Found "Cause" where [year] was expected
                      Only a year may be entered in brackets within the 

                                         10






                      message area.

                  4:  No ending "]" on same line as "["'
                      Opening "[" and closing "]" must be on the same 
                      line.

                  5:  Expected part of a date, found "Cause" instead
                      You typed some rubbish where there should be a 
                      date. Check for non-numeric data. (Dates are 
                      numeric.)

                  6:  Found "Cause" where a closing "]" was expected
                      There is not a closing bracket where it should be.

                  7:  Wrong date format
                      This one might just as well be called "Dot 
                      missing." You have not provided the "." separator 
                      where it should be.

                  8:  Only [DD.] may follow [DD.], not "Cause"
                  9:  Only [DD.MM.] may follow [DD.MM.], not "Cause"
                 10:  Only [DD.MM.YY] may follow [DD.MM.YY], not "Cause"
                 11:  Only [WWW] may follow [WWW], not "Cause"
                      These four messages indicate that you tried to mix
                      different date types. Remind does not allow 
                      mixing.

                 51:  File not found: "REMIND.DAT"
                      Only REMIND/A (and the help switch(es)) is allowed
                      when there is no REMIND.DAT file present. This 
                      file must reside in the same directory as the 
                      executable.

                 52:  Unexpected end of file
                      You have forgotten to include an [End] terminator 
                      on the last entry, or the file has been truncated 
                      in some way or another.


















                                         11
