
                                Organizer v1.1
             Personal Organizer for the HP48 S/G/Sx/Gx calculator
                        written in 80% SysRPL, 20% ML
                            (c) 1996 by Jack Levy

0.0 INDEX
=========

    1.0 Description

    2.0 Disclaimer
    2.1 Email-Ware

    3.0 Library Information
    3.1 Installing the Library
    3.2 Installing the Holidays Datafile
    3.3 Converting Organizer v1.0 Data

    4.0 Library Usage
    4.1 The Calendar Display
    4.2 Using the Calendar/Scheduler
    4.3 Using the TODO Manager
    4.4 Using the Phone Database
    4.5 Using the Options Menu
    4.6 Calendar/Scheduler Key Listings (Quick Reference)
    4.7 Data Maintenance
    4.8 Data Structure
    4.9 Third-party Programs

    5.0 Removing the Library
    5.1 Credits
    5.2 Known Bugs
    5.3 Version History


1.0 DESCRIPTION
===============

Organizer is a library designed to act as a Personal Information Manager, 
or PIM. The goal is to create a responsive, easy-to-use, complete PIM 
for the HP48. Organizer provides the following capabilities:

* Calendar: High speed calendar in natural form which displays any month in
  the year range of 1583 to 9999. Status area providing the current date,
  time, and several other statistics. Many different forms of navigation.
* Appointments: Edit and display appointments/daily TODOs of an unlimited
  length for any given day. Calendar marked to show days with appointments.
  Easily set alarms to go off which will pull up the appointments screen at 
  the designated time.
* Annual Events: Edit and display annual events which will show up on any
  given day every year. Included annual holidays file for USA and Sweden.
  Calendar marked to show days with annual events.
* Scribe Hooks: Complete hooks into the Scribe database to use Scribe as
  a TODO manager and Phone/Address database.
* Fast assembly display routines for quick scrolling of an unlimited number
  of appointments. All speed-critical routines written in assembly for a 
  quick interface, including calendar/status area updates and titlebars. All
  assembly display routines use and require the Universal Font Library.
* FIND function to search appointments or annual events, either matching
  case or ignoring it.
* Support for any external database, with presets for Scribe, Rolodex, 
  Foneman, and Dbase.
* Support for any external editor, with presets for StringWriter, ED,
  TED, and QED.
* Automatic detection and compensation for date and time formats.
* Commands for easy backup/restoration/purging of all data.
* Stack importing/exporting, configurable starting view, custom full-screen 
  editor, and more.


2.0 DISCLAIMER
==============

Organizer and its attached documentation are provided "as is", and are 
subject to change without prior notice. The author gives no warranty of any 
kind with regard to the software or documentation, either expressed or 
implied, including, but not limited to, the implied warranties of 
merchantability and fitness for a particular purpose. The author shall not be 
held liable for any damages, including any general, special, incidental, or 
consequential damages arising out of the use or inability to use any or all 
of the included programs.

Use of any part of the Organizer library code is not allowed for any purpose, 
except, of course, when used directly from the Organizer library. You may not 
reproduce or modify any part of the Organizer library code without prior 
written permission from the author.

Permission to copy the Organizer library as a whole, unmodified package is 
granted provided that the copies are not made or distributed for resale 
(excepting nominal copying fees).


2.1 EMAIL-WARE
==============

The Organizer library is "Email-ware". What does this mean? If you like this 
program and use it regularly, you must send me an email message. (Not too 
steep, huh?) The idea is simple: If I know people are using this library, I 
will be more inclined to update it and write new programs. My internet email 
address is levyj@engin.umich.edu.


3.0 LIBRARY INFORMATION
=======================

Size           : 12657.5 bytes
Checksum       : #420Bh [#16907h]
Version        : 1.1
Library Number : 1144

You can check these numbers by putting the library on the stack and pressing 
LS-[VAR] [BYTES]. The above statistics correspond to the distributed version, 
and if they do not match your results, your copy of the library may have been 
modified or transferred incorrectly.

Organizer has been tested on SX revisions E/J and GX revisions M/P/R.  
However, as always, you should BACKUP YOUR MEMORY before running this 
application.


3.1 INSTALLING THE LIBRARY
==========================

To install Organizer in your HP48, follow these steps:

1. Transfer the library to your HP48 using Kermit/Xmodem/etc.
2. Press the soft-key associated with the library file (ORG11.LIB).
   "Library 1144:  Org..." should now be displayed on level1 of the stack.
3. Purge the ORG11.LIB variable, leaving the library on the stack.
4. Enter the port number you want to store the library into.
   Note: For S/G users, this number must be 0. For SX/GX users, the library
   can safely be stored in any port. However, for GX users, it is
   recommended that you store it in either port 0 or 1, as execution from
   a covered port is slower.
5. Press STO.
6. Turn the calculator off and then on again.

Organizer also requires FNT1 from the Universal Font Library, also included
in the Organizer archive. If you have no other applications loaded which
require the UFL, you only need to load UFL1.LIB onto your calculator; If one
of your current programs requires FNT2, you should load on UFL3.LIB instead.
Organizer will work fine with either library loaded, but it will not run
without one. A stripped down version of the UFL package is included with
FNT1 replacement fonts. For UFL installation instructions, see the enclosed
UFL101F1.ZIP file.

To access the library, press right-shift-library (2), and then NXT until you 
see "ORGA". Press the corresponding soft-key to access the ORG menu.

It is suggested that you assign Organizer to the RS-[4] (TIME) key, as 
Organizer provides alternative environments for changing the current 
Time/Date and setting alarms. You can do this by typing the following 
commands:

{ ORG } HEAD 72.3 ASN

To use this key assignment, you MUST be in USER mode (changed by pressing 
LS-Alpha). Then, to run Organizer, all you have to do is press RS-[4].


3.2 INSTALLING THE HOLIDAYS DATAFILE
====================================

Organizer comes with a datafile of holidays which occur on the same day 
every year for the USA and Sweden. You can optionally load this data 
into ORG two ways:

As a New Datafile
-----------------
If you haven't entered any data into ORG yet, you can simply use the 
holidays file as a new datafile. To do this:

1. Transfer ORG11US.HOL or ORG11SW.HOL to your 48.
2. Recall the holiday data to your stack (by pressing the variable key).
3. Run [->DAT], either from the library menu or by typing it in. Confirm
   with the [YES] key.
4. Purge the ORG file (it is no longer needed).

Note that this will overwrite ALL data (Appointments and Annual Events),
so do not use this method unless you haven't entered anything.

Replacing Your Current Annual Events
------------------------------------
If you have already entered Appointments, you may OVERWRITE your
current annual events with a holidays file. To do this:

1. Transfer ORG11US.HOL or ORG11SW.HOL to your 48.
2. Recall the holiday data to your stack (by pressing the variable key).
4. Run [DAT->], either from the library menu or by typing it in.
5. Run the following program, or type/press the corresponding functions.
   << SWAP 2 GET 2 SWAP PUT >>
6. Run [->DAT], either from the library menu or by typing it in. Confirm
   with the [YES] key.
7. Purge the holiday file (it is no longer needed).


3.3 CONVERTING ORGANIZER V1.0 DATA
==================================

Organizer comes with a conversion program to convert version 1.0 format
data to the new v1.1 format. To convert your old data:

1. Transfer ORG11CNV.BIN to your HP48.
2. Recall your old data to the stack via Organizer v1.0's [DAT->].
3. Run ORG11CNV.BIN while the old data is on level1.
   The conversion program will prompt you to save your TODO and Phone
   Manager data. If you say yes, the converson program will save the
   data in the proper Scribe datafiles in Port0. (The data will be saved
   in a global variable if the datafiles already exist.) If you say no,
   the data will be lost.
4. Install the Organizer v1.1 library (see section 3.1).
5. Install the new data via Organizer v1.1's [->DAT], confirming [YES].


4.0 LIBRARY USAGE
=================

There are five commands in the Organizer library, each is described in detail 
throughout the documentation:

[ORG]     - Loads the main program and displays the calendar.
[DAT->]   - Recalls data to the stack.
[->DAT]   - Overwrites the current data file with data on the stack.
[PDAT]    - Erases ALL current data in your data file.
[ORGINFO] - Informational screen with my name and email address.


4.1 THE CALENDAR DISPLAY
========================

When you first load Organizer, you are brought to the main calendar display 
screen with the current date selected. The screen looks something like this:

     DECEMBER 1995
[-SU-MO-TU-WE-TH-FR-SA--------------]
                  1  2   12/21/95        <- Current date
   3  4  5  6  7  8  9   09:37:07P       <- Current time
  10 11 12 13 14 15 16
  17 18 19 20 21 22 23   APP  ANN        <- Scheduler indicators
  24 25 26 27 28 29 30
  31                     [0]             <- #Days from today
                         [354/10]        <- Current Day#/Days left in year

Most of the information should be self-explanatory. At the top of the screen, 
you will see the current month/year, with the calendar below. In the "status 
area" to the right, there are a few bits of information, described above.

When you load Organizer, it will detect your date format (MM/DD/YY or
DD.MM.YY) and your time format (AM/PM or 24 hour). All displays and
prompts will then be adjusted accordingly. Pressing the [MTH] key will
toggle your time format, and pressing [PRG] will toggle your date format.

All indicators are updated after each key press. The clock is therefore not 
running, in order to conserve battery power and increase speed. Because all 
keys repeat, the status area is not updated until a key is actually released.

There are several ways to navigate the calendar. All four arrow keys will 
move accordingly. In addition, the ['] (HOME) key will return you to the 
current date. [4] [6] will move to the next/previous days in which you have
appointments (within a month only). [+] [-] or [LS]-[DOWN/UP] will go 
forward/back a month. [*] [/] or [RS]-[DOWN/UP] will go forward/back 
a year. If any of these keys change to a non-existing day (i.e. going 
forward a month from january 30), the day will be set to the closest 
existing day in that month. This change is automatic and does not require 
display updates/redraws. Note that the year range of Organizer is 1583-9999;
trying to move out of this range will result in a beep.

NOTE: ALL NAVIGATIONAL KEYS REPEAT!! This makes quick navigation very easy. 
Simply hold down a key and watch your cursor fly across the screen. In
addition, if you quickly single-press any of the arrow keys, the status area
will not be updated until you stop pressing this key. This allows for fast
movement, whether you prefer repeating keys or individual movements.

The menuline also contains two navigational keys, which you can access with
the [NXT] key: [JUMP] will move forward/back any number of days, and [GOTO]
will goto a certain date.

There are also a few miscellaneous functions in Calendar mode. For example,
pressing [RS]-[4] (time) will adjust the HP internal clock. Pressing [LS]-[4]
will adjust the internal date setting. [STO] will bring up the Organizer
Options menu. [EVAL] will bring up an info screen with my name and email
address. [RS]-[ON] will turn off the calculator, and [ON] will exit Organizer.


4.2 USING THE CALENDAR/SCHEDULER
================================

There are a few central ideas around how the Calendar/Scheduler is arranged.
In Organizer, the two are closely integrated, with an almost identical set
of navigation/functional keys. Almost anything that works on the calendar
will also work on the scheduler, and vice versa. Therefore, all navigational
keys which were just described are still functional in scheduler mode!

The scheduler has the capability to handle the following two items:

Appointments/Daily TODOs - Either timed appointments, or just bits of 
information/reminders for the current day. This could be anything you want, 
such as business meetings, homework, etc. Alarms can be set based on 
the information entered in this field.

Annual Events - Some kind of an anniversary, holiday, etc. If you enter 
something into this field for a given day, the scheduler will display that 
annual event on that day every year. This makes it easy to insert someone's 
birthday and have yearly reminders of it, without having to put them in the 
Appointments entry every year.

To change between calendar and scheduler, use the [ENTER] key. The scheduler 
display looks something like this:

[------THU 12/21/95 10:11:30PM------]
-> Annual Event
-------------------------------------
Appointments/Daily TODOs
  
  
  
  

-------------------------------------

On the top of the screen is the title bar with the selected date and a clock.
On the second line is where the annual events are displayed in smallfont. If 
there is no annual event, this line is left blank. There is then a divider 
line, and the rest of the screen is left open for user-created Appointments 
and TODOs. This part of the screen can be scrolled up and down with the [8] 
and [2] keys. [LS]-[8]/[2] (or [9]/[3]) will act as a page up/down.
[RS]-[8]/[2] (or [7]/[1]) will act as a home/end. These keys repeat when
held down. Notice also two arrows that will appear in the titlebar to show
you if there is more data to view above or below the screen.

Creating Appointments is done via the [->APP] menukey. In this prompt, there
is a menukey labeled [ALRM] which can be used to create alarms. (You can also
create alarms by pressing [EEX] at any time in the calendar/scheduler.) When
pressed, a prompt appears for a time to set an alarm at. (If the calculator
is in 12-hour time mode, there is an [AM/PM] toggling menukey; otherwise,
the time should be entered in 24-hour format. Note that in AM/PM mode, a
numerator of either 0 or 12 will represent 12:00.) After given the time, ORG
sets an alarm on the selected date. When the alarm goes off, the calculator
will beep if flag -57 (Alarm Beep On) is clear. The alarm will beep in a loop
until a key is pressed or the beep goes off five times. ORG will then be loaded
in the Appointment view, with the intention that you can then view your
appointments for the day. The system is quite flexible, and allows you to
store your appointment information any way you want. (Note that if an external
editor is used, there is a "Set an Alarm?" menuline prompt after the edit is
complete instead.) Alarms can later be "maintained" (i.e. deleted) via the
internal alarm handling system.

Annual Events are created via the [->ANN] menukey, and done similar to                 
the Appointments. The prompts will hold the current data for those 
fields, or a blank prompt if you are creating a new entry. If an external
editor is defined in the Options Menu, it will be used to edit both of these
items. Pressing [ON] at either of these prompts will abort changes.

The annual event can only be one line long, a maximum of 31 characters.
Appointments may be of an unlimited number of lines, with a maximum of
33 characters wide. When in the editor, you may add a line to the 
appointments by pressing [RS]-[.] (the the newline key). You can add an 
unlimited amount of lines, as the appointments screen can be easily scrolled 
with the [8]/[2] keys.

Once you have entered something into these fields, they will be displayed in 
their appropriate locations. If you press [ENTER] to return to the Calendar, 
you will see that tick marks are placed to the right of certain days.
Organizer will put a tick mark to the upper right of any day with an 
appointment, and lower right of any day with an annual event. Note also 
that when you move the selector to any day with a tick mark, the APP/ANN 
indicators in the status area will light up to show you what is on the 
corresponding day. This allows you to quickly assess the events on any 
given day of the month. You can then use the [ENTER] key to "zoom in" on 
that day and get all the details.

Maintenance of appointments/annual events is quite simple. Pressing the [DEL] 
key on any day will delete that day's appointments. Pressing [LS]-[DEL] 
(clear) will, after a confirmation prompt, delete all appointments in that 
month. Pressing [LS]-[EEX] (purge) will delete that day's annual event.

Stack exporting/importing is provided to allow easy copying of appointments
and annual events; this makes it easy to create an appointment that "repeats"
itself. The two keys [->STK] and [STK->] are in the second page of the main
menuline (accessible via [NXT]). Pressing [->STK] will put a copy of the day's
appointments on the stack, while [LS]-[->STK] will put a copy of the day's
annual event on the stack. Similarly, pressing [STK->] will take a string
from the stack and append it to the day's appointments. [LS]-[->STK] will
replace the day's annual event with a string from the stack.

There are two search functions in Calendar/Scheduler mode. You can search
through your appointments or annual events for any string by pressing the 
[ALPHA] key or the [FIND] key in the menuline. This search can be defined
to search either the appointments of annual events by pressing the toggle 
key in the menuline of the FIND prompt. Likewise, the search can be defined
as case sensitive or insensitive by the "CASE" menukey. Note that FIND will
start searching from the beginning of the month, and stop at the end of the
month. Pressing [LS]-[ALPHA] or [LS]-[FIND] will act as a "FIND NEXT"
and search for the next occurrence of a string. This search will always 
start from the current date. Note that "FIND NEXT" does not cycle through 
the month; if there is no more data to search after the current date, it 
will intentionally beep. Also using the FIND engine are the [4] and [6] 
navigational keys, which will skip to the previous/next days in this month
which contain appointments.

Organizer will also allow you to call any external database for added data
management. This is done via the [XDB] key in the main menuline; the
database called by [XDB] is defined in the Options Menu (see section 4.5).
There are presets to call Scribe, Rolodex, Foneman, and DBase, although
[XDB] can be set to call any program you like.


4.3 USING THE TODO MANAGER
==========================

The TODO Manager is accessed via the [TODO] menukey in the 
calendar/scheduler. To use the TODO Manager, you must have the Scribe 
database loaded. Pressing this key will load Scribe viewing a "Todo 
Manager" datafile in the headings view. When the TODO Manager is exited, 
Scribe's previous settings will be restored.

I will define "TODO"'s simply as notes and reminders. This can include 
anything from "Walk the dog!" to "Today's shopping list: ...". The TODO 
browser has the capability to manage an unlimited number of TODOs, each of 
an unlimited length. Therefore, the usage of this mode has the potential 
to vary greatly. It could simply be used for one line reminders and quick 
notes, or it could be used to hold a few long lists of items.

For complete details on the Scribe interface, refer to the Scribe
documentation.


4.4 USING THE PHONE DATABASE
============================

The Phone Database is accessed via the [PHON] menukey in the 
calendar/scheduler. To use the Phone Manager, you must have the Scribe 
database loaded. Pressing this key will load Scribe viewing a "Phone 
Manager" datafile in headings view. Note also that the AutoSort option 
is turned on. When the Phone Manager is exited, Scribe's previous settings 
will be restored.

You can create a new entry in the database via the [ADD] key in the menuline.
Data entry is free-form, as in the TODO Manager, but it is suggested that 
you enter the heading in the "Last, First" name format so it is sorted
accordingly. In the body of the data, you can then enter addresses, phone 
numbers, etc.

For complete details on the Scribe interface, refer to the Scribe
documentation.


4.5 USING THE OPTIONS MENU
==========================

Pressing the [OPT] key in any menuline or [STO] in the calendar/scheduler
will bring up Organizer's Options Menu. There are six options, which can
be changed with their corresponding menukeys:

[EXTED] [EXTDB] [ALPH] [CASE] [SRCH] [START]

The descriptions of these options are:

Editor        : Define an external editor to be used when you edit your
                appointments and annual events. The menuline has keys to
                enter the correct command for StringWriter, ED, TED, or QED.
Database      : Define the external database to be loaded when you use the
                [XDB] key in the main menuline. The menuline has keys to
                enter the correct command for Scribe, Rolodex, Foneman, or
                DBase. Press the [NONE] key for no database selection.
Initial Alpha : Defines whether the initial alpha lock in all editing
                prompts are lower case or upper case.
Match Case    : Defines whether the [FIND] function will, by default, match
                the case of the search string or ignore it. This can also be
                toggled via the [CASE] key in the FIND menuline.
Search        : Defines whether [FIND] should, by default, search the 
                Appointments list or Annual Events list. This can also be
                toggled via the [APP/ANN] key in the FIND menuline.
Start View    : Defines whether Organizer should display the Calendar or 
                Appointments/Annual Events screen when you initially load
                the library.

Press [ENTER] or [ON] to leave the Options Menu and return to your previous
screen.


4.6 CALENDAR/SCHEDULER KEY LISTINGS (QUICK REFERENCE)
=====================================================

Here is a complete key listing for calendar/scheduler mode.
[LS] = Left Shift, [RS] = Right Shift

[LEFT]           Move to the previous day.
[RIGHT]          Move to the next day.
[UP]             Move back a week.
[DOWN]           Move forward a week.
[-], [LS]-[UP]   Move back a month.
[+], [LS]-[DOWN] Move forward a month. 
[/], [RS]-[UP]   Move back a year.
[*], [RS]-[DOWN] Move forward a year.
[4]              Move to the previous day with appointments (within a month).
[6]              Move to the next day with appointments (within a month).
[']              Return to the current date - [HOME].

[8]              Scroll the appointments screen up.
[2]              Scroll the appointments screen down.
[9], [LS]-[UP]   Scroll the appointments 6 lines up (Page Up).
[3], [LS]-[DOWN] Scroll the appointments 6 lines down (Page Down).
[7], [RS]-[UP]   Jump to the top of the day's appointments (Home).
[1], [RS]-[DOWN] Jump to the bottom of the day's appointments (End).
[ENTER]          Toggle between Calendar/Scheduler mode.

All of the above keys are intended for quick usage, and therefore all of
them will repeat when you hold them down.

[LS]-[EDIT]      Create/modify the day's appointments - [->APP].
                 Uses the external editor if one is defined in the [OPT].
[EEX]            Create an alarm on the selected date.
[DEL]            Delete the appointments on the current day - [-APP].
[LS]-[DEL]       Delete all appointments in the current month - [LS]-[-APP].
[LS]-[EEX]       Delete the annual event on the current day - [-ANN].
                 [LS]-[DEL] will provide a YES/NO confirmation prompt before
                 deleting all appointments. [DEL] and [LS]-[EEX] do not.

[ALPHA]          Search through the appointments for a string - [FIND].
[LS]-[ALPHA]     Find the next occurrence of the same string - [LS]-[FIND].
                 FIND will begin searching from the first day in the month 
                 with appointments, NOT the current date. FIND NEXT will 
                 always begin searching from the current date.
[MTH]            Toggle the time format between AM/PM and 24Hour.
[PRG]            Toggle the date format between MM.DDYYYY and DD.MMYYYY.
[RS]-[4]         Adjust the current time - [TIME].
[LS]-[4]         Adjust the current date - [DATE].
                 Changing the time and date both prompt with the current
                 settings for those fields. The time must be entered in 
                 24 hour format. There is full error checking for both of 
                 these modes.

[STO]            Display the Organizer Options menu - [OPT].
[EVAL]           Program information - [ORGINFO].
[RS]-[ON]        Turn the calculator Off.
[ON]             Exit Organizer - [EXIT].

In addition, the following keys are in the menuline:
                
[->APP]          Create/modify appointments for the current day.
                 Uses the external editor if one is defined in the [OPT].
[->ANN]          Create/modify an annual event for the current day.
                 Uses the external editor if one is defined in the [OPT].
[TODO]           Load the TODO Manager (via Scribe).
[PHON]           Load the Phone Manager (via Scribe).
[XDB]            Load the external database defined in the Options Menu.
[EXIT]           Same as [ON] (exits Organizer).

[OPT]            Load the Options Menu - [STO].
[ALRM]           Display the alarm setting prompt for the current day - [EEX].
[TIME]           Adjust the current time - [RS]-[4].
[LS]-[TIME]      Toggle the time format between AM/PM and 24Hour - [MTH].
[DATE]           Adjust the current date - [LS]-[4].
[LS]-[TIME]      Toggle the date format - [PRG].
[-APP]           Delete the appointments on the current day - [DEL].
[LS]-[-APP]      Delete all appointments in the current month - [LS]-[DEL].
[-ANN]           Delete the annual event on the current day - [LS]-[EEX].

[FIND]           Same as [ALPHA] (finds a string in appointments).
[LS]-[FIND]      Same as [LS]-[ALPHA] (finds next occurrence of a string).
[HOME]           Return to the current date - ['].
[JUMP]           Jump forward or backward any number of days
                 Entering a negative number will jump backwards.
[GOTO]           Go to any date.
[->STK]          Export the day's appointments to the stack.
[LS]-[->STK]     Export the day's annual event to the stack.
[STK->]          Import appointments from the stack. If appointments already 
                 exist, the new appointments will be appended at the end.
[LS]-[->STK]     Import an annual event from the stack. If an annual event
                 already exists, it will be overwritten.


4.7 DATA MAINTENANCE
====================

Data maintenance is provided via library commands. Locate the [ORG] 
library menu either through your library key (RS-2) or by typing 
<< 1144 MENU >>. There are three maintenance commands which provide the
following functions:

[DAT->]        Extract Appointment/Annual Event data to level1.
[->DAT]        Store a list created by [DAT->] on top of the current data.
[PDAT]         Purge ALL data (Appointments and Annual Events)

These simple commands can have a few functions. For one, this makes backing 
up and/or copying your data to/from your calculator very easy. Simply recall 
the data with [DAT->], store the data in a variable, and optionally send this 
variable to your computer. To restore the data, simply put the list on level1 
and press [->DAT]. This also allows for direct editing of your data, as this
data is normally encoded in Library Data. In addition, if you want to write 
some type of conversion program which will convert files to/from an organizer
on your computer, this enables you to keep the two in sync.

The [->DAT] and [PDAT] commands both have a [YES]/[NO] "Are you sure?" prompt 
to prevent accidental loss of information. Note that using [->DAT] will 
overwrite ALL of your current data.


4.8 DATA STRUCTURE
==================

This section is for anyone who wants to directly edit and/or access the 
datafiles used by Organizer.

** NOTE: THERE IS NO ERROR CHECKING FOR THE DATA CONTAINED IN THE DATA FILES!
IF YOU INCORRECTLY MODIFY YOUR DATA FILES, YOU MAY CAUSE A MEMORY CLEAR!

Organizer stores it's data in one file in the hidden directory. The file is 
called OrgDATA, and it is encoded into Library Data. The DAT-> and ->DAT 
commands will extract the Appointments and Annual Events data lists for 
modification; The following is a structural diagram of each sublist.

List #1 - Appointments Data
---------------------------
{
 MM.YYYY { DD $ DD $ ... DD $ }
 ...
 MM.YYYY { DD $ DD $ ... DD $ }
}

This list is composed of sets of two items: One real number and one sublist. 
The real number is in the format MM.YYYY, and the sublist which follows 
corresponds to the appointments for that month. Each sublist is composed of 
sets of two items: One real number and one string. Each real number must 
be in the form DD, and the string which follows corresponds to the 
appointments for that particular day. NOTE: These day/string pairs MUST be 
numerically sorted, or the FIND functions will NOT work correctly.

List #2 - Annual Events Data
----------------------------
{
 MM { DD $ DD $ ... DD $ }
 ...
 MM { DD $ DD $ ... DD $ }
}

This list is identical to the appointments list, except the real numbers are
in the form MM, and simply represent one of the twelve months. Each sublist 
is composed of sets of two items: One real number and one string. Each real 
number must be in the form DD, and the string which follows corresponds to 
the annual event for that particular day. These day/string pairs must also 
be numerically sorted for the FIND function to work correctly.


4.9 THIRD-PARTY PROGRAMS
========================

Organizer provides two opportunities for third-party program integration.

The first is the external editor support. When Organizer calls the external
editor, it parses and executes the command defined in the Options Menu. 
This command can be and do anything, but there is one restriction: It must 
leave the stack in the same state as when it is executed. Organizer leaves
the Appointments string on the stack with the intention that the called
program will modify this string and leave the new copy on level1. If the
level1 object is not a string, or the stack depth has changed, Organizer
will beep and return an "Editor Not Found!" error message. Aside from this
restriction, the external editor call can be used to call any program.

The second is a bit more versatile: The [XDB] command. The [XDB] command
is a blind call to whatever command is defined in the Options Menu. The
string is simply parsed and EVAL'd. If the parsed object does nothing, then
it is left on the stack as it normally would be. The [XDB] command does
no checks on changes in depth of the stack or objects on the stack. This
call can be used, theoretically, to load any external program, any library
command, or any subprogram.

One last note, two hidden XLIBs have been added to ORG: ORGCal and ORGApp.
These XLIBs will load ORG as normal, but ignoring the Starting View flag 
and starting in their respective modes. ORGApp is used in the alarms ORG
sets; there may be other uses for the hidden XLIBs.


5.0 REMOVING THE LIBRARY
========================

To remove Organizer from your HP48, do the following:

1. Optionally run [DAT->] to save a copy of the data file.
2. Run the PDAT command, either from the library menu or by typing it in.
   Confirm the deletion of your data file with the [YES] key.
3. Enter the port ID in the form :PORT:1144 and press ENTER *TWICE*
   Example:  If Organizer is stored in port 0, enter :0:1144 DUP
   The port ID should now be on levels 1 and 2 of your stack.
4. Press the DETACH button (either by typing in by hand, or pressing
   left-shift-library, DETACH).
5. Press the PURGE key.

Organizer should now be removed from your calculator. If you still get an 
"Object in use error", try turning off USER mode and switching to the HOME 
directory. Occasionally, if you have used Organizer extensively, you may 
have to do a warmboot (ON-C) before it will allow you to PURGE the library.


5.1 CREDITS
===========

Many other people assisted in the creation of this library, and credit should 
be given where it is due.

First and foremost, many thanks to Othniel Rawlins, spent much time testing 
the library and making excellent suggestions. Parts of the code, such 
as the FIND routines and the menuline confirmation prompts are based on 
the ideas and code of Othniel.

Many thanks also go to Arnold Moy, who was kind enough to make several custom 
modifications to the calendar routines, and even rewrite some of them! In
addition, he wrote the assembly routines to draw tick marks on the calendar.
Thanks Arnold!

Others who deserve thanks (in alphabetical order):

Alex Chiang       : Beta testing.
Mika Heiskanen    : Jazz, hacklib, and many of his other excellent programs
                    which made this possible.
Rodney Hess       : Beta testing.
Joe Horn          : List sorting routines, date validity checking.
Arnold Moy        : Beta testing.
Jerry Phillips    : ML calendar generation routines.
Othniel Rawlins   : Beta testing.
Andre Schoorl     : Beta testing.
Richard Steventon : ML box inversing routines.


5.2 KNOWN BUGS
==============

There is currently one known bug in Organizer, known as the "31-bug". This
is a bug in the calendar display engine which causes an extra day "31" to
appear on the calendar whenever the 30th is on the 6th row sunday of that
month. This bug has not been fixed yet because it will require a complete
rewrite of the assembly calendar display engine. The bug is non-destructive,
in that ORG won't actually let you move the cursor onto the invalid day;
it is just "there". This bug will be fixed in a future version of ORG.


5.3 VERSION HISTORY
===================

[ v1.1 01/08/97 ]
- All input prompts now use a custom full-screen input replacement. This
  allows for a larger editng area, accelerated cursor repeats, and embedded
  input prompts.
- System flags are no longer modified by ORG, and therefore can not be
  changed if there is an error (such as lowmem).
- New UFL/FNT1 assembly display routines:
  Titlebar routines replaced with assembly TBAR.
  Status area now displayed with assembly display routines.
  Annual event line now displayed with assembly display routines.
  Appointments display completely rewritten with new assembly display
  routines which allow very fast up/down movement, page up/down, and 
  home/end functions. Page up/down can be accessed via [9]/[3] or
  [LS]-[UP/DOWN], and home/end can be accessed via [7]/[1] or [RS]-[UP/DOWN].
- TODO and Phone Managers removed; Organizer now uses hooks into Scribe
  via the [TODO]/[PHON] menukeys. Scribe must be present for either of 
  these to work.
- New error handler; true error messages now returned, handles low memory
  errors more smoothly.
- "Febuary" spelling error corrected.
- OrgDATA format completely changed; now holds much more information, and 
  is encoded in Library Data. [DAT->] and [->DAT] routines adjusted
  accordingly. Conversion program included to convert v1.0 data to the new
  v1.1 format.
- Options menu added. Ability to configure external editor, external
  database, initial edit prompt alpha, find case sensitivity, find search
  list, and starting view. "Suggestions" put on menukeys of editor and 
  database prompt. Options menu also available from calendar/schedular 
  via [STO] key.
- Repeat prompts removed from JUMP/GOTO and TIME/DATE; now simply beep if 
  input is invalid.
- OINFO renamed to ORGINFO. Now displays info in small FNT1.
- Added hidden ORGCal and ORGApp XLIBs.  ORGCal/App ignore the Starting
  View flag set in Options and load ORG in CAL or APP mode, respectively.
- Annual Events data format changed; now similar to Appointments format:
  { MM { DD $ DD $ ... } ... }
  Makes tick mark drawing much faster, especially when there are a lot of
  annual events across different months.  Also frees up a little memory
  while ORG is running.
- Added support for any external editor, called by [->APP].
- Added support for any external database, called by [XDB].
- Added alarm support via the [EEX] key. In the appointments editor, there
  is also a menuline key marked [ALRM] which will pull up screen prompting
  for a time. In this screen, the user can est a control alarm at any time
  on the selected day. If in 24 hour mode, this is set in 24 hours, otherwise
  there is an [AM/PM] toggle key in the menuline. When the alarm goes off,
  the HP  will beep and load ORG in the Appointments view so the person can
  see what appointments are at the alarm time. If an external editor is used,
  there is a "Set an Alarm?" menuline prompt instead.
- Added european date support. Automatically detected via flag -42 and
  handled accordingly. In "european mode", all prompts for dates will take
  dates in european format, and all displays of the date will be shown
  in that format.
- Adjust 24-hour time support. Automatically detected via flag -41 and
  handled accordingly. In 24-hour mode, all time displays and prompts are
  taken in 24-hours.
- Stack exporting and importing added via two menukeys.
  Unshifted versions export/import Appointments. If data already exists for
  the current day, import appends the new data with a newline.
  Left-shifted versions export/import Annual Events. If there is already an
  annual event for the current day, import overwrites it.
- Full year is now shown in calendar title line.
- [FIND] is now much more powerful. You can now search either the
  Appointments or Annual Events, and the search can be case sensitive
  or insensitive. Both settings are determined by options set via
  the [OPT]ions menu or the menuline of [FIND].
- Days Past/Left indicator is now "Current Day/Days Left". In other words,
  the first day of the year now shows [1/364] instead of [0/364].
- [*]/[/] month movement keys now only let you move in the range 1583-9999;
  previously they locked up if you moved out. Protection added also for the
  other methods of movement.
- [LS]-[UP/DOWN] are now assigned to [-]/[+].
  [RS]-[UP/DOWN] are now assigned to [/]/[*].
- Tick marks moved.
  Appointment tick marks are now one pixel lower.
  Annual Event tick marks are now four pixels lower; when there is both an
  appointment and an annual event, the two form a "line" to the right of
  the day number.
- Scrolling arrows added to appointments screen titlebar. These arrows will
  show you whether there is more data to scroll to above or below the screen.
- Conversion program to convert v1.0 data to v1.1 data included.
- New holidays files included for the US and Sweden.
- Numerical decomp fixed so that the decimal mode does not mess up the
  display of the status area and some prompts.
- [MTH] key now toggles time format on the fly.
- [PRG] key now toggles date format on the fly.
- Menuline changed; second page expanded into second and third pages.
  More functions are now on the ORG menuline.
- Almost a complete rewrite of code, save the calendar display routines.

[ v1.0 01/27/96 ]
- Initial release to the public.


org11.lib [1144] code by jack levy [levyj@engin.umich.edu] dated 01/08/97.
