Todo Documentation
------------------

Program Id:   TODO
Description:  To-Do Reminder List
Programmer:   David Cook - Cookware

Welcome to Version 1.0 of TODO, a To-Do list reminder system.  This program
was written for a friend of mine who refused to buy a HP48SX unless it had
a TODO program, scheduler (with calendar) and Rolodex (he would rather have
a HP48SX instead of a Wizard etc.., but needed that functionality).  Since I
already have a rolodex and calendar program for my 48SX I only needed to 
provide this function.

Disclaimer:

  I have had my 48SX only about 3 months, so I am sure that this program can
be written better, smaller and faster.

Shareware Notice:

  Feel free to use this program and redistribute it.   I ask that if you
redistribute the program, please keep it named TODO, and please keep the
title screen intact.  If you make significant changes, please add you name
to the title screen - but keep my name as well.  If you find this program
invaluable, a $5 donation would be appreciated.  Send any money or comments
to:   David Cook, RR #1 Box 351, Whitestown Indiana  46075  - Thank you!

Installing And Running TODO:

  (1)  Send this file to your HP48SX, via the Serial Cable, into the file 'TODO'
       it will become a directory

Running...

  (2)  Simply enter the TODO directory and hit the RUN button which will be
       the very first button you see.

Features:

     *  Unlimited number of lists - up to the memory of your machine
     *  Unlimited size for the lists - up to the memory of your machine
     *  Ability to scroll the lists by the line or page
     *  Ability to jump to the beginning or end of any list
     *  Ability to change lists via a catalog
     *  Ability to create new lists or delete old lists
     *  Ability to MARK and UNMARK items on the list
     *  Ability to UNMARK ALL items on the list
     *  Ability to delete any single item on the list
     *  Ability to delete ALL MARKED items on the list
     *  Ability to insert a new item anywhere in the list
     *  Ability to sort any list of information


GROCERY LIST

  I have created a large (though somewhat incomplete) grocery lists, as a
default.  It is large so it does take a bit of time to compile the GROB.  Use
this list as an example list, and delete it if you need the memory or find it
unusable.
     
How To Use TODO
---------------

  When the program begins to run, it will display six menu items assigned
to the menu keys.  These six items are:

     LIST  -  Catalog of all lists OR create a new list OR delete a list
     ADD   -  Adds a new item to the end of the list OR inserts a blank item
     EDIT  -  Edits the text of an existing item
     SORT  -  Sort any particular list
     MARK  -  Marks an item OR Unmarks an item OR Unmarks all marked items
     EXIT  -  Exits the program and returns you to the HOME directory

The following lists the available KEYSTROKES from the main menu level:

UP ARROW                - Scroll the current list towards the top - one item
ORANGE SHIFT UP ARROW   - Move the current list toward the top - one page
BLUE SHIFT UP ARROW     - Move the current list to the top
DOWN ARROW              - Scroll the current list toward the bottom - one item
ORANGE SHIFT DOWN ARROW - Move the current list toward the bottom - one page
BLUE SHIFT DOWN ARROW   - Move the current list to the bottom
DEL (keyboard key)      - Deletes the current item
ORANGE SHIFT DEL (purge)- Deletes ALL marked items
LIST (menu key)         - Get a catalog of all lists
BLUE SHIFT LIST         - Enter the name for a brand new list
ADD  (menu key)         - Add an item to the end of the current list
BLUE SHIFT ADD          - Insert a blank line ABOVE the current item
EDIT (menu key)         - Edit the text of the current line
SORT                    - Sort the current list in alphabetical order
MARK (menu key)         - Mark OR Unmark the current item
BLUE SHIFT MARK         - Unmark ALL marked items
ORANGE SHIFT MARK       - Same as MARK without the Startrek sound
EXIT                    - Stop the program and return to the HOME directory
BLUE SHIFT EXIT         - Turn the calculate off (turning it on returns to
                          TODO automatically with no delay)


Here are some general comments about a couple of the commands...

CURRENT ITEM

The current item (eg., the item you are going to MARK, UNMARK, DELETE etc..)
is the one at the TOP OF THE DISPLAY.  To move an item into the current item
area, simply scroll (UP/DOWN arrow) until it is the top item on the list.  This
goes for catalog lists (LIST) as well.

LIST

When in LIST, all current lists in the current directory will be displayed, in
alphabetical order (eg., sorted).   WHILE you are in this mode, UP and DOWN
arrow work (but PAGE UP and PAGE DOWN and GO TO TOP and GO TO END do not work).
The DEL keyboard key will DELETE a list completely from memory.

MARK

The MARK command allows you to place a marker next to items which you have
completed (eg., check 'em off).  Hit MARK the first time to place the marker,
Hit MARK a second time (on the same item) to unmark.  When you MARK or UNMARK
a 'startrek' type beep will occur to signify the mark.  If you do not wish
to hear the sound, hit ORANGE SHIFT MARK instead.  BLUE SHIFT MARK will UNMARK
ALL currently marked entries WITHOUT deleting them from the list.

DEL

The normal 48SX DEL key serves to DELETE the current item, when hit under
the normal menu (when hit while in LIST, it deletes entire lists).  If you
hit ORANGE SHIFT DEL, the program will delete ALL marked entries - useful
for purging information you have already done.

STARTING UP

If you start the program, and the current list is not found by the program
(eg., you deleted it from the operating system level), the LIST command will
automatically be run by the program.  If the LIST command does not see any
lists in memory, the BLUE SHIFT LIST command will automatically be run, allowing
you to create a new list.

OTHER KEYBOARD KEYS

If you hit an unknown key (eg., not known to the program), the program will
issue a very low tone.  Try again!


Internals:

  This file is already too long to give you full details of the program.
Feel free to rip it apart and improve it!  One routine
you will probably want to add to your 'favorites' list is the routine named
R2D2.  This, standalone, routine takes a single number from the stack and
makes your HP48SX sound like a device on Star Trek.  The best values, for
the most convincing sound are the values 4 or 5.  Simply type

                                 5  R2D2  

for a demo.  The number indicates the length of time (eg., number of chirps)
for the speaker to make).

Another routine you will find useful is the SORT routine.  To use SORT 
independently of the program, simply place a LIST of STRINGS on Level 1 and
run SORT.  This is NOT a bubble sort, but an insertion sort, and it only takes
as long to sort the data as it does to read the data one time (plus the linear
count to find the place to put the data).

Other items you will find useful, if reverse engineering the routines...  The
variable 'DATA' contains the name of the current to-do list database.  The
system creates TEMPORARY variables (only will be seen if you abort the program
while it is running).  'W' contains a number which signifies which item is
the current iten (1 - S).  'S' contains the total number of items in the list.
If you abort during a catalog, you will see CATTEMP which contains a list of
all you to-do lists.   'W', 'S' and 'CATTEMP' are all deleted and rebuilt
by the program.

Here is a brief listing of what the other routines do:

RUN       - Runs the TODO program
SORT      - Sorts a LIST of STRINGS in level 1
MON       - High speed GROB editor, used to turn a Mark ON
MOFF      - High speed GROB editor, used to turn a Mark OFF
INSTD     - INSerts a blank item into the ToDo list above the current item
EDITD     - EDIts the current item of the current ToDo list
NEWTD     - Creates a NEW ToDo list
CATTD     - Handles the LIST command catalog of lists
SEETD     - Displays the current list (does NOT build it)
MAKTD     - Makes the GROB associated with the current list
ADDTD     - Adds a new item to the END of the current list
MARTD     - Handles Marking and Unmarking of the current item
UNMTD     - Unmarks ALL marked items in the list
WIPTD     - Deletes ALL marked items in the list
DELTD     - Deletes the current item in the list
R2D2      - Takes a repeat value from level 1 and issues StarTrek sounds

AGAIN... these routines should only be used for editing and changing the
program.  Use the RUN routine to execute the program (just hit RUN) and the
program will automatically issues these routines for you in responce to the
menu keys you hit (as described above).  I provided the details above only
for those who want to see how it runs!

ENJOY!!!!!