Overview

Casio PB-100 was introduced in 1982 and is one of the first and simplest of the Casio pocket computer line. Other similar computers of the time included Casio's own FX-702P, Sharp PC-1200 (also known as TRS PC-2), HP 75C (Hewlett Packard's first portable computer) and Panasonic HHC (runs on a 6502 chip), although all of these were more advanced and much more expensive than the PB-100. The device's case proudly states "Personal Computer" but this gadget is actually little more than a calculator with a BASIC interpreter built in. The computer looks like a medium-sized horizontal-layout programmable calculator, the size of the aluminum-plastic case is 165 x 71 x 9,8 mm (width x height x depth) and it weighs 116 grams. I am a proud owner of a functioning PB-100; it was the first computer I ever had.

Technical details

The CPU seems to be a Casio proprietary CMOS VLSI chip; the RAM memory capacity of the computer is 544 bytes. The optional OR-1 RAM expansion module, which is fitted next to the battery holder inside the unit, boosts the capacity by 1 kB to a total of 1568 bytes. Programs can be stored in 10 slots called P0 - P9 and accessed afterwards using Shift+<numeric key> shortcuts or inside a BASIC program using the GOSUB command. Commands of the BASIC programs are stored as single bytes, thereby saving the limited memory capacity.

The display is a small one-row 12 character LCD with 5x7 dot-matrix characters. Program output is limited to an extended ASCII character set, no graphics commands are available. Above the dot-matrix row there is a row of symbols which indicate the current state of the computer: EXT, S, RUN, WRT, DEG, RAG, GRA, TR, PRT and STOP. RUN stands for the normal calculator/program execution mode, WRT for the program editing mode. In calculator mode the display is able to show a 10-digit mantissa (including the minus sign) or an 8 number mantissa with a 2-digit exponent. The numeric range of PB-100 is ±1*10-99 ... ±9.999999999*1099 with internal precision of 12 digits. Six levels of nested parentheses can be used in calculations. PB-100 doesn't handle imaginary numbers.

The small keyboard consists of:
· 4 function keys: Mode, <=, => and Shift
· a 30-key QWERTY style block with ANS, '=' and exponent keys
· a 19-key numpad with AC, DEL, STOP and EXE keys
The keys are made of hard plastic and because of their small size, best operated using one index finger. Most keys have at least two functions like upper/lowercase letters, BASIC commands and special characters which can be accessed using the Shift key or the EXT mode. The EXE key functions like the Return key on most other computer keyboards.

The 12-pin expansion port on the top of the unit can be used to connect peripheral devices like the FP-12 thermal transfer printer or the FA-3 audio cassette interface. The cassette interface is the only method of external data storage available for PB-100. It consists of a module which is plugged to the expansion port and three mini plug connectors for remote control (stop/start the tape), microphone (for saving programs) and earphone (for loading programs). Old Sony portable dictation recorders are known to work with the interface.

The computer is powered by two flat CR2032 type batteries which provide 360 hours of continuous use. Automatic power saver feature turns the unit off after approximately 7 minutes of inactivity. There is no non-volatile memory in the PB-100 so the program slots are cleared then the batteries run out. To replace the batteries, the back cover has to be removed by opening the two screws holding it.

PB-100 BASIC language

The BASIC interpreter on the PB-100 ROM is, well, basic, including only simple control statements, I/O for the character display and tape interface and some arithmetic functions. There are no means to alter the memory directly or any graphics or sound commands whatsoever. But considering the characteristics of the device; the simple display and limited memory capacity, it is sufficient for most purposes.

Line numbers must be used in the beginning of program rows. Increments smaller than 10 can be used to make inserting code between existing rows easier; RENUM command then tidies up the line numbers to increments of 10 again. Multiple commands can be entered on one row using a colon ( : ) as a delimiter, also saving precious bytes of RAM as every line number takes 2 bytes and the invisible EOL character 1 byte.

Numeric variables are named A-Z and string variables A$-Z$. The default number of available variables or array elements is 26, but the number can be increased with the DEFM command in exchange of the amount of available RAM. Variables A and A$ cannot be used at the same time and strings may only be 8 characters long. The special string variable $ holds a maximum of 30 characters at a time.

Commands
Parameters in <angle brackets> are compulsory while ones inside [square brackets] are optional.

Text I/O
PRINT <string/variable> - There is a peculiar feature in the PB-100 PRINT command. If you use a PRINT "texttexttxt" command by itself on a BASIC program row, the program halts after the output and waits for the EXE key to be pressed before continuing the execution. If you continue the row with ofter commands, however, no pause is caused. This is a useful method for creating e.g. ASCII animations..
INPUT <variable> - Reads user input to a variable

Subroutine handling
GOTO <line number> - Jump to the defined row
GOSUB <line number/program slot> - Jump to a subroutine at the defined line or in the given program slot
RETURN - Return from a subroutine

Flow control mechanisms
IF <test> THEN <command> - Simple test clause. The THEN operator can be substituted with a semicolon ( ; ).
FOR <VAR=start_value> TO <end_value> [STEP increment] NEXT [VAR] - A loop construct, only numeric variables allowed. STEP can be used to define the increment value. 4 nested loops allowed
STOP - Pauses the execution of the program. Pressing EXE makes the program continue.
END - Ends the running program
RUN - Runs the default program in slot P0 (only in RUN mode)

Program editing
LIST [program slot number/line number] - In RUN mode, lists the program in given slot with a short delay between each line. In WRT mode, displays the program starting from the first or the given line number. The line can then be edited and EXE key used to save the changes or skip to the next row.
LIST A - Lists programs in all slots
CLEAR - Erases the program in the current slot (WRT mode only)
CLEAR A - Erase programs in ALL slots (WRT mode only)

Cassette I/O
SAVE ["filename"] - Saves the current program to tape
SAVE A ["filename"] - Saves programs in all slots (P0-P9) to a tape "image"
LOAD ["filename"] - Loads a program from tape. If filename is given, skips files until a file with that name is found.
LOAD A ["filename"] - Loads program slots P0-P9 with programs saved to tape using SAVE A.
PUT ["filename",]varname_1,varname_2,... - Saves a list of variables to tape
GET ["filename",]varname_1,varname_2,... - Loads a list of variables saved with PUT
VER ["filename"] - Verifies that a SAVE A tape file and the current program memory match

Misc.
DEFM X - Sets the number of available variables or array elements to X
MODE
SET
VAC - Clears all variables

Character and string functions
KEY - Returns the character value of the key being pressed or, in case of no keyboard activity, an empty string
CSR <position> - Used along with the PRINT command to move the cursor specified position
LEN <X$> - Returns the length of a string
MID <X$,N> - Returns a substring from the string X$
VAL

Mathematic functions
ABS X - Absolute value of X
ACS X - Arcus cosine of X
ASN X - Arcus sine of X
ATN X - Arcus tangent of X
COS X - Cosine of X
FRAC X - The fraction part of X
INT X - Integer part of X
LN X - Natural logarithm of X
LOG X - Base 10 logarithm of X
RAN# - Returns a random number between 0 and 1
RND X - Rounds X to the nearest integer value
SGN X - Sign of X
SIN X - Sine of X
SQR X - Square root of X



Sources of information:
Casio PB-100: Learn As You Go
http://home.c2i.net/trygveh/english/gadgetman/pocket/casio/casiopb100.html
http://www.ntrautanen.fi/computers/other/casio.htm
http://www.rskey.org/pb100.htm
http://web.tiscali.it/iw2fer/pb100_eng.htm