Prizm Programming Portal
Welcome to the Prizm Programming Portal! If you got here, it's probably because you have some interest in programming your Casio fx-CG 10/20/50, or in its internals. If you have questions, or if you get lost in this Wiki, don't let that interest vanish: say something on the Cemetech Prizm forums and we'll do our best to help you. Similarly, if you want to contribute to this documentation, or if you have suggestions, you should also post to the forums in this topic.
Development Methods and Tools
The Casio Prizm can be programmed using at least three different methods, which allow for creating programs with varying degrees of freedom and computing power. More information can be found on the aptly named article Development Methods and Tools.
If you are interested in add-in development alone, please read on how to setup PrizmSDK and be aware that unless otherwise noted, information in this Wiki, especially the syscall names, are relative to the PrizmSDK and libfxcg.
- Technical Info - Documentation of the Prizm's hardware and other system features.
- LuaZM Reference - A budding guide to the LuaZM Lua interpreter for the Casio Prizm.
- BASIC Reference - Contains documentation on Prizm-Basic functions.
- Secret Key Combinations - Access the Test Mode, Diagnostic Mode, boot code menus, and more.
- Product ID Information - Know the meaning of the code on the sticker on the back.
Specific to add-in development:
- Addin Usability Guidelines - A list of guidelines to make your add-in software more user-friendly.
- Optimization Tips - Tips on making your programs faster and more efficient.
- Useful Routines - A list of useful routines that can be used in your programs.
Native OS reference
- CASIOWIN - General information on the OS.
- G3A File Format - A description of the file format for add-ins.
- System Calls - Contains documentation of functions for use in add-ins. See the calling convention here.
- Syscalls/Platform Quirks - Various caveats of the system calls and the Prizm platform in general for programmers.
- Keycode Reference - Relationship between the values returned by keyboard-reading syscalls and physical keys.
- File System - Information on the main and storage memories.
- Timers - Information on the 10 software timers supported.
- Locale - Information on the basic localization features of the OS.
- Multi-byte strings - How some special characters are encoded.
- Fonts - Fonts included in the OS and characters supported by each.
- Setup - Details on the settings system used for SET UP (Shift+Menu) settings: trigonometric mode, complex numbers mode, input and display modes, etc.
- Processes - Information on the two-process architecture of the OS.
- Stack - Information on the stacks used by the processes.
- Heap - Information on the 128 KB heap.
- Versions and versioning - OS, bootloader and official add-in versions, plus information on the versioning scheme.
- Bitmaps - Bitmaps contained in the OS - icons, fonts, function key labels, test/demo images, etc.
- FKey Bitmaps - OS-provided labels for the function key actions. You should use these in your add-ins instead of your own where possible, to maintain coherence with the OS and save space.
- Error handling - How the OS behaves in case of software and hardware error.
Article creation is still being completed. Please discuss this section.
Intro to Prizm C Programming
- PrizmSDK Setup Guide - Setting up the PrizmSDK
- Learning the Ropes - Learning how the SDK works and how to make projects
- Hello World - Making your first Addin
- Printing Text - Shows different methods of printing strings and numbers.
- Reading Input - Getting user input
- File Access - Managing files in the RAM and ROM
- Popup windows - Shows how to use popup windows
- Advances GUIs - Shows how to make advanced user inferfaces
- Drawing Sprites - Drawing pictures and shapes
- Debugging Crashes - Finding where your inevitable errors are.
- Introduction - Getting resources for learning C and setting up the SDK
- The Basics - Learning how add-ins are made
- Casio Prizm Development and Programming at Cemetech