A full-featured retro operating system environment for J2ME (MIDP 2.0 / CLDC 1.1) devices.
Runs on Nokia S40/S60 feature phones and any J2ME-compatible emulator.
NokiaOS Pro is a self-contained MIDlet OS shell that boots into a multi-app desktop environment, complete with a Unix-like terminal, scripting runtimes (JavaScript, Lua, PocketBASIC), a game engine, AI chat, file manager, and 40+ productivity and entertainment apps — all running inside a single J2ME JAR.
| Item | Minimum |
|---|---|
| Java | 1.3 (J2ME CLDC 1.1 / MIDP 2.0) |
| Build tool | Sun Java Wireless Toolkit 2.5.2 (WTK) or equivalent |
| Target device | Nokia S40/S60, or any MIDP 2.0 emulator |
| Optional | JSR-75 FileConnection API (for real filesystem access) |
Open the project in WTK 2.5.2 (j2mewtk) and click Build, or invoke the Ant/KToolbar build manually. The project root is NOKIAOS-reload/. Source files live in src/.
Note: The build targets Java 1.3 source/target compatibility. Autoboxing, generics, and enhanced for-loops are not available. All wrapper-type unboxing must be done explicitly (e.g.,
((Boolean) x).booleanValue()).
NokiaOSProTouch (MIDlet entry point)
├── OsSplashCanvas Boot animation
├── LoginScreen User authentication (DiscoOS multi-user)
├── OsDesktop Home screen / app launcher
├── UIManager Shared canvas builder (FileManager, Editor, Settings, Info, MiniGame)
├── DiscoOs OS abstraction layer / multi-user session
├── DiscoTerminalCore Terminal command processor
├── DiscoTerminalUI Terminal display canvas
├── ThemeManager 15-theme color engine
├── HackerModule Hacker-mode animations and effects
├── OsAppManager App registry and lifecycle
├── FileSystem / RealFileSystem Virtual + JSR-75 real filesystem
├── GameEngine JS-powered sprite/tile game runtime
├── JsInterpreter Custom JavaScript engine
├── MiniLua Lua 5.x subset interpreter
├── PocketBASIC / PocketBASICAdapter BASIC interpreter
├── ExprParser Arithmetic/expression evaluator
├── AIChat / AIChatConfig AI chat client (HTTP-based)
└── [40+ App modules] See App Inventory below
A full custom JS engine supporting:
var,function, closures,this,new,typeof,instanceof- Control flow:
if/else,while,for,do/while,switch/case,try/catch/finally - Built-in objects:
Math,String,Array,Date,console - NokiaOS Game API — access via the
GameEnginecanvas:- Sprites:
sprload,spr,move,moverel,destroy,hide,show,rotate,flip,setanim,frame,setscale,sethitbox - Physics:
setgrav,bounce,wrap,setvel,addvel,impulse,separate - AI:
player,setmov,setspeed,setalarm,ai_path,setdrunk,setwander,setflee,setpatrol,setmagnet - Graphics:
cls,color,plot,line,rect,fillrect,circle,fillcircle,triangle,text,drawcenter,blit,layer,tilemap,tileload,tilesolid,settile,gettile - FX:
shake,fade,flash,tint,scanlines,vignette,explode,fire,magic,snow,rain,spark,dust,bubble,particle_emit - Audio:
snd,music,beep,beepvol,seq,stopseq,stopmusic - Input:
key,keyname,touchx,touchy,touchdown,touchtapped - Score/state:
addscore,setscore,score,setlives,addlives,lives,hiscore,gameover,savedata,loaddata,cleardata - Math helpers:
rnd,dist,clamp,lerp,lerpi,ease,angle,wrapval,maprange,sign_fn,choose - Collision:
coll,circoll,collzone,firstcoll,distsprites,separate,boundskill - Camera:
camera,camlock,camunlock,cambounds,camlerp,camdeadzone,camx,camy - Utility:
fps,screenw,screenh,wait,rnd,debug,cleardebug,pause,resume,paused
- Sprites:
Lua 5.x subset with:
if/then/else/elseif/end,while/do/end,for/do/end,repeat/until,functionlocal,return,break- Standard libs:
math.*,string.*,table.*,os.clock(),os.time(),io.write() - Custom
print()output to terminal buffer
Line-number BASIC interpreter with PRINT, INPUT, LET, IF/THEN, GOTO, GOSUB/RETURN, FOR/NEXT, DIM.
Standalone arithmetic/string evaluator used by BASIC and other modules. Supports float variables, int variables, string variables, and function calls.
15 built-in color themes, selectable at runtime:
| # | Name | Style |
|---|---|---|
| 0 | Matrix | Black/green |
| 1 | Ocean | Dark blue |
| 2 | Forest | Dark green |
| 3 | Inferno | Red/orange |
| 4 | Purple | Dark purple |
| 5 | Hacker | Green-on-black terminal |
| 6 | Night | Near-black |
| 7 | Gold | Gold/black |
| 8 | Lava | Orange/red |
| 9 | Cyan | Teal/blue |
| 10 | Mono | Grayscale |
| 11 | Amber | Amber terminal |
| 12 | Matrix2 | Matrix variant |
| 13 | Dracula | Dracula palette |
| 14 | Nord | Nord palette |
Each theme defines 6 color slots: bg, text, highlight, border, menu, accent.
- Login screen with user/password authentication
- Multiple user accounts with UID (0 = root)
- Session persistence via RMS (
DiscoSessionrecord store) - Auto-login if saved session exists
isRoot()check gates privileged operations
- Virtual FS (
FileSystem): In-memory file tree, always available - Real FS (
RealFileSystem): JSR-75 FileConnection, available on supported devices - File Manager UI lists directories with
[D]/[F]indicators, supports navigate, open, and platform roots browsing
| App | Class | Description |
|---|---|---|
| Text Editor | EditorCanvas / UIManager |
Full-screen code/text editor with RMS save |
| Memo | MemoApp |
Quick notes with RMS persistence |
| Notes | STATE_NOTES2 |
Extended note-taking |
| Calendar | CalendarApp |
Month/event calendar |
| Contacts | ContactsApp |
Contact list with add/edit (NKContactAddListener) |
| Budget | BudgetApp |
Income/expense tracker |
| Stopwatch | StopwatchApp |
Lap timer |
| Clock | ClockApp |
Digital clock display |
| Converter | ConverterApp |
Unit conversion (length, weight, temp, etc.) |
| Flash Cards | FlashCardApp |
Study card deck |
| Lang Learn | LangLearnApp |
Language learning drills |
| App | Class | Description |
|---|---|---|
| JS Editor | EditorCanvas |
Write and run JavaScript |
| JS Game Engine | GameEngine |
Full sprite/tile game runtime |
| Lua Terminal | MiniLua |
Run Lua scripts |
| PocketBASIC | PocketBASIC |
BASIC interpreter with editor |
| Expression Parser | ExprParser |
Math expression sandbox |
| App | Class | Description |
|---|---|---|
| AI Chat | AIChat / AIChatConfigForm |
HTTP AI chat client, configurable endpoint |
| Browser | NKBrowser2 |
HTTP web browser |
| Weather | WeatherApp |
HTTP weather fetch |
| Maps | MapsApp |
Map viewer |
| Radio | RadioApp |
HTTP audio stream player |
| App | Class | Description |
|---|---|---|
| Snake | SnakeApp |
Classic Snake game |
| Elf Run | ElfRunApp |
Platformer/runner game |
| Dice | DiceApp |
Dice roller |
| Paint | PaintApp |
Pixel art canvas |
| Gallery | GalleryApp |
Image viewer |
| Music Player | MusicPlayerApp |
Local audio playback |
| Camera | CameraApp |
Camera capture (JSR-135) |
| Easter Egg | EasterScreen |
Hidden surprise |
| App | Class | Description |
|---|---|---|
| Terminal | DiscoTerminalUI |
Unix-like shell |
| File Manager | UIManager |
Browse virtual/real filesystem |
| Settings | UIManager |
Theme, user, system config |
| System Monitor | SysMonApp |
Heap, CPU, RMS usage |
| Hacker Mode | HackerModule |
Matrix-style animation terminal |
| App Store | OsAppManager |
App registry/launcher |
| Wallpaper | WallpaperApp |
Wallpaper manager |
| Optimize | OptModeApp |
Memory/performance optimizer |
| QR Code | QRApp / QRCanvas |
QR code generator/display |
| Compass | CompassApp |
Compass tool |
| Tuner | TunerApp |
Instrument tuner |
| Calculator | CalcApp |
Scientific calculator |
| IVRC | IVRCApp |
Interactive voice/response controller |
| About | AboutScreen |
Version and credits |
| Store Name | Contents |
|---|---|
NokiaOSPro_Config |
Theme index (1 byte), system config |
DiscoSession |
Active user session (username:uid) |
| App-specific stores | Per-app data (contacts, memos, budget, etc.) |
Config is saved automatically on exit and loaded on boot. The primary setting persisted at the system level is themeIndex. Individual apps manage their own RMS stores.
To manually reset config: delete the NokiaOSPro_Config RMS record store from your device/emulator.
- 42 application states
- 15 themes
- Full JS game engine with sprite/AI/physics API
- MiniLua and PocketBASIC runtimes
- DiscoOS multi-user system
- AI Chat with configurable HTTP endpoint
- NKBrowser2 HTTP browser
- JSR-75 real filesystem support
- T9 input, SoundManager, SpriteSystem, CollisionSystem, MovementSystem
Proprietary / personal project. All rights reserved.