Psion Organiser II Review
A Review of the Psion Organiser and the Organiser Programming Language.
Here is a list of OPL functions and commands:
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
chr$, datim$, dir$, err$, fix$, gen$, get$, hex$, key$, left$, lowers$, mid$, num$, right$, rept$, sci$, upper$, usr$
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:
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
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.
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
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 ASCII character set plus what looks some Japanse katagana characters and some Greek symbols in the upper 128 characters. The keyboard can't generate all of them though.
The shift key selects either the top or bottom character, CAP switches between upper and lower case, the NUM key selects between the numbers/symbols and the alphabetics. All keys except the shift key click from it's internal piezospeaker. The shift really shifts, it's not like one of those calculator toggle keys. The ON button turns it on and is used like an escape key, EXE is used to execute and as a carriage return. You turn it off either from the OFF entry on the main menu or with the OFF command in OPL. If you use the OPL command, when it's turned back on the program continues where it left off.
| 16x2 LCD goes here |
| Clear | | CAP | NUM | | |
| ON | MODE | ^ | v | <- | -> |
| < | > | ( | ) | % | / |
| A | B | C | D | E | F |
| = | " | 7 | 8 | 9 | * |
| G | H | I | J | K | L |
| , | $ | 4 | 5 | 6 | - |
| M | N | O | P | Q | R |
| ; | : | 1 | 2 | 3 | + |
| S | T | U | V | W | X |
| | | 0 | . | | |
| SHFT | DEL | Y | Z | SPACE | EXE |
The machine comes with a hard plastic sleeve that covers the the lower two thirds of the machine protecting the keyboard, battery compartment door and pak sockets. The sleeve slides down and locks in place exposing the keyboard and forming a handle. I personally don't use it, it comes completely free of the machine with a sharp tug, mine lives in a zip-lock baggy instead to keep dust and moisture off.
Two sockets on the back accept thumb sized paks. These are either 16K to 128K EPROM s, 32K RAM, or software. Dummy paks with no electronics occupy the spaces when not otherwise used. The EPROM s cannot be erased in the machine, you need to take them out and expose them to UV light for a bit. The software seems to take care of the differences between RAM and EPROM transparently. I don't have an EPROM pak yet, so I can't say for sure.
The software paks I know of are:
Formulator mathmatical formulae and conversions
Math analytical functions and statistics
Spelling the Concise Oxford Spelling Checker with 24,000 words. I've actually used this, it's not too useful unless you really want British spellings. I hope they fix it.
Spreadsheet generally compatible with Lotus 123, 26x99
Smart Address Book
Travel Pak/Language Translator
Overall I really like the machine, however the model CM is too limiting for me. I'm going to return the one I have and buy the model XP, it has 32K and the ability to use 32K RAMPaks, 128K DataPaks, bar code and mag card readers. For some reason the XP doesn't actually have 32K available, it has only 23532. The other 9K is used for the optional accessories. The Psion rep I talked to said there is no way to access this. There are references to the XP as a 16K macine in the manual, I get the impression they decided to up it to 32K and give the user some (but not all) of the extra storage. There are two other machines as well, the LZ and LZ64, these have a 20x4 display and extra software, the last has 64K of RAM.
118 Echo Lake Road, Watertown CT 06795