[comp.sys.handhelds] Todo program

davids@epicb.truevision.com (David Spoelstra) (03/12/91)

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.  I would have used SYSEVAL statements, 
but was unsure about compatibility with other revisions (can anyone out there
answer this question?).  

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:

  The program can be found at the bottom of this post.  It is in ->ASC format
and you will need ASC-> to unscramble it.  ASC-> is openly available on this
forum as well as the HP BBS.  (The ASC routines were written by Bill Wickes.)
I'm sure that if you don't have them, an open letter to the NET would produce
them rather quickly!

  (1)  Cut the code at the bottom of the document, AFTER the CUT HERE line.
       Remove the final CUT HERE line at the bottom.

  (2)  Send this file to your HP48SX, via the Serial Cable, into the file 'TODO'

  (3)  Hit the TODO button (eg., place the contents of TODO on the command line)

  (4)  Execute  ASC->  (which you already should have loaded, or load it now)

  (5)  Store the result back to 'TODO' - it will become a directory

Running...

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

       From here on out, simply follow (6) to run it.

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 posting is already too long to give you full details of the program.
Feel free to rip it apart and improve it - just post it back!  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!!!!!

------------------------ C U T   H E R E ------------------------
%%HP: T(1)A(D)F(.);
"69A20FF74522000000402523442340D9D20E16329C2A2DBBF1301329B1C13392
03000000000000040EEDA133920300000000000005076BA19B1C133920899000
0000000020EEDA14C5A1C423293632B213019000504454C4454450D9D20E1632
3CE2284E2010359C2A2279E1AFE22D9D2047A20C2A20900000202B2130456328
4E2040441445149763204B02DCC029C2A24563284E20103597632DCC029C2A24
563284E20107597632DCC02B21305BF22D9D2047A20B21309C2A284E2010350A
132D6E2010E63CE22D6E2010E684E201075D9AE1AFE22D9D2084E20404414451
4D6E2010E66C7D19C2A2387C176BA1B21305DF22C42324563284E20404414451
49763204B02DCC0284E2010359C2A290DA14563284E20103597632DCC029C2A2
4563284E20107597632DCC02B21305DF2284E2050D414B4454493632B21305D1
0050759405454450D9D20E163247A20B21309C2A284E2010350A132D6E2010E6
3CE2284E204044144514D6E2010E66C7D19C2A29C2A2C58C1C2A207000002279
E1AFE22D9D2084E204044144514D6E2010E66C7D19C2A2387C176BA1B21305DF
22C42323CE2278BF18B9C19C2A2EBBE1AFE22D9D208DBF147A20C2A209000002
02B2130B21305DF224563284E2040441445149763204B02DCC0284E204044144
5148B9C14563284E20103597632DCC029C2A24563284E20107597632DCC0284E
2050D414B4454493632B2130691005055E4D4454450D9D20E163284E20404414
45149C2A284E2010350A132D6E2010E678BF1D6E2010E66C7D19C2A2C2A20700
0002AE8C1D6E2010E6DBBF19C2A2387C1AE8C1D6E2010E684E2040D4F46464C4
2324563284E2040441445149763204B02DCC0284E2050355454454493632B213
04E00050D41425454450D9D20E163284E20404414451484E2010756C7D178BF1
9C2A29C2A2C58C13CE22C2A207000002279E1AFE22D9D209C2A2C2A207000038
84E20107584E2030D4F4E4B21305BF22D9D209C2A2C2A20700000284E2010758
4E2040D4F46464B21305DF22AE8C184E204044144514DBBF184E201075DBBF19
C2A2387C1AE8C14563284E2040441445149763204B02DCC0284E205035545445
4493632B21306410050144444454450D9D20E1632858A184E204044144514C2A
20900000202C2A2075000459707560296E60247865602E656874702964756D6A
08496470254E445542502778656E60246F6E65647A2084E2010C8B2130AC4227
6BA19C2A2387C176BA14563284E2040441445149763204B02DCC0284E2010359
C2A276BA14563284E20103597632DCC0284E2050D414B4454493632B2130B210
050D414B4454450D9D20E1632606E1C2A20BA000020202020202020245F6D244
F6A0020205562737F6E616C6022556D696E6465627A0A0A0E2E2E275169647C2
02245796C64696E67602C4963747A0A0655627A30213E20302D2D20244166796
460234F6F6B6A09C2A2485A1E4A2051000380000000000000084E20103533920
100000000000011076BA1743A2EEDA1B9691614E19C2A284E2010350A132D6E2
010E6E4A20510000000000000000000D6E2010E6743A2EEDA1B9691ED2A2387C
184E204044144514D6E2010E66C7D19C2A2DA5E1AE8C1C4232858A1606E1634E
1DCC0284E2050355454454493632B21300E10050355454454450D9D20E163284
E201075743A2EEDA1B9691E4A20510000000000000000000DBBF1ED2A2387C10
F2E193632B21308600050341445454450D9D20E16329C2A24563284E20107597
632DCC02D13A2FA1A178BF18B9C13CE2278BF14B2A2279E1AFE22D9D2084E205
0E4547545448DBF18DBF1B21305BF22D9D209C2A2DBBF10A132D6E2010E678BF
1D6E2010E66C7D1B0BC19C2A2387C1D6E2010E6DBBF1AE8C1C423284E204035F
425454563284E20703414454554D40597632DCC024563284E20703414454554D
405976324563284E20404414451497632DCC0284E2040441445148B9C1456328
4E20103597632DCC0284E2050D414B445444B2A24563284E20104597632DCC02
330328BA2084E2010454B2A2279E1B2130D5032D9D204B2A2F17A1D8732D9D20
78BF1339201000000000001530279E18A732D9D203CE228BA2084E20107584E2
01035EBBE1B2130AFE22D9D2084E2010759C2A276BA14563284E20107597632D
CC0284E20503554544544B21305DF22B21305DF2278BF1339201000000000001
520279E18A732D9D203CE228BA2084E2010759C2A2D5CE1B2130AFE22D9D2084
E2010759C2A290DA14563284E20107597632DCC0284E20503554544544B21305
DF22B21305DF2278BF1339201000000000001450279E18A732D9D2084E204044
14451484E2010756C7D1B7FC1EFE0284E20504454C44544D13A2FA1A18B9C13C
E229C2A2279E1AFE22D9D2084E2050E454754544ED2A24563284E20104597632
DCC02B21305DF22B21305DF2278BF1339201000000000001150279E18A732D9D
2084E20404414451484E2010756C7D1B7FC14563284E20404414451497632DCC
029C2A24563284E20107597632DCC0284E2040441445148B9C14563284E20103
597632DCC029C2A24563284E20104597632DCC02B21305DF22B21305DF228DBF
1B2130496324563284E20104597632EFE024563284E20703414454554D405976
32EFE02B21305DF2284E2050D414B4454493632B21309550050E45475454450D
9D20E1632858A1C2A20150004597075602E6567702C696374702E616D656A084
96470254E445542502778656E60246F6E65647A2084E2010C8B2130AC422C2A2
0900000202DBBF176BA1C2A20F0000E2C494354576BA178BF19C2A2387C1DBBF
1B7FC178BF1E0CF1DBBF1DCC024563284E20404414451497632DCC0284E20404
41445148B9C14563284E20103597632DCC029C2A24563284E20107597632DCC0
284E2050D414B4454493632B2130B610050544494454450D9D20E1632858A1C2
A20740005446964796E67602D4F64656A08496470254E445542502778656E602
46F6E656A084E20404414451484E2010756C7D176BA147A2084E2010C8B2130A
C422C2A20900000202DBBF176BA19C2A2387C184E204044144514DBBF184E201
075DBBF1AE8C14563284E2040441445149763204B02DCC0284E2050D414B4454
493632B2130A21005094E435454450D9D20E16323CE2284E2010759C2A2D5CE1
AFE22D9D2084E2040441445149C2A284E2010759C2A290DA1C58C147A20C2A20
900000202B213076BA184E20404414451484E20107584E201035C58C176BA1B2
1305BF22D9D2047A20C2A20900000202B213084E20404414451476BA1B21305D
F224563284E2040441445149763204B02DCC0284E2010359C2A276BA14563284
E20103597632DCC0284E2050D414B4454493632B2130C510040D4F4646440D9D
20E1632743A2EEDA1B9691E4A20510000000000000000000DBBF1ED2A2387C16
34E1DBBF1C2A2070000029C2A2DA5E1AE8C193632B2130D700030D4F4E430D9D
20E1632743A2EEDA1B9691E4A20510000000000000000000DBBF1ED2A2387C16
34E1DBBF1C2A2070000389C2A2DA5E1AE8C193632B2130B70004044144514408
4E20C07425F434542595E2C4943545B20004035F4254540D9D20E1632606E1C2
A2035000A005C6561637560277169647E2E2E2A0A002020235F6274796E67602
47865602C6963747A0A0A09C2A2485A178BF18B9C147A20B21304B2A24B2A21C
432D6E201044D6E201035D6E201045D6E201034D6E201064E16323CE22D6E201
0359C2A2D5CE1AFE22D9D20D6E2010449C2A26C7D19C2A2387C145632D6E2010
4597632DCC029C2A245632D6E20103497632DCC02ED2A2D6E2010350A132D6E2
010E6D6E201044D6E2010E66C7D14B2A245632D6E20106497632DCC029C2A2D6
E2010340A132D6E2010D678BF1D6E201045D6E2010D66C7D13CE22EBBE1D6E20
10644B2A2279E1387E1AFE22D9D20D6E2010D645632D6E20106497632DCC02D6
E20103445632D6E2010D697632DCC02B21305DF22C42329C2A2387C13CE22D6E
2010644B2A2279E1AFE22D9D20D6E201045DBBF176BA1B21305BF22D9D203CE2
2D6E2010649C2A2279E1AFE22D9D20D6E20104576BA1B21305BF22D9D20D6E20
10459C2A2D6E2010649C2A290DA1C58C1DBBF176BA1D6E201045D6E201064D6E
201034C58C176BA1B21305DF22B21305DF2245632D6E20104597632DCC02D6E2
010349C2A276BA145632D6E20103497632DCC02C4232D6E201045B21305BF22D
6E2010445DF22EF53293632B21309B300C07425F434542595E2C4943545C047A
20C2A20F10000202642555944535E2C4943545C2A209100002020202140707C6
5637C2A20B10000202020224562727965637C2A2012000020202027427160756
6627579647C2A209100002020202742716075637C2A205100002020202B49677
96C2A209100002020202C456D6F6E637C2A207100002020202C496D65637C2A2
09100002020202D456C6F6E637C2A20B100002020202F42716E6765637C2A20B
10000202020205561636865637C2A2071000020202020556162737C2A20F1000
020202020596E656160707C656C2A2072000020265547454451424C45435E2C4
943545C2A20B20000202020214C46414C4641402350525F4554535C2A2012000
02020202142545943484F4B45435C2A20B100002020202146514341444F4C2A2
07100002020202245414E435C2A205200002020202245414E402350525F45545
35C2A20D1000020202022425F4343455C494C2A20B2000020202022425553535
54C402350525F4554535C2A20B10000202020234142424147454C2A201200002
0202023414C49464C4F4755425C2A20B10000202020234142525F44535C2A209
1000020202023454C4542595C2A20D10000202020254747405C414E445C2A209
100002020202741627C69636C2A2052000020202028454252435C20264255435
84C2A20B100002020202C4544545553454C2A20F100002020202D455358425F4
F4D435C2A207100002020202F4E696F6E6C2A20510000202020205561637C2A2
0B10000202020205540505542535C2A20D10000202020205F6471647F65637C2
A20B100002020202350594E4943484C2A20510000202020245F46455C2A20910
000202020245F4D41445F4C2A20B100002020202A555343494E494C2A20F1000
020274251494E435E2C4943545C2A2071000020202022425541444C2A2051000
020202023414B454C2A2091000020202023454255414C4C2A20D100002020202
34251434B4542535C2A20910000202020244F4E4554535C2A207100002020202
64C4F45525C2A2071000020202020514354514C2A20910000202020205143545
2595C2A203100002020202059454C2A20510000202020225943454C2A2071000
0202020225F4C4C435C2A201200002020202451434F402358454C4C4C2A20B20
000202020245F4254594C4C41402358454C4C435C2A20D10000202D454144535
E2C4943545C2A207100002020202241434F4E4C2A20510000202020224545464
C2A20B10000202020234849434B454E4C2A2092000020202024454C4940234F4
C4440234554535C2A205100002020202445534B4C2A20F1000020202028414D4
245525745425C2A20B10000202020284F44544F47435C2A20510000202020205
F425B4C2A20510000202020225942435C2A20710000202020225F4143545C2A2
0B10000202020235145535147454C2A20910000202020235455414B435C2A209
100002020202455525B45495C2A2011000020264943584C2A207100002020202
34C414D435C2A20310000202020234F444C2A2071000020202023425142435C2
A20B100002020202C4F42435455425C2A20B100002020202D455353554C435C2
A2091000020202023514C4D4F4E4C2A20D100002020202353414C4C4F40535C2
A20910000202020235842594D405C2A20710000202020235D454C445C2A20F10
00020202023575F4254464943584C2A2071000020202023515559444C2A20710
00020202024525F45545C2A2051000020202024555E414C2A20F100002020202
758494455464943584B213063A00302555E430D9D20E1632FD332D9D2084E204
0441445149C2A26C7D1B2130F1732D9D2084E205034144545448DBF1B21305DF
228DBF19C2A24563284E20107597632DCC0284E2040441445148B9C14563284E
20103597632DCC0247A20C2A20D0000C4943545C2A20B0000144444C2A20D000
054449445C2A20D000035F42545C2A20D0000D41425B4C2A20D000054859445B
2130D511284E2050D414B44544330328BA204B2A24B2A2279E1B2130D5032D9D
20683A2F17A1D8732D9D2078BF1339201000000000001210279E18A73284E205
014444445445DF2278BF1339201000000000001110279E18A73284E205034144
545445DF2278BF1339201000000000003110279E18A73284E2050E4547545445
DF2278BF1339201000000000001530279E18A732D9D203CE228BA2084E201075
84E201035EBBE1B2130AFE22D9D2084E2010759C2A276BA14563284E20107597
632DCC0284E20503554544544B21305BF22D9D20339201000000000000050339
2099900000000000204C5A1B21305DF22B21305DF2278BF13392010000000000
01520279E18A732D9D203CE228BA2084E2010759C2A2D5CE1B2130AFE22D9D20
84E2010759C2A290DA14563284E20107597632DCC0284E20503554544544B213
05BF22D9D203392010000000000000503392099900000000000204C5A1B21305
DF22B21305DF2278BF1339201000000000003530279E18A732D9D2084E201035
4563284E20107597632DCC0284E20503554544544B21305DF2278BF133920100
0000000003520279E18A732D9D209C2A24563284E20107597632DCC0284E2050
3554544544B21305DF2278BF1339201000000000001510279E18A732D9D20803
A284E20402523442384E2050D414254544B21305DF2278BF1339201000000000
002510279E18A73284E2050D4142545445DF2278BF1339201000000000003510
279E18A73284E205055E4D445445DF2278BF1339201000000000001410279E18
A732D9D2084E20404414451484E204035F425454563284E20404414451497632
04B02DCC0284E2050D414B44544B21305DF2278BF13392010000000000014502
79E18A73284E20504454C445445DF2278BF1339201000000000002450279E18A
73284E205075940545445DF2278BF1339201000000000001310279E18A73284E
205054449445445DF2278BF1339201000000000002520279E18A732D9D203CE2
284E201075C53A2D5CE1AFE22D9D2084E201075C53A290DA1B21305BF229C2A2
5DF224563284E20107597632DCC0284E20503554544544B21305DF2278BF1339
201000000000002530279E18A732D9D203CE2284E201035C53A290DA184E2010
75D5CE1AFE22D9D2084E201075C53A276BA1B21305BF2284E2010355DF224563
284E20107597632DCC0284E20503554544544B21305DF2278BF1339201000000
000003210279E18A73284E205094E43545445DF2278BF1339201000000000003
610279E18A732E13A15DF2278BF1339201000000000001610279E18A732D9D20
4563284E20103597632EFE024563284E20107597632EFE028DBF147A2084E203
02555E4B21309DF024B2A269112041A1303A1B21305DF2233920100000000000
00503392099900000000000204C5A1B21305DF228DBF1B21304963293632B213
09FAA"
------------------------ C U T   H E R E ------------------------

diamant@hpfcbig.SDE.HP.COM (John Diamant) (03/15/91)

David Spoelstra (davids@epicb.truevision.com) writes:

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

Neat program!  Thanks for posting it.

> 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!

In case other people have the same comments, I'm posting my comments here
rather than sending them directly to you.  Just in case this wouldn't get
to you otherwise, I'm also mailing this directly to your email address.

Please let me know if you're interested in making the below changes.  If not,
I will make them myself, and can send them back to you (for a repost by one
of us).

> Installing And Running TODO:

> 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

I found the list screen confusing because I couldn't figure out how to add
or delete lists until I read through all the instructions.  It might be a
little more intuitive if the LIST screen provided the add and delete as
function keys.

By the way, when I created a new list, I tried to use the name "WORK-TODO"
and it aborted the program (probably the "-" is an illegal variable name.
You might want to check the variable names for validity before trying to
use them.

Also, having delete list be a single keystroke (DEL) without confirmation
seems dangerous.  I could wipe out a large amount of data by accident with
a single button.  How about a confirmation question ("Really Delete" with 
a default -- already in the input buffer of "no".)


> DEL (keyboard key)      - Deletes the current item

Again, a confirmation would be nice.  Actually, I'd be happy with just
disabling the DEL key completely and requiring MARK followed by PURGE to
do any delete (since it's two keystrokes, it's unlikely to happen by mistake,
especially since PURGE requires a shift key as well.

> BLUE SHIFT LIST         - Enter the name for a brand new list

If this were a function key in the LIST screen, it wouldn't require a
separate keystroke to remember.

> EDIT (menu key)         - Edit the text of the current line

It would be great if you would include the original contents of the item
in the input buffer so editing would not always require a complete retype
for minor changes.  I believe it's just a variant on the INPUT command.

> BLUE SHIFT EXIT         - Turn the calculate off (turning it on returns to
>                           TODO automatically with no delay)

How about defining BLUE SHIFT ON to have this function instead?  That way it
would be the normal OFF function with nothing special to remember.

Also, how about defining ON/ATTN to be the same as EXIT, so if that key is
accidentally hit, everything is left in a clean state.  This would be
especially nice if it worked in all contexts.

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

> 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

This is just a small cosmetic suggestion, but why not have some sort of toggle
instead which controls whether the beep happens or not?  If the toggle state
were maintained in a variable in the directory, then it would be persistent
and people wouldn't have to type extra keys regardless of which they
preferred.

> 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!


> 'W', 'S' and 'CATTEMP' are all deleted and rebuilt by the program.

I don't have my manual handy right now so I can't check this, but I think
if you use lower case letters for the local variables, they will be deleted
when the function exits thus avoiding the cleanup problem (if you need them
in several functions, this may not work for you, though).

Is there a font as small as the one you use which can display both upper
and lower case?  It's (mildly) annoying to get everthing displayed in 
upper case when I typed it in in lower case.  By the way, where is the font
set (so I can change it to one that displays lower case if I want to)?

Please don't interpret these comments as critical.  I'm really glad you
wrote and posted this program.  It's extremely close to what I've been looking
for for a few months (and haven't had the time to write myself).  If you
agree with the suggestions but don't have time to do some of them, I'll do
them myself and send them back.

Anyway, thanks for the great new tool!

John Diamant
Software Engineering Systems Division
Hewlett Packard Co.		ARPA Internet: diamant@hpfclp.sde.hp.com
Fort Collins, CO		UUCP:  {hpfcla,hplabs}!hpfclp!diamant

This response does not represent the official position of, or statement
by, the Hewlett-Packard Company.  The above data is provided for informational
purposes only.  It is supplied without warranty of any kind.  Note that I'm
just a 48SX user like you -- I just happen to work for HP.  I do not work in
the division that makes these calculators.

diamant@hpfcbig.SDE.HP.COM (John Diamant) (03/19/91)

I (diamant@hpfcbig.SDE.HP.COM) wrote:

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

> Please let me know if you're interested in making the below changes.  If not,
> I will make them myself, and can send them back to you (for a repost by one
> of us).

I decided to go ahead and make some of the changes.  I will post a new copy
(ASC format) in another couple days when I finish the changes.

The changes I've made so far are the following:
   Made the OFF key turn the calculator off while in TODO (instead of BLUE
	SHIFT [EXIT])
   Made the [EDIT] menu key return the current text as the default value for
	the new text (which also makes it easy to cancel an edit simply by
	pressing ENTER without making any changes).
   Made the program font-size independent (with a table for the font sizes for
	the 3 builtin available fonts) and provided a binding (+ and - keys)
	for dynamically changing the size of the font while the program is
	running.  I did this because the small font is good when you want
	lots of data, but is hard on the eyes since it's all uppercase, so I
	want different fonts at different times (depends on how wide the
	data is I'm viewing.
   Implemented horizontal scrolling (by character, 10 characters at a time,
	and beginning and end of line).  I also increased the width of the
	GROB to 2 screens (adjustable with a local variable in the TODO
	directory).

I also would like to change the LIST mode to be function key driven like the
normal interface, but haven't implemented that yet.
In addition, I'd like to trap the ATTN key using Bill Wickes IFERR routine.

I'll post either when I get all the changes finished or I expect it to be
awhile before I get the rest done (I'll probably post in a couple of days).
   
> > 'W', 'S' and 'CATTEMP' are all deleted and rebuilt by the program.

> I don't have my manual handy right now so I can't check this, but I think
> if you use lower case letters for the local variables, they will be deleted
> when the function exits thus avoiding the cleanup problem (if you need them
> in several functions, this may not work for you, though).

Sorry, I was confused.  I withdraw the suggestion.  The lower versus upper
case issue is just convention.  Local variables will only work if the variables
are not shared between functions and they are, so they won't address this
problem.

John Diamant
Software Engineering Systems Division
Hewlett Packard Co.		ARPA Internet: diamant@hpfclp.sde.hp.com
Fort Collins, CO		UUCP:  {hpfcla,hplabs}!hpfclp!diamant

This response does not represent the official position of, or statement
by, the Hewlett-Packard Company.  The above data is provided for informational
purposes only.  It is supplied without warranty of any kind.  Note that I'm
just a 48SX user like you -- I just happen to work for HP.  I do not work in
the division that makes these calculators.

John_Diamant@f170.n771.z3.fidonet.org (John Diamant) (03/27/91)

From: diamant@hpfcbig.SDE.HP.COM (John Diamant)
Lines: 610
Organization: HP SESD, Fort Collins, CO

Program Id:   TODO
Description:  To-Do Reminder List
Programmer:   David Cook - Cookware
Modified:     John Diamant (modifications version 1.0)

This program is a generic list manager for the 48SX calculator.  It
works not only on todo lists, but any other type of list you care to
manage in the calculator (limited by memory of the calculator).

I'm not going to repeat most of the general announcements from the original
posting as I'm including it at the bottom of this message.  Please note in
particular the shareware notice in David's original comments.

Installation instructions are the same as the original (see David's note
at the bottom if you don't know how to install an ASC format program).
If you can't download via ASC and need a cleartext posting (translate
code 3), let me know (email would be fine) and I'll post that as well.
However, to avoid further delay, I'm posting this now in ASC format.
If you use this new TODO version and like it, I'd like to hear from 
you (especially if you're using the new features I added to it).  If anybody
knows David Cook's email address, I'd like to get in touch with him
to merge my changes into his master version.

The next response to this note will be a question I have regarding
memory efficiency and PICT.  If I find out how to improve the memory
efficiency, I'll probably post a modified version, so you'll have to decide
whether you want to wait or download this version.  However, the lists you
build with this version should work just fine for a more memory efficient
version and I may be able to provide a simple patch (by the way, the 
memory usage problem is not something I introduced with my changes but my
increasing the width of the PICT made it more likely to occur).

To run the program, simply press the RUN button in the variables menu in
the TODO directory (I use the following entry in my CST menu to start up the
program:  { "LIST" << TODO RUN >> })

By the way, I have truncated the grocery list substantially from the 
originalposting due to it's taking too much space.  If you want the full one,
download
the original posting.

The changes from David's version 1.0 are as follows:

   Made the OFF key turn the calculator off while in TODO (instead of BLUE
	SHIFT [EXIT])
   Made the [EDIT] menu key return the current text as the default value for
	the new text (which also makes it easy to cancel an edit simply by
	pressing ENTER without making any changes).
   Made the program font-size independent (with a table for the font sizes 
for
	the 3 builtin available fonts) and provided a binding (+ and - keys)
	for dynamically changing the size of the font while the program is
	running.  I did this because the small font is good when you want
	lots of data, but is hard on the eyes since it's all uppercase, so I
	want different fonts at different times (depends on how wide the
	data is I'm viewing.
   Implemented horizontal scrolling (by character, 10 characters at a time,
	and beginning and end of line).  I also increased the width of the
	virtual screen (adjustable with a local variable in the TODO
	directory).
   LIST mode (choose which list to make active) has been extended to support
	USE, NEW, and DEL menu buttons rather than requiring obscure
	keystrokes for these functions.
   Made LIST mode more robust (added beeps for incorrect keystrokes).
   Deleting a list asks for confirmation (default is no).
   Changed the keybinding for deleting an item from a list from DEL to
	BLUE SHIFT DEL to avoid risk of accidental deletion.
   The ATTN key is trapped via IFERR and appropriate cleanup is done
	(note that I do not rely on Bill Wickes special version of IFERR --
	the builtin was sufficient for my purpose -- to make sure the 
	program cleaned up if I accidentally used ATTN instead of EXIT)
   Disables clock display during program execution and restores initial
	state of clock (displayed or not) on exit (even with ATTN key).
   Made the function which create new lists do some error checking on legal
	names (using "V" mode for INPUT).
   Removed reordering of vars on exit to put RUN at beginning since I
	run the program from CST and I don't want to pay the run-time cost
	every time I exit to reorder the VARS menu.

> I'll post either when I get all the changes finished or I expect it to be
> awhile before I get the rest done (I'll probably post in a couple of days).

Sorry it was more than a couple of days, but I think you'll be glad I waited
as I did add some functionality almost each day I delayed posting.


How To Use TODO (modified from David's original instructions)
---------------

  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
LEFT ARROW		- scroll the current list towards the left - one char
ORANGE SHIFT LEFT ARROW	- scroll the current list towards the left - 10 
charsBLUE SHIFT LEFT ARROW	- scroll the current list to the left edge
RIGHT ARROW		- scroll the current list towards the right - one char
ORANGE SHIFT RIGHT ARROW- scroll the current list towards the right - 10 
chars
BLUE SHIFT RIGHT ARROW	- scroll the current list to the right edge
BLUE SHIFT DEL		- 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 (also 
available			  in LIST environment as function key)
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 ON (OFF)	- Turn the calculate off (turning it on returns to
                          TODO automatically with no delay)
+			- Increase font to next larger size
-			- Decrease font to next smaller size

KEYSTROKES available from LIST screen (entered via LIST menu key):

UP ARROW                - Scroll the current list towards the top - one item
DOWN ARROW              - Scroll the current list toward the bottom - one 
item
USE (menu key)		- make top list on screen currently viewed list
ENTER			- same as USE
NEW (menu key)		- Create new list (same as BLUE SHIFT LIST above)
DEL (menu key)		- Delete top list on screen (will ask for confirmation)
+			- Increase font to next larger size
-			- Decrease font to next smaller size

Note the setting of PW below to change the width of your virtual screen.
The one I posted is set to 200 but you might prefer 262 (2 screens)if
you have sufficient memory.

New Internals (see the original posting for other internals):

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

PW	  - page width.  Number of pixels of width to make the PICT display.
	    The screen is 131 wide, so use no less than 131, but larger than
	    131 is required to get any horizontal scrolling.
EXIT	  - function used to clean up and exit (called from a few places)
CHFONT	  - takes delta for font number as argument and sets up CHARH,
	    CHARW, FONT, and H for selected font.  Values of 1, -1, and 0
	    are useful (increase font size by one, decrease font size by one,
	    and set up font attributes for initialization respectively)
FNTATTR	  - list containing font attributes (width and height in pixels) for
	    the 3 builtin fonts.  Note that the list is stored as a string
	    and converted on the fly to avoid it being seen by the TODO program
	    as a user-specified list.
CHARH	  - character height in pixels of currently selected font
CHARW	  - character width in pixels of currently selected font
H	  - number of items which can be displayed on one screen in
	    current font
FONT	  - number of currently selected font (used in ->GROB call)

Only PW should be changed by a user of the program.  The rest are only
documented if you want to change the program.  They are managed internally.


John Diamant
Software Engineering Systems Division
Hewlett Packard Co.		ARPA Internet: diamant@hpfclp.sde.hp.com
Fort Collins, CO		UUCP:  {hpfcla,hplabs}!hpfclp!diamant

This code does not come with any warranty express or implied.  It's
suitability for any purpose is not the responsibility of the authors.
This response does not represent the official position of, or statement
by, the Hewlett-Packard Company.  The above data is provided for
informational purposes only.  Note that I'm just a 48SX user like you --
I just happen to work for HP.  I do not work in the division that makes
these calculators.

-------- ASC encoding of new todo program (original TODO 1.0 docs follow)

%%HP: T(3)A(D)F(.);
"69A20FF75462000000402523442340D9D20E16329C2A2DBBF1301329B1C13392
03000000000000040EEDA133920300000000000005076BA19B1C133920899000
0000000020EEDA14C5A1C423293632B213019000504454C4454450D9D20E1632
3CE2284E2010359C2A2279E1AFE22D9D2047A20C2A20900000202B2130456328
4E2040441445149763204B02DCC029C2A24563284E20103597632DCC029C2A24
563284E20107597632DCC02B21305BF22D9D2047A20B21309C2A284E2010350A
132D6E2010E63CE22D6E2010E684E201075D9AE1AFE22D9D2084E20404414451
4D6E2010E66C7D19C2A2387C176BA1B21305DF22C42324563284E20404414451
49763204B02DCC0284E2010359C2A290DA14563284E20103597632DCC029C2A2
4563284E20107597632DCC02B21305DF2284E2050D414B4454493632B21305D1
0050759405454450D9D20E163247A20B21309C2A284E2010350A132D6E2010E6
3CE2284E204044144514D6E2010E66C7D19C2A29C2A2C58C1C2A207000002279
E1AFE22D9D2084E204044144514D6E2010E66C7D19C2A2387C176BA1B21305DF
22C42323CE2278BF18B9C19C2A2EBBE1AFE22D9D208DBF147A20C2A209000002
02B2130B21305DF224563284E2040441445149763204B02DCC0284E204044144
5148B9C14563284E20103597632DCC029C2A24563284E20107597632DCC0284E
2050D414B4454493632B2130691005055E4D4454450D9D20E163284E20404414
45149C2A284E2010350A132D6E2010E678BF1D6E2010E66C7D19C2A2C2A20700
0002AE8C1D6E2010E6DBBF19C2A2387C1AE8C1D6E2010E684E2040D4F46464C4
2324563284E2040441445149763204B02DCC0284E2050355454454493632B213
04E00050D41425454450D9D20E163284E20404414451484E2010756C7D178BF1
9C2A29C2A2C58C13CE22C2A207000002279E1AFE22D9D209C2A2C2A207000038
84E20107584E2030D4F4E4B21305BF22D9D209C2A2C2A20700000284E2010758
4E2040D4F46464B21305DF22AE8C184E204044144514DBBF184E201075DBBF19
C2A2387C1AE8C14563284E2040441445149763204B02DCC0284E205035545445
4493632B21306410050144444454450D9D20E1632858A184E204044144514C2A
20900000202C2A2075000459707560296E60247865602E656874702964756D6A
08496470254E445542502778656E60246F6E65647A2084E2010C8B2130AC4227
6BA19C2A2387C176BA14563284E2040441445149763204B02DCC0284E2010359
C2A276BA14563284E20103597632DCC0284E2050D414B4454493632B2130B210
050D414B4454450D9D20E1632606E1C2A207D000020202020202020245F6D244
F6A0020205562737F6E616C6022556D696E6465627A0A0E2E2E275169647C202
245796C64696E67602C4963747A0A0655627A30213E20302D2D2024416679646
0234F6F6B6A0D6F646A30213E2030202A4F686E602449616D616E647A09C2A24
85A184E20200575B969184E20103533920100000000000011076BA184E205034
84142584EEDA1B9691614E19C2A284E2010350A132D6E2010E6E4A2051000000
0000000000000D6E2010E684E20503484142584EEDA1B9691ED2A2387C184E20
4044144514D6E2010E66C7D184E204064F4E445DA5E1AE8C1C4232858A1606E1
634E1DCC0284E2050355454454493632B21304220050355454454450D9D20E16
3284E20107584E20503484142584EEDA1B969184E2010C4DBBF1ED2A2387C10F
2E193632B21303600050341445454450D9D20E16329C2A24563284E201075976
32DCC02D13A2FA1A178BF18B9C13CE2278BF14B2A2279E1AFE22D9D2084E2050
E4547545448DBF18DBF1B21305BF22D9D209C2A2DBBF10A132D6E2010E678BF1
D6E2010E66C7D1B0BC19C2A2387C1D6E2010E6DBBF1AE8C1C423284E204035F4
25454563284E20703414454554D40597632DCC024563284E20703414454554D4
05976324563284E20404414451497632DCC0284E2040441445148B9C14563284
E20103597632DCC024B2A24563284E20104597632DCC024B2A26911247A20C2A
20B0000553554C2A20B0000E45475C2A20B00004454C4B2130D511284E2050D4
14B44544330328BA2084E2010454B2A2279E1B2130D5032D9D20683A2F17A1D8
732D9D2078BF1339201000000000001210279E18A732D9D203F2A24563284E20
104597632DCC0284E2050E454754544B21305DF2278BF1339201000000000001
580279E18A732D9D20683A284E2060348464F4E44584E2050D414B44544B2130
5DF2278BF1339201000000000001590279E18A732D9D209C2A284E2060348464
F4E44584E2050D414B44544B21305DF2278BF1339201000000000001530279E1
8A732D9D203CE228BA2084E20107584E201035EBBE1B2130AFE22D9D2084E201
0759C2A276BA14563284E20107597632DCC0284E20503554544544B21305BF22
D9D203392010000000000000503392099900000000000204C5A1B21305DF22B2
1305DF2278BF1339201000000000001520279E18A732D9D203CE228BA2084E20
10759C2A2D5CE1B2130AFE22D9D2084E2010759C2A290DA14563284E20107597
632DCC0284E20503554544544B21305BF22D9D20339201000000000000050339
2099900000000000204C5A1B21305DF22B21305DF2278BF13392010000000000
01310279E18A732D9D2084E20404414451484E2010756C7D178BF1C2A2071000
4456C6564756A00202DBBF176BA147A20C2A2070000E484E2010C8B2130AC422
3CE22C2A207000095279E1AFE22D9D20B7FC1EFE0284E20504454C44544D13A2
FA1A18B9C13CE229C2A2279E1AFE22D9D2084E2050E454754544ED2A24563284
E20104597632DCC02B21305DF22B21305BF22D9D2084E205035545445448DBF1
B21305DF22B21305DF2278BF178BF1339201000000000001110279E1DBBF1339
201000000000001150279E1908E18A732D9D2084E20404414451484E2010756C
7D1B7FC14563284E20404414451497632DCC029C2A24563284E20107597632DC
C0284E2040441445148B9C14563284E20103597632DCC029C2A24563284E2010
4597632DCC02B21305DF22339201000000000000050339209990000000000020
4C5A1B21305DF228DBF1B2130496324563284E20104597632EFE024563284E20
703414454554D40597632EFE02B21305DF224B2A26911247A20C2A20D0000C49
43545C2A20B0000144444C2A20D000054449445C2A20D000035F42545C2A20D0
000D41425B4C2A20D000054859445B2130D511284E2050D414B4454493632B21
300B80050E45475454450D9D20E1632858A1C2A20150004597075602E6567702
C696374702E616D656A08496470254E445542502778656E60246F6E65647A208
4E20106584E2010C8B2130AC422C2A20900000202DBBF176BA1C2A20F0000E2C
494354576BA178BF19C2A2387C1DBBF1B7FC178BF1E0CF1DBBF1DCC024563284
E20404414451497632DCC0284E2040441445148B9C14563284E20103597632DC
C029C2A24563284E20107597632DCC0284E2050D414B4454493632B213047100
50544494454450D9D20E1632858A1C2A20740005446964796E67602D4F64656A
08496470254E445542502778656E60246F6E656A084E20404414451484E20107
56C7D13F2A292CF18B9C1C58C184E2010C8ED2A2387C1AC422C2A20900000202
DBBF176BA19C2A2387C184E204044144514DBBF184E201075DBBF1AE8C145632
84E2040441445149763204B02DCC0284E2050D414B4454493632B21309310050
94E435454450D9D20E16323CE2284E2010759C2A2D5CE1AFE22D9D2084E20404
41445149C2A284E2010759C2A290DA1C58C147A20C2A20900000202B213076BA
184E20404414451484E20107584E201035C58C176BA1B21305BF22D9D2047A20
C2A20900000202B213084E20404414451476BA1B21305DF224563284E2040441
445149763204B02DCC0284E2010359C2A276BA14563284E20103597632DCC028
4E2050D414B4454493632B2130C510040D4F4646440D9D20E163284E20503484
142584EEDA1B9691E4A20510000000000000000000DBBF1ED2A2387C1634E1DB
BF1C2A20700000284E204064F4E445DA5E1AE8C193632B21303900030D4F4E43
0D9D20E163284E20503484142584EEDA1B9691E4A20510000000000000000000
DBBF1ED2A2387C1634E1DBBF1C2A20700003884E204064F4E445DA5E1AE8C193
632B21301900040441445144084E20C07425F434542595E2C4943545B2000403
5F4254540D9D20E1632606E1C2A2035000A005C6561637560277169647E2E2E2
A0A002020235F6274796E6760247865602C6963747A0A0A09C2A2485A178BF18
B9C147A20B21304B2A24B2A21C432D6E201044D6E201035D6E201045D6E20103
4D6E201064E16323CE22D6E2010359C2A2D5CE1AFE22D9D20D6E2010449C2A26
C7D19C2A2387C145632D6E20104597632DCC029C2A245632D6E20103497632DC
C02ED2A2D6E2010350A132D6E2010E6D6E201044D6E2010E66C7D14B2A245632
D6E20106497632DCC029C2A2D6E2010340A132D6E2010D678BF1D6E201045D6E
2010D66C7D13CE22EBBE1D6E2010644B2A2279E1387E1AFE22D9D20D6E2010D6
45632D6E20106497632DCC02D6E20103445632D6E2010D697632DCC02B21305D
F22C42329C2A2387C13CE22D6E2010644B2A2279E1AFE22D9D20D6E201045DBB
F176BA1B21305BF22D9D203CE22D6E2010649C2A2279E1AFE22D9D20D6E20104
576BA1B21305BF22D9D20D6E2010459C2A2D6E2010649C2A290DA1C58C1DBBF1
76BA1D6E201045D6E201064D6E201034C58C176BA1B21305DF22B21305DF2245
632D6E20104597632DCC02D6E2010349C2A276BA145632D6E20103497632DCC0
2C4232D6E201045B21305BF22D6E2010445DF22EF53293632B21309B30020057
520339202000000000000020D10007084353425F4C4C470D9D20E163278BF184
E2010C4BB69176BA1C9432D9D20E16321C432D6E2010E6E16323CE228BA20D6E
2010E684E2020057533920200000000000131090DA1CFCE1B21308BA20D6E201
0E64B2A2B9DE1B2130387E1AFE22D9D2084E2010C4BB69176BA1B96914563284
E2010C497632DCC0284E20503554544544B21305BF22D9D208DBF13392010000
000000000503392099900000000000204C5A1B21305DF22EF53293632B2130EB
3A193632B2130071004064F4E445403392000000000000000201200050348414
2575503392000000000000000603200050348414258450339200000000000000
080320007064E4451445452570C2A20D3000B702B70243027302D702B7026302
8302D702B7026302130302D702D74500060348464F4E44560D9D20E16321C432
D6E201029E16323CE228BA2084E204064F4E445D6E20102976BA19C2A2B9DE1B
21308BA2084E204064F4E445D6E20102976BA13F2A2CFCE1B2130387E1AFE22D
9D2084E207064E44514454525B7FC184E204064F4E445D6E20102976BA178BF1
4563284E204064F4E44597632DCC026C7D1B7FC18DBF14563284E20503484142
58497632DCC024563284E2050348414257597632DCC023392010000000000004
6084E2050348414258450FA19DBB19C2A290DA14563284E20108497632DCC02B
21305BF22D9D203392010000000000000503392099900000000000204C5A1B21
305DF22EF53293632B21305F100405485944540D9D20E16323CE2284E202034C
49C2A2279E1AFE22D9D20339201000000000000049472C1B21305DF228DBF14B
2A269112858A1606E147A2084E20103584E20107584E2010C484E20108484E20
2034C4634E1B2130EFE02041A1303A193632B2130EC000C07425F434542595E2
C4943545C047A20C2A20F10000202642555944535E2C4943545C2A2091000020
20202140707C65637C2A20B10000202020224562727965637C2A201200002020
20274271607566627579647C2A209100002020202742716075637C2A20510000
2020202B4967796C2A209100002020202C456D6F6E637C2A207100002020202C
496D65637C2A209100002020202D456C6F6E637C2A20B100002020202F42716E
6765637C2A20B10000202020205561636865637C2A2071000020202020556162
737C2A20F1000020202020596E656160707C656C2A2072000020265547454451
424C45435E2C4943545C2A20B20000202020214C46414C4641402350525F4554
535C2A201200002020202142545943484F4B45435C2A20B10000202020214651
4341444F4C2A207100002020202245414E435C2A205200002020202245414E40
2350525F4554535C2A20D1000020202022425F4343455C494C2A20B200002020
202242555353554C402350525F4554535C2A20B1000020202023414242414745
4C2A2012000020202023414C49464C4F4755425C2A20B1000020202023414252
5F44535C2A2091000020202023454C4542595C2A20D10000202020254747405C
414E445C2A209100002020202741627C69636C2A205200002020202845425243
5C2026425543584C2A20B100002020202C4544545553454C2A20F10000202020
2D455358425F4F4D435C2A207100002020202F4E696F6E6C2A20510000202020
205561637C2A20B10000202020205540505542535C2A20D10000202020205F64
71647F65637C2A20B100002020202350594E4943484C2A20510000202020245F
46455C2A20910000202020245F4D41445F4C2A20B100002020202A555343494E
494B2130A1500302555E430D9D20E1632339201000000000000049313C145632
84E202034C497632DCC023392010000000000000495D2C14B2A284E206034846
4F4E445E4A205100000000000000000004563284E2010C497632DCC02FD332D9
D2084E2040441445149C2A26C7D1B2130F1732D9D2084E205034144545448DBF
1B21305DF228DBF19C2A24563284E20107597632DCC0284E2040441445148B9C
14563284E20103597632DCC0247A20C2A20D0000C4943545C2A20B0000144444
C2A20D000054449445C2A20D000035F42545C2A20D0000D41425B4C2A20D0000
54859445B2130D511284E2050D414B44544D63A1FD332D9D20330328BA204B2A
24B2A2279E1B2130D5032D9D20683A2F17A1D8732D9D2078BF13392010000000
00001590279E18A732D9D209C2A284E2060348464F4E44584E2050D414B44544
B21305DF2278BF1339201000000000001580279E18A732D9D20683A284E20603
48464F4E44584E2050D414B44544B21305DF2278BF1339201000000000001210
279E18A73284E205014444445445DF2278BF1339201000000000001430279E18
A732D9D2084E20503484142575599A184E207084353425F4C4C4B21305DF2278
BF1339201000000000001630279E18A732D9D2084E2050348414257584E20708
4353425F4C4C4B21305DF2278BF1339201000000000003630279E18A732D9D20
84E2020057533920200000000000131090DA184E2010C4BB69190DA184E20708
4353425F4C4C4B21305DF2278BF1339201000000000002630279E18A732D9D20
84E20503484142575339201000000000000010EEDA184E207084353425F4C4C4
B21305DF2278BF1339201000000000003430279E18A732D9D2084E2010C4BB69
1599A184E207084353425F4C4C4B21305DF2278BF13392010000000000024302
79E18A732D9D2084E20503484142575339201000000000000019EEDA184E2070
84353425F4C4C4B21305DF2278BF1339201000000000001110279E18A73284E2
05034144545445DF2278BF1339201000000000003110279E18A73284E2050E45
47545445DF2278BF1339201000000000001530279E18A732D9D203CE228BA208
4E20107584E201035EBBE1B2130AFE22D9D2084E2010759C2A276BA14563284E
20107597632DCC0284E20503554544544B21305BF22D9D203392010000000000
000503392099900000000000204C5A1B21305DF22B21305DF2278BF133920100
0000000001520279E18A732D9D203CE228BA2084E2010759C2A2D5CE1B2130AF
E22D9D2084E2010759C2A290DA14563284E20107597632DCC0284E2050355454
4544B21305BF22D9D203392010000000000000503392099900000000000204C5
A1B21305DF22B21305DF2278BF1339201000000000003530279E18A732D9D208
4E2010354563284E20107597632DCC0284E20503554544544B21305DF2278BF1
339201000000000003520279E18A732D9D209C2A24563284E20107597632DCC0
284E20503554544544B21305DF2278BF1339201000000000001510279E18A732
D9D20803A284E20402523442384E2050D414254544B21305DF2278BF13392010
00000000002510279E18A73284E2050D4142545445DF2278BF13392010000000
00003510279E18A73284E205055E4D445445DF2278BF13392010000000000014
10279E18A732D9D2084E20404414451484E204035F425454563284E204044144
5149763204B02DCC0284E2050D414B44544B21305DF2278BF133920100000000
0003450279E18A73284E20504454C445445DF2278BF133920100000000000245
0279E18A73284E205075940545445DF2278BF1339201000000000001310279E1
8A73284E205054449445445DF2278BF1339201000000000002520279E18A732D
9D203CE2284E20107584E201084D5CE1AFE22D9D2084E20107584E20108490DA
1B21305BF229C2A25DF224563284E20107597632DCC0284E20503554544544B2
1305DF2278BF1339201000000000002530279E18A732D9D203CE2284E2010358
4E20108490DA184E201075D5CE1AFE22D9D2084E20107584E20108476BA1B213
05BF2284E2010355DF224563284E20107597632DCC0284E20503554544544B21
305DF2278BF1339201000000000003210279E18A73284E205094E43545445DF2
278BF1339201000000000003190279E18A732E13A15DF2278BF1339201000000
000001610279E18A73284E2040548594455DF223392010000000000000503392
099900000000000204C5A1B21305DF228DBF1B213049632B2130F1732D9D208D
BF13CE22883A1BB6914B2A2279E1AFE22D9D209C2A284E204054859445B21305
BF22D9D20606E13A3A19C2A2485A14B2A2F17A18DBF19C2A284E204054859445
B21305DF22B21305DF2293632B2130B463"

---------------------- original (unmodified) announcement from David --------
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.  I would have used SYSEVAL statements,
but was unsure about compatibility with other revisions (can anyone out 
thereanswer this question?).  

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:

  The program can be found at the bottom of this post.  It is in ->ASC 
formatand you will need ASC-> to unscramble it.  ASC-> is openly available 
on this
forum as well as the HP BBS.  (The ASC routines were written by Bill Wickes.)
I'm sure that if you don't have them, an open letter to the NET would 
producethem rather quickly!

  (1)  Cut the code at the bottom of the document, AFTER the CUT HERE line.
       Remove the final CUT HERE line at the bottom.

  (2)  Send this file to your HP48SX, via the Serial Cable, into the file '
TODO'

  (3)  Hit the TODO button (eg., place the contents of TODO on the command 
line)

  (4)  Execute  ASC->  (which you already should have loaded, or load it now)

  (5)  Store the result back to 'TODO' - it will become a directory

Running...

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

       From here on out, simply follow (6) to run it.

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.  
Usethis 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 
UNMARKa '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 posting is already too long to give you full details of the program.
Feel free to rip it apart and improve it - just post it back!  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...  
Thevariable 'DATA' contains the name of the current to-do list database.  
Thesystem 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!!!!!
--- rfmail 0.3.9
 * Origin: Bonafido  Usenet <====> Fido Gateway.       (3:771/170.0)
SEEN-BY: 771/110 170 180 
FSC-Control: PATH: 771/110 

diamant@hpfcbig.SDE.HP.COM (John Diamant) (03/27/91)

Program Id:   TODO
Description:  To-Do Reminder List
Programmer:   David Cook - Cookware
Modified:     John Diamant (modifications version 1.0)

This program is a generic list manager for the 48SX calculator.  It
works not only on todo lists, but any other type of list you care to
manage in the calculator (limited by memory of the calculator).

I'm not going to repeat most of the general announcements from the original
posting as I'm including it at the bottom of this message.  Please note in
particular the shareware notice in David's original comments.

Installation instructions are the same as the original (see David's note
at the bottom if you don't know how to install an ASC format program).
If you can't download via ASC and need a cleartext posting (translate
code 3), let me know (email would be fine) and I'll post that as well.
However, to avoid further delay, I'm posting this now in ASC format.
If you use this new TODO version and like it, I'd like to hear from 
you (especially if you're using the new features I added to it).  If anybody
knows David Cook's email address, I'd like to get in touch with him
to merge my changes into his master version.

The next response to this note will be a question I have regarding
memory efficiency and PICT.  If I find out how to improve the memory
efficiency, I'll probably post a modified version, so you'll have to decide
whether you want to wait or download this version.  However, the lists you
build with this version should work just fine for a more memory efficient
version and I may be able to provide a simple patch (by the way, the 
memory usage problem is not something I introduced with my changes but my
increasing the width of the PICT made it more likely to occur).

To run the program, simply press the RUN button in the variables menu in
the TODO directory (I use the following entry in my CST menu to start up the
program:  { "LIST" << TODO RUN >> })

By the way, I have truncated the grocery list substantially from the original
posting due to it's taking too much space.  If you want the full one, download
the original posting.

The changes from David's version 1.0 are as follows:

   Made the OFF key turn the calculator off while in TODO (instead of BLUE
	SHIFT [EXIT])
   Made the [EDIT] menu key return the current text as the default value for
	the new text (which also makes it easy to cancel an edit simply by
	pressing ENTER without making any changes).
   Made the program font-size independent (with a table for the font sizes for
	the 3 builtin available fonts) and provided a binding (+ and - keys)
	for dynamically changing the size of the font while the program is
	running.  I did this because the small font is good when you want
	lots of data, but is hard on the eyes since it's all uppercase, so I
	want different fonts at different times (depends on how wide the
	data is I'm viewing.
   Implemented horizontal scrolling (by character, 10 characters at a time,
	and beginning and end of line).  I also increased the width of the
	virtual screen (adjustable with a local variable in the TODO
	directory).
   LIST mode (choose which list to make active) has been extended to support
	USE, NEW, and DEL menu buttons rather than requiring obscure
	keystrokes for these functions.
   Made LIST mode more robust (added beeps for incorrect keystrokes).
   Deleting a list asks for confirmation (default is no).
   Changed the keybinding for deleting an item from a list from DEL to
	BLUE SHIFT DEL to avoid risk of accidental deletion.
   The ATTN key is trapped via IFERR and appropriate cleanup is done
	(note that I do not rely on Bill Wickes special version of IFERR --
	the builtin was sufficient for my purpose -- to make sure the 
	program cleaned up if I accidentally used ATTN instead of EXIT)
   Disables clock display during program execution and restores initial
	state of clock (displayed or not) on exit (even with ATTN key).
   Made the function which create new lists do some error checking on legal
	names (using "V" mode for INPUT).
   Removed reordering of vars on exit to put RUN at beginning since I
	run the program from CST and I don't want to pay the run-time cost
	every time I exit to reorder the VARS menu.

> I'll post either when I get all the changes finished or I expect it to be
> awhile before I get the rest done (I'll probably post in a couple of days).

Sorry it was more than a couple of days, but I think you'll be glad I waited
as I did add some functionality almost each day I delayed posting.


How To Use TODO (modified from David's original instructions)
---------------

  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
LEFT ARROW		- scroll the current list towards the left - one char
ORANGE SHIFT LEFT ARROW	- scroll the current list towards the left - 10 chars
BLUE SHIFT LEFT ARROW	- scroll the current list to the left edge
RIGHT ARROW		- scroll the current list towards the right - one char
ORANGE SHIFT RIGHT ARROW- scroll the current list towards the right - 10 chars
BLUE SHIFT RIGHT ARROW	- scroll the current list to the right edge
BLUE SHIFT DEL		- 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 (also available
			  in LIST environment as function key)
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 ON (OFF)	- Turn the calculate off (turning it on returns to
                          TODO automatically with no delay)
+			- Increase font to next larger size
-			- Decrease font to next smaller size

KEYSTROKES available from LIST screen (entered via LIST menu key):

UP ARROW                - Scroll the current list towards the top - one item
DOWN ARROW              - Scroll the current list toward the bottom - one item
USE (menu key)		- make top list on screen currently viewed list
ENTER			- same as USE
NEW (menu key)		- Create new list (same as BLUE SHIFT LIST above)
DEL (menu key)		- Delete top list on screen (will ask for confirmation)
+			- Increase font to next larger size
-			- Decrease font to next smaller size

Note the setting of PW below to change the width of your virtual screen.
The one I posted is set to 200 but you might prefer 262 (2 screens)if
you have sufficient memory.

New Internals (see the original posting for other internals):

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

PW	  - page width.  Number of pixels of width to make the PICT display.
	    The screen is 131 wide, so use no less than 131, but larger than
	    131 is required to get any horizontal scrolling.
EXIT	  - function used to clean up and exit (called from a few places)
CHFONT	  - takes delta for font number as argument and sets up CHARH,
	    CHARW, FONT, and H for selected font.  Values of 1, -1, and 0
	    are useful (increase font size by one, decrease font size by one,
	    and set up font attributes for initialization respectively)
FNTATTR	  - list containing font attributes (width and height in pixels) for
	    the 3 builtin fonts.  Note that the list is stored as a string
	    and converted on the fly to avoid it being seen by the TODO program
	    as a user-specified list.
CHARH	  - character height in pixels of currently selected font
CHARW	  - character width in pixels of currently selected font
H	  - number of items which can be displayed on one screen in
	    current font
FONT	  - number of currently selected font (used in ->GROB call)

Only PW should be changed by a user of the program.  The rest are only
documented if you want to change the program.  They are managed internally.


John Diamant
Software Engineering Systems Division
Hewlett Packard Co.		ARPA Internet: diamant@hpfclp.sde.hp.com
Fort Collins, CO		UUCP:  {hpfcla,hplabs}!hpfclp!diamant

This code does not come with any warranty express or implied.  It's
suitability for any purpose is not the responsibility of the authors.
This response does not represent the official position of, or statement
by, the Hewlett-Packard Company.  The above data is provided for
informational purposes only.  Note that I'm just a 48SX user like you --
I just happen to work for HP.  I do not work in the division that makes
these calculators.

-------- ASC encoding of new todo program (original TODO 1.0 docs follow)

%%HP: T(3)A(D)F(.);
"69A20FF75462000000402523442340D9D20E16329C2A2DBBF1301329B1C13392
03000000000000040EEDA133920300000000000005076BA19B1C133920899000
0000000020EEDA14C5A1C423293632B213019000504454C4454450D9D20E1632
3CE2284E2010359C2A2279E1AFE22D9D2047A20C2A20900000202B2130456328
4E2040441445149763204B02DCC029C2A24563284E20103597632DCC029C2A24
563284E20107597632DCC02B21305BF22D9D2047A20B21309C2A284E2010350A
132D6E2010E63CE22D6E2010E684E201075D9AE1AFE22D9D2084E20404414451
4D6E2010E66C7D19C2A2387C176BA1B21305DF22C42324563284E20404414451
49763204B02DCC0284E2010359C2A290DA14563284E20103597632DCC029C2A2
4563284E20107597632DCC02B21305DF2284E2050D414B4454493632B21305D1
0050759405454450D9D20E163247A20B21309C2A284E2010350A132D6E2010E6
3CE2284E204044144514D6E2010E66C7D19C2A29C2A2C58C1C2A207000002279
E1AFE22D9D2084E204044144514D6E2010E66C7D19C2A2387C176BA1B21305DF
22C42323CE2278BF18B9C19C2A2EBBE1AFE22D9D208DBF147A20C2A209000002
02B2130B21305DF224563284E2040441445149763204B02DCC0284E204044144
5148B9C14563284E20103597632DCC029C2A24563284E20107597632DCC0284E
2050D414B4454493632B2130691005055E4D4454450D9D20E163284E20404414
45149C2A284E2010350A132D6E2010E678BF1D6E2010E66C7D19C2A2C2A20700
0002AE8C1D6E2010E6DBBF19C2A2387C1AE8C1D6E2010E684E2040D4F46464C4
2324563284E2040441445149763204B02DCC0284E2050355454454493632B213
04E00050D41425454450D9D20E163284E20404414451484E2010756C7D178BF1
9C2A29C2A2C58C13CE22C2A207000002279E1AFE22D9D209C2A2C2A207000038
84E20107584E2030D4F4E4B21305BF22D9D209C2A2C2A20700000284E2010758
4E2040D4F46464B21305DF22AE8C184E204044144514DBBF184E201075DBBF19
C2A2387C1AE8C14563284E2040441445149763204B02DCC0284E205035545445
4493632B21306410050144444454450D9D20E1632858A184E204044144514C2A
20900000202C2A2075000459707560296E60247865602E656874702964756D6A
08496470254E445542502778656E60246F6E65647A2084E2010C8B2130AC4227
6BA19C2A2387C176BA14563284E2040441445149763204B02DCC0284E2010359
C2A276BA14563284E20103597632DCC0284E2050D414B4454493632B2130B210
050D414B4454450D9D20E1632606E1C2A207D000020202020202020245F6D244
F6A0020205562737F6E616C6022556D696E6465627A0A0E2E2E275169647C202
245796C64696E67602C4963747A0A0655627A30213E20302D2D2024416679646
0234F6F6B6A0D6F646A30213E2030202A4F686E602449616D616E647A09C2A24
85A184E20200575B969184E20103533920100000000000011076BA184E205034
84142584EEDA1B9691614E19C2A284E2010350A132D6E2010E6E4A2051000000
0000000000000D6E2010E684E20503484142584EEDA1B9691ED2A2387C184E20
4044144514D6E2010E66C7D184E204064F4E445DA5E1AE8C1C4232858A1606E1
634E1DCC0284E2050355454454493632B21304220050355454454450D9D20E16
3284E20107584E20503484142584EEDA1B969184E2010C4DBBF1ED2A2387C10F
2E193632B21303600050341445454450D9D20E16329C2A24563284E201075976
32DCC02D13A2FA1A178BF18B9C13CE2278BF14B2A2279E1AFE22D9D2084E2050
E4547545448DBF18DBF1B21305BF22D9D209C2A2DBBF10A132D6E2010E678BF1
D6E2010E66C7D1B0BC19C2A2387C1D6E2010E6DBBF1AE8C1C423284E204035F4
25454563284E20703414454554D40597632DCC024563284E20703414454554D4
05976324563284E20404414451497632DCC0284E2040441445148B9C14563284
E20103597632DCC024B2A24563284E20104597632DCC024B2A26911247A20C2A
20B0000553554C2A20B0000E45475C2A20B00004454C4B2130D511284E2050D4
14B44544330328BA2084E2010454B2A2279E1B2130D5032D9D20683A2F17A1D8
732D9D2078BF1339201000000000001210279E18A732D9D203F2A24563284E20
104597632DCC0284E2050E454754544B21305DF2278BF1339201000000000001
580279E18A732D9D20683A284E2060348464F4E44584E2050D414B44544B2130
5DF2278BF1339201000000000001590279E18A732D9D209C2A284E2060348464
F4E44584E2050D414B44544B21305DF2278BF1339201000000000001530279E1
8A732D9D203CE228BA2084E20107584E201035EBBE1B2130AFE22D9D2084E201
0759C2A276BA14563284E20107597632DCC0284E20503554544544B21305BF22
D9D203392010000000000000503392099900000000000204C5A1B21305DF22B2
1305DF2278BF1339201000000000001520279E18A732D9D203CE228BA2084E20
10759C2A2D5CE1B2130AFE22D9D2084E2010759C2A290DA14563284E20107597
632DCC0284E20503554544544B21305BF22D9D20339201000000000000050339
2099900000000000204C5A1B21305DF22B21305DF2278BF13392010000000000
01310279E18A732D9D2084E20404414451484E2010756C7D178BF1C2A2071000
4456C6564756A00202DBBF176BA147A20C2A2070000E484E2010C8B2130AC422
3CE22C2A207000095279E1AFE22D9D20B7FC1EFE0284E20504454C44544D13A2
FA1A18B9C13CE229C2A2279E1AFE22D9D2084E2050E454754544ED2A24563284
E20104597632DCC02B21305DF22B21305BF22D9D2084E205035545445448DBF1
B21305DF22B21305DF2278BF178BF1339201000000000001110279E1DBBF1339
201000000000001150279E1908E18A732D9D2084E20404414451484E2010756C
7D1B7FC14563284E20404414451497632DCC029C2A24563284E20107597632DC
C0284E2040441445148B9C14563284E20103597632DCC029C2A24563284E2010
4597632DCC02B21305DF22339201000000000000050339209990000000000020
4C5A1B21305DF228DBF1B2130496324563284E20104597632EFE024563284E20
703414454554D40597632EFE02B21305DF224B2A26911247A20C2A20D0000C49
43545C2A20B0000144444C2A20D000054449445C2A20D000035F42545C2A20D0
000D41425B4C2A20D000054859445B2130D511284E2050D414B4454493632B21
300B80050E45475454450D9D20E1632858A1C2A20150004597075602E6567702
C696374702E616D656A08496470254E445542502778656E60246F6E65647A208
4E20106584E2010C8B2130AC422C2A20900000202DBBF176BA1C2A20F0000E2C
494354576BA178BF19C2A2387C1DBBF1B7FC178BF1E0CF1DBBF1DCC024563284
E20404414451497632DCC0284E2040441445148B9C14563284E20103597632DC
C029C2A24563284E20107597632DCC0284E2050D414B4454493632B213047100
50544494454450D9D20E1632858A1C2A20740005446964796E67602D4F64656A
08496470254E445542502778656E60246F6E656A084E20404414451484E20107
56C7D13F2A292CF18B9C1C58C184E2010C8ED2A2387C1AC422C2A20900000202
DBBF176BA19C2A2387C184E204044144514DBBF184E201075DBBF1AE8C145632
84E2040441445149763204B02DCC0284E2050D414B4454493632B21309310050
94E435454450D9D20E16323CE2284E2010759C2A2D5CE1AFE22D9D2084E20404
41445149C2A284E2010759C2A290DA1C58C147A20C2A20900000202B213076BA
184E20404414451484E20107584E201035C58C176BA1B21305BF22D9D2047A20
C2A20900000202B213084E20404414451476BA1B21305DF224563284E2040441
445149763204B02DCC0284E2010359C2A276BA14563284E20103597632DCC028
4E2050D414B4454493632B2130C510040D4F4646440D9D20E163284E20503484
142584EEDA1B9691E4A20510000000000000000000DBBF1ED2A2387C1634E1DB
BF1C2A20700000284E204064F4E445DA5E1AE8C193632B21303900030D4F4E43
0D9D20E163284E20503484142584EEDA1B9691E4A20510000000000000000000
DBBF1ED2A2387C1634E1DBBF1C2A20700003884E204064F4E445DA5E1AE8C193
632B21301900040441445144084E20C07425F434542595E2C4943545B2000403
5F4254540D9D20E1632606E1C2A2035000A005C6561637560277169647E2E2E2
A0A002020235F6274796E6760247865602C6963747A0A0A09C2A2485A178BF18
B9C147A20B21304B2A24B2A21C432D6E201044D6E201035D6E201045D6E20103
4D6E201064E16323CE22D6E2010359C2A2D5CE1AFE22D9D20D6E2010449C2A26
C7D19C2A2387C145632D6E20104597632DCC029C2A245632D6E20103497632DC
C02ED2A2D6E2010350A132D6E2010E6D6E201044D6E2010E66C7D14B2A245632
D6E20106497632DCC029C2A2D6E2010340A132D6E2010D678BF1D6E201045D6E
2010D66C7D13CE22EBBE1D6E2010644B2A2279E1387E1AFE22D9D20D6E2010D6
45632D6E20106497632DCC02D6E20103445632D6E2010D697632DCC02B21305D
F22C42329C2A2387C13CE22D6E2010644B2A2279E1AFE22D9D20D6E201045DBB
F176BA1B21305BF22D9D203CE22D6E2010649C2A2279E1AFE22D9D20D6E20104
576BA1B21305BF22D9D20D6E2010459C2A2D6E2010649C2A290DA1C58C1DBBF1
76BA1D6E201045D6E201064D6E201034C58C176BA1B21305DF22B21305DF2245
632D6E20104597632DCC02D6E2010349C2A276BA145632D6E20103497632DCC0
2C4232D6E201045B21305BF22D6E2010445DF22EF53293632B21309B30020057
520339202000000000000020D10007084353425F4C4C470D9D20E163278BF184
E2010C4BB69176BA1C9432D9D20E16321C432D6E2010E6E16323CE228BA20D6E
2010E684E2020057533920200000000000131090DA1CFCE1B21308BA20D6E201
0E64B2A2B9DE1B2130387E1AFE22D9D2084E2010C4BB69176BA1B96914563284
E2010C497632DCC0284E20503554544544B21305BF22D9D208DBF13392010000
000000000503392099900000000000204C5A1B21305DF22EF53293632B2130EB
3A193632B2130071004064F4E445403392000000000000000201200050348414
2575503392000000000000000603200050348414258450339200000000000000
080320007064E4451445452570C2A20D3000B702B70243027302D702B7026302
8302D702B7026302130302D702D74500060348464F4E44560D9D20E16321C432
D6E201029E16323CE228BA2084E204064F4E445D6E20102976BA19C2A2B9DE1B
21308BA2084E204064F4E445D6E20102976BA13F2A2CFCE1B2130387E1AFE22D
9D2084E207064E44514454525B7FC184E204064F4E445D6E20102976BA178BF1
4563284E204064F4E44597632DCC026C7D1B7FC18DBF14563284E20503484142
58497632DCC024563284E2050348414257597632DCC023392010000000000004
6084E2050348414258450FA19DBB19C2A290DA14563284E20108497632DCC02B
21305BF22D9D203392010000000000000503392099900000000000204C5A1B21
305DF22EF53293632B21305F100405485944540D9D20E16323CE2284E202034C
49C2A2279E1AFE22D9D20339201000000000000049472C1B21305DF228DBF14B
2A269112858A1606E147A2084E20103584E20107584E2010C484E20108484E20
2034C4634E1B2130EFE02041A1303A193632B2130EC000C07425F434542595E2
C4943545C047A20C2A20F10000202642555944535E2C4943545C2A2091000020
20202140707C65637C2A20B10000202020224562727965637C2A201200002020
20274271607566627579647C2A209100002020202742716075637C2A20510000
2020202B4967796C2A209100002020202C456D6F6E637C2A207100002020202C
496D65637C2A209100002020202D456C6F6E637C2A20B100002020202F42716E
6765637C2A20B10000202020205561636865637C2A2071000020202020556162
737C2A20F1000020202020596E656160707C656C2A2072000020265547454451
424C45435E2C4943545C2A20B20000202020214C46414C4641402350525F4554
535C2A201200002020202142545943484F4B45435C2A20B10000202020214651
4341444F4C2A207100002020202245414E435C2A205200002020202245414E40
2350525F4554535C2A20D1000020202022425F4343455C494C2A20B200002020
202242555353554C402350525F4554535C2A20B1000020202023414242414745
4C2A2012000020202023414C49464C4F4755425C2A20B1000020202023414252
5F44535C2A2091000020202023454C4542595C2A20D10000202020254747405C
414E445C2A209100002020202741627C69636C2A205200002020202845425243
5C2026425543584C2A20B100002020202C4544545553454C2A20F10000202020
2D455358425F4F4D435C2A207100002020202F4E696F6E6C2A20510000202020
205561637C2A20B10000202020205540505542535C2A20D10000202020205F64
71647F65637C2A20B100002020202350594E4943484C2A20510000202020245F
46455C2A20910000202020245F4D41445F4C2A20B100002020202A555343494E
494B2130A1500302555E430D9D20E1632339201000000000000049313C145632
84E202034C497632DCC023392010000000000000495D2C14B2A284E206034846
4F4E445E4A205100000000000000000004563284E2010C497632DCC02FD332D9
D2084E2040441445149C2A26C7D1B2130F1732D9D2084E205034144545448DBF
1B21305DF228DBF19C2A24563284E20107597632DCC0284E2040441445148B9C
14563284E20103597632DCC0247A20C2A20D0000C4943545C2A20B0000144444
C2A20D000054449445C2A20D000035F42545C2A20D0000D41425B4C2A20D0000
54859445B2130D511284E2050D414B44544D63A1FD332D9D20330328BA204B2A
24B2A2279E1B2130D5032D9D20683A2F17A1D8732D9D2078BF13392010000000
00001590279E18A732D9D209C2A284E2060348464F4E44584E2050D414B44544
B21305DF2278BF1339201000000000001580279E18A732D9D20683A284E20603
48464F4E44584E2050D414B44544B21305DF2278BF1339201000000000001210
279E18A73284E205014444445445DF2278BF1339201000000000001430279E18
A732D9D2084E20503484142575599A184E207084353425F4C4C4B21305DF2278
BF1339201000000000001630279E18A732D9D2084E2050348414257584E20708
4353425F4C4C4B21305DF2278BF1339201000000000003630279E18A732D9D20
84E2020057533920200000000000131090DA184E2010C4BB69190DA184E20708
4353425F4C4C4B21305DF2278BF1339201000000000002630279E18A732D9D20
84E20503484142575339201000000000000010EEDA184E207084353425F4C4C4
B21305DF2278BF1339201000000000003430279E18A732D9D2084E2010C4BB69
1599A184E207084353425F4C4C4B21305DF2278BF13392010000000000024302
79E18A732D9D2084E20503484142575339201000000000000019EEDA184E2070
84353425F4C4C4B21305DF2278BF1339201000000000001110279E18A73284E2
05034144545445DF2278BF1339201000000000003110279E18A73284E2050E45
47545445DF2278BF1339201000000000001530279E18A732D9D203CE228BA208
4E20107584E201035EBBE1B2130AFE22D9D2084E2010759C2A276BA14563284E
20107597632DCC0284E20503554544544B21305BF22D9D203392010000000000
000503392099900000000000204C5A1B21305DF22B21305DF2278BF133920100
0000000001520279E18A732D9D203CE228BA2084E2010759C2A2D5CE1B2130AF
E22D9D2084E2010759C2A290DA14563284E20107597632DCC0284E2050355454
4544B21305BF22D9D203392010000000000000503392099900000000000204C5
A1B21305DF22B21305DF2278BF1339201000000000003530279E18A732D9D208
4E2010354563284E20107597632DCC0284E20503554544544B21305DF2278BF1
339201000000000003520279E18A732D9D209C2A24563284E20107597632DCC0
284E20503554544544B21305DF2278BF1339201000000000001510279E18A732
D9D20803A284E20402523442384E2050D414254544B21305DF2278BF13392010
00000000002510279E18A73284E2050D4142545445DF2278BF13392010000000
00003510279E18A73284E205055E4D445445DF2278BF13392010000000000014
10279E18A732D9D2084E20404414451484E204035F425454563284E204044144
5149763204B02DCC0284E2050D414B44544B21305DF2278BF133920100000000
0003450279E18A73284E20504454C445445DF2278BF133920100000000000245
0279E18A73284E205075940545445DF2278BF1339201000000000001310279E1
8A73284E205054449445445DF2278BF1339201000000000002520279E18A732D
9D203CE2284E20107584E201084D5CE1AFE22D9D2084E20107584E20108490DA
1B21305BF229C2A25DF224563284E20107597632DCC0284E20503554544544B2
1305DF2278BF1339201000000000002530279E18A732D9D203CE2284E2010358
4E20108490DA184E201075D5CE1AFE22D9D2084E20107584E20108476BA1B213
05BF2284E2010355DF224563284E20107597632DCC0284E20503554544544B21
305DF2278BF1339201000000000003210279E18A73284E205094E43545445DF2
278BF1339201000000000003190279E18A732E13A15DF2278BF1339201000000
000001610279E18A73284E2040548594455DF223392010000000000000503392
099900000000000204C5A1B21305DF228DBF1B213049632B2130F1732D9D208D
BF13CE22883A1BB6914B2A2279E1AFE22D9D209C2A284E204054859445B21305
BF22D9D20606E13A3A19C2A2485A14B2A2F17A18DBF19C2A284E204054859445
B21305DF22B21305DF2293632B2130B463"

---------------------- original (unmodified) announcement from David --------
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.  I would have used SYSEVAL statements, 
but was unsure about compatibility with other revisions (can anyone out there
answer this question?).  

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:

  The program can be found at the bottom of this post.  It is in ->ASC format
and you will need ASC-> to unscramble it.  ASC-> is openly available on this
forum as well as the HP BBS.  (The ASC routines were written by Bill Wickes.)
I'm sure that if you don't have them, an open letter to the NET would produce
them rather quickly!

  (1)  Cut the code at the bottom of the document, AFTER the CUT HERE line.
       Remove the final CUT HERE line at the bottom.

  (2)  Send this file to your HP48SX, via the Serial Cable, into the file 'TODO'

  (3)  Hit the TODO button (eg., place the contents of TODO on the command line)

  (4)  Execute  ASC->  (which you already should have loaded, or load it now)

  (5)  Store the result back to 'TODO' - it will become a directory

Running...

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

       From here on out, simply follow (6) to run it.

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 posting is already too long to give you full details of the program.
Feel free to rip it apart and improve it - just post it back!  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!!!!!

diamant@hpfcbig.SDE.HP.COM (John Diamant) (03/27/91)

In my previous note (announcing my 1.0 mods to the TODO program),
I mentioned a memory usage program I encountered while working on
TODO.  I'd like to find out what solutions are available to this
problem.

The TODO program manipulates a large GROB which it creates with BLANK,
modifies one line at a time with REPL and then stores in PICT.
My problem is that the GROB may be larger than half of remaining
memory, and the above approach causes two copies to appear in
memory at once.  I need a way to manipulate the PICT directly.

One solution I see is as follows:
Use PDIM to create the correct size PICT
Use a version of REPL (syseval?) which operates directly on the
	PICT instead of on the stack

Another would be to somehow move the large GROB from the stack
to PICT rather than copying it (so that at any one time, only
one copy existed on the stack).  From what I can tell, STO requires
twice the memory of the object being stored.  This is either because
the store doesn't remove from the stack until the copy succeeds or
because the LAST STACK memory retained another copy of the stack
object.  If this second guess is true, then I need a way to turn
off LAST STACK.  I can turn off LASTARG, but haven't found out how
to turn off LAST STACK.  A solution to this problem would make
TODO be able to operate on lists twice as large for any given amount
of free memory as it can now.

If any of the proposed solutions involve a SYSEVAL, do they work
for all versions for the 48?

Thanks in advance,

John Diamant
Software Engineering Systems Division
Hewlett Packard Co.		ARPA Internet: diamant@hpfclp.sde.hp.com
Fort Collins, CO		UUCP:  {hpfcla,hplabs}!hpfclp!diamant

This response does not represent the official position of, or statement
by, the Hewlett-Packard Company.

diamant@hpfcbig.SDE.HP.COM (John Diamant) (04/03/91)

Norman Walsh (NORM%IONAACAD.BITNET@CUNYVM.CUNY.EDU) writes:
> >    Has anybody else had troubles with the TODO program that has shown
> >up here lately?  When I run it through ASC, I get CRC error, bad string.
> >Frustrating...

> Probably your d/l.

I did test downloading, converting and running the ASC file before I
posted it so I would imagine it was your kermit settings.

>  I had no trouble getting into my calc, 'cept for
> having to do an ON-A-F to get enough memory ;-).  If you have only 32kb
> of RAM, it isn't worth bothering, you don't have enough memory to use
> it.

Actually, I think it will be possible to run in 32Kb with some careful
space-savings.  Here are 3 things which will help:

1) If someone answers my question regarding how to manipulate a PICT without
   having to have two copies of the PICT in memory, it should double the
   size of lists that can fit in any given amount of free memory.

2) Set the PW variable in the TODO directory to have a value of 131 instead
   of the 200 I shipped it with or 262 which I recommend.  That will turn
   off horizontal scrolling and make the PICT only as wide as the screen.

3) Delete GROCERY.LIST or make it much smaller.  It is still quite large
   even though I already truncated it once.  If all the lists you're going
   to maintain are smaller than the GROCERY.LIST, then you should not be
   constrained to fit the large list in memory when you don't need it.

4) Use the smallest font ("-" key while displaying a list) as you'll be able
   to see more at once and the number of extra lines at the bottom of the
   GROB will use less space.

Also, a couple other comments.  Once I get #1 fixed, I will post the new
version.  My inclination is to post in clear text (and possibly ASC) so
that machines with limited memory can download.  There isn't much point
in doing that now since the program is not that space-efficient yet and
will be much better after #1.

The TODO directory is about 6K and a list occupying 1 screen is about 2.3K
(including blank space at the end of the list in the GROB).  You should be
able to manage with 32K, though fixing #1 should help a lot (because without
#1, that same list would require 4.6K free to display). 

John

rrd@hpfcso.FC.HP.COM (Ray Depew) (04/04/91)

> 1) If someone answers my question regarding how to manipulate a PICT without
>  having to have two copies of the PICT in memory, it should double the
>  size of lists that can fit in any given amount of free memory.

hey John,

Bring your 48 over to my desk and we'll see what we can do.  

Ray