CalcOS-82 Version 0.1.00 Specifications --- Version numbers will be based on GNU versions: M.B.NN M = Major version number B = Even for stable, odd for unstable (beta NN = Minor version number (build) --- Contents: - Goals - Descriptions - Schedule --- Goals for CalcOS-82: (starred items are in the distant future) Open (source available freely) Modular (kernel, gdi, ui, libraries) Small Have a standard API that can be ported to other Z80 calculators (TI-83,85,86) --- Descriptions: Kernel: Provides memory management Loads libraries and executes code (including programs) *Links to the 82 ROM Provides DLL infrastructure Provides basic task management Provides basic cooperative multitasking *Provides multi-threading *Provides interprocess communication Provide callback infrastructure for UI GDI: Provides access to the screen (in a portable way) Has enhanced functions for drawing (circles, squares, polygons) *Provides easy interface to grayscaling *Regions and region clipping *Fonts UI: Provides user interface Windows, Controls, menus, etc. Provide message interface for controls Shell: Basic interface to start programs *Create an extended shell for the entire calculator (to access built in ROM functions) Libraries: Compression/Storage library (instead of storing programs directly in RAM, compress them in RAM and then decompress them to run Version management (to keep track of different versions of libraries) *Have dynamic code compression (to run parts of programs separately uncompressed) *Communication library (for the data port) *Sound library (for the data port) *Memory expander (like for the 85) but with a memory manager to dynamicly uncompress and load programs into active RAM --- Schedule: PHASE 1: Basic low-level stuff (first things first!) - Basic loading interface (to get the kernel started) - Kernel: - Basic memory management - Basic ROM call support - DLL interface PHASE 2: Once we have the basic loading and DLL interface, it will be much easier to try things and spread out developement among people - Kernel: - Task management (will be expanded to multitasking later -- right now, just for loading and ending tasks/programs) - GUI: - Get the basic framework (mostly interface to the DLL manager) - Iron out DLL stuff (this is the first DLL module) - Basic drawing functions (points, lines) - Shell: - Get a basic shell going to load/unload programs PHASE 3: About here, we should have an early alpha that can run programs! Someone should start on a small game or something for use for testing and demonstration. - Kernel: - Expand on task management, start on multitasking - Start on callback functions for the UI (so that controls can get messages from the OS about clicks on buttons and stuff like that) - GUI: - Get basic problems ironed out - Finish up basic drawing stuff (circles, curves, polygons, etc.) - Start basic text/font drawing stuff - UI: - Lay the framework for the gui - Windows and basic window management (create, destroy) - Libraries: - Start working on the compression libraries PHASE 4: Now we will have a pretty nice operating system (about on par with other OSes -- at least on basic functionality) - Kernel: - Finish up multitasking - Finish up callback functions - GUI: - Finish up text/fonts - UI: - Start working on controls, menus, and other interface elements - Libraries: - Start version management libraries PHASE 5: Get ready for a beta version. - Kernel: - Debug - Add extended functions as needed - GUI: - Debug - Add extended functions as needed - UI: - Finish up controls and interface elements - Libraries: - Finish version management for beta 1! BETA 1!!!