Casio FX-850P

The Casio FX-850P is a scientific calculator introduced in 1987 and sold until 1999.

Specifications

 * 2 lines with 32 5×7 characters LCD
 * (some indicators and a 5 digit 7-segment display)
 * 8 KB RAM (FX-860P: 24 KB, FX-880P: 32 KB)
 * CPU: VLSI at 1.228 MHz. Hitachi HD62002A01 (FX-860P, FX880P: HD62002A03)
 * Integrated speaker
 * Internal slot for memory expansion (32 KB)
 * Connector with support for RS232 and Centronics (only level converter for RS232, Centronics needed)
 * LCD Driver: 2 x HD66100F
 * 2x 3V CR2032 lithium batteries as main power supply
 * 1x 3V CR1220 lithium battery as memory backup (RAM power supply)

User's manual at http://www.usersmanualguide.com/casio/calculators/fx-850p

The calculator had a BASIC interpreter, MEMO function, a formula library. The built-in 8 kB memory could be expanded using the optional Casio RP-8 (8 kB) or RP-33 (32 kB) RAM expansion modules. An optional Casio FA-6 interface board provided a cassette tape recorder connector, a Centronics printer connector and an RS-232C port. The calculator could print data and listings on any Centronics printer; printing graphics required the Casio FP-100 plotter-printer.

Later, Casio released the FX-880P, which had 32 kB built-in memory. With a RP-33 expansion module, this model could be upgraded to a total of 64 kB.

The memory layout is:
 * 0000-00FF Screen memory
 * 0100-01FF Reserved for internal functions
 * 0200-02FF INPUT Buffer
 * 0300-03FF CALCJMP, VALF Buffer
 * 0400-04FF Reserved for IN/OUT/CALC modes (CALC$)
 * 0500-074A Reserved for internal functions
 * 074B-0752 Reserved for storing the user PASSWORD
 * 0753-175A Reserved for internal functions
 * 175B-175C Vector pointing to MEMO memory start
 * 175D-1FE4 Reserved for internal functions
 * 1FE5-1FFF Vectors pointing to P0-P9 memory start
 * 2000-9FFF User memory (shared by MEMO and P0-P9)
 * A000-BFFF Repetition of 0000-1FFF
 * C000-DFFF Repetition of 0000-1FFF
 * E000-FFFF Repetition of 0000-1FFF

Memory area A000-FFFF was either available as user memory (if expansion was present), or would simply repeat the contents of 0000-1FFF

A few glitches are:
 * POKE 1867,0 → would delete any user PASSWORD
 * POKE PEEK(8027)+256*PEEK(8028),32 → would recover contents of MEMO after a RESET ALL
 * POKE PEEK(8027)+256*PEEK(8028),26 → would hide contents of MEMO, much like a RESET ALL would do, but without losing the programs

The internal function library was programmed in BASIC itself and could be extracted with a BASIC decompiler.

Any function in the library can be executed from a regular BASIC program by using GOTO "LIB0:NNNN" where NNNN is the function number (e.g. 5010 for prime factorization). The command GOTO "LIB0:0400" executes a self-test program.

Characters 252 to 255 were user defined. They could be defined by issuing the command DEF CHR$(n)="HHHHHHHHHH" where n ranges from 252 to 255 and the H's are 10 hexadecimal digits (5 bytes). Every byte defines the pixel pattern for a column. Since a column is 7 pixels high, the least significant bit of every byte is ignored.

The CHR$(26) would activate a different character set for Katakana and Kanji characters. CHR$(27) would deactivate Kanji.

Via a serial cable the calculator could connect to a PC or to another Casio FX-850P, allowing the transfer to MEMO and stored programs.