Psion Organiser II Review

A Review of the Psion Organiser and the Organiser Programming Language.

 

 

Here is a list of OPL functions and commands:

 

functions

abs, addr, asc, atan, cos, count, day, deg, disp, eof, err, exist, exp, find, flt, free, get, hour, iabs, int, intf, key, len, ln, loc, log, menu, minute, month, peekb, peekw, pi, pos, rad, recsize, rnd, second, sin, space, sqr, tan, usr, val, view, year

string functions

chr$, datim$, dir$, err$, fix$, gen$, get$, hex$, key$, left$, lowers$, mid$, num$, right$, rept$, sci$, upper$, usr$

commands

append, at, beep, break, close, cls, continue, copy, create, cursor on/off, delete, do/until, edit, erase, escape on/off, first, global, goto, if/elseif/else/endif, input, kstat, local, next, off, open, onerr, pause, pokeb, pokew,position, print/lprint, raise, randomize, rem, rename, return, stop, trap, update, use, while/endwh

Only the functions are available in calc mode, of those, the file handling functions cannot be used.

 

Here is the function to calculate factorials from the manual:

fact:(n)

if n=0

return 1

endif

return n*fact:(n-1)

 

Since it's recursive, it runs out of memory fast.  The Maths pak should have a better version.  If I do a lot of math I might write a BCD package.

 

Functions can only return one value: 16 bit integer, real, or string. The maximum parameter list length is not defined, but you can use any mix of the three. Strings are limited to 255 characters, integers are signed 16 bit,floating points have 12 digit mantissa with an exponent of +/- 100.Variable names are up to 8 alphanumerics, the first character must be alpha.The calculator variables I mentioned are m0..m9 and are floating point.  They don't have to be declared and always retain their value. You could think of them as super-global variables.  All variable except for mX have to be defined either in an parameter list or in a GLOBAL or LOCAL declaration.  Non-parameter list variables can be also declared as arrays.

 

Functions can called from any other function even if in another source code file.  The language is compiled so it's possible to delete source code to save space.

 

There are a bunch of other programs in the book as well, including a password program (it warns to be careful as it cannot be broken if you forget the password), a prime generator, some financial programs, a game called Chase which uses custom graphics characters (I haven't typed it in yet), and some functions to implement a one dimesional spreadsheet.

Overall I'd say the Organiser Programming Language is a mix of C, Pascal, and BASIC.

When you first turn on the machine you get a menu:

FIND SAVE DIARY

CALC PROG ERASE

TIME INFO ALARM

OFF

 

The display is only 16x4 so it will scroll to display each line. The cursor keys can be used to move to each menu item, hitting EXE will execute it.  Hitting an alpha key will execute the menu item that starts with that letter, if there is more than one item starting with that letter it will alternate between each item.

 

FIND

        This prompts for a string to search for in the MAIN data base.     A null string finds all entries.

SAVE    This allows new entries to be made in the MAIN database

DIARY   The current date and time (rounded to the nearest half-hour), are displayed.  The cursor keys will move by day and half-hour.        Hitting any alpha will start entering text associated with that half-hour segment in time.  After hitting EXE, the user is prompted for an alarm, then the number of minutes (0..59) for it to go off before that date and time.

        Hitting MODE will display another menu:

        PAGE    returns back to the initial diary mode.

        LIST    displays one at a time from the current date all the entries that have text.

        GOTO    displays just year and date, a quick way to get to a specific day without going through each half-hour segment.

        SAVE    save the entire diary database to a file.

        TIDY    delete all past entries

        RESTORE load a saved diary database back in

        DIR     get a list of saved diaries.

 

CALC    Algebraic expressions can be directly entered and edited, hitting EXE gives you the answer.  It does more than the typical calculator but has no programability aside from the ten variables.

PROG    Programming mode. It has another menu:

        EDIT    prompts for an existing source file

               another menu:

               TRAN    translate source file

               SAVE    save the source file

               QUIT    leave EDIT, askes for confirmation

        Developing software just using this is a bit clumsy, it's fine for short programs, but not easy for more extensive coding.

        LIST    send a source file to the optional printer/serial port

        DIR     lists all source files

        NEW     edit a new source file

        RUN     run a source file

        ERASE   erase a source file

        COPY    copy a source file to another device (cannot duplicate files)

 

        Each of these functions retain the last file name to be used so you don't have to keep retyping it.

ERASE   erase entries in the MAIN database.

TIME    Display the current year, month, day, time with real-time updating.  This is also used to set the clock-calender.

INFO    lists total RAM, and percent usage in RAM, diary usage and percent used on each datapak slot (if used)

ALARM   Set each of eight alarms, they can repeat every week, day, or hour.

RESET   cold reset the machine, deletes everything.

OFF     Turns the Psion off.

 

 

The menu entries can be moved around and removed.  User defined functions can also be put on the main menu. I've taken the RESET entry off and added LEFT and XIT.  LEFT lists exactly how many bytes are free, XIT is a custom OFF program, eventually it will do usage logging and other things.

There are three seperate file systems: MAIN, DIARY, and PROG.  They don't seem to be able to share data at all, which is a bit of a pain.  The MAIN file system contains the file MAIN and any files that a user creates with OPL programs. This allows more sophisticated database programs to be created that a extensions of the existing system.

The editors in the machine leave something to be desired.  The database only allows you to delete carridge returns, not insert them. The editors used in the programming menu and the database are inconsistant with each other.  The editor primitives are directly accesable through OPL commands though.  My first project might be to write a better editor.

The machine is sluggish at times, it has a Hitachi HD6303X running at 36.864 KHz.  The LCD driver is sometimes slow as well, but can be driven quite fast depending on the program. I've been impressed by the manual, it's well written and seems to be good enough for the complete novice yet has technical information including technical specifications and a memory map.  I would wish for a ROM entry point list, a machine language manual, and more information on the internals.  This information can be gotten from Psion by just asking.

The machine seems to have the entire