Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NokiaOS Pro — NOKIAOS-reload

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.


Overview

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.


Requirements

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)

Building

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()).


Architecture

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

Scripting Runtimes

JavaScript (JsInterpreter)

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 GameEngine canvas:
    • 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

Lua (MiniLua)

Lua 5.x subset with:

  • if/then/else/elseif/end, while/do/end, for/do/end, repeat/until, function
  • local, return, break
  • Standard libs: math.*, string.*, table.*, os.clock(), os.time(), io.write()
  • Custom print() output to terminal buffer

PocketBASIC (PocketBASIC / PocketBASICAdapter)

Line-number BASIC interpreter with PRINT, INPUT, LET, IF/THEN, GOTO, GOSUB/RETURN, FOR/NEXT, DIM.

Expression Parser (ExprParser)

Standalone arithmetic/string evaluator used by BASIC and other modules. Supports float variables, int variables, string variables, and function calls.


Themes

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.


Multi-User System (DiscoOS)

  • Login screen with user/password authentication
  • Multiple user accounts with UID (0 = root)
  • Session persistence via RMS (DiscoSession record store)
  • Auto-login if saved session exists
  • isRoot() check gates privileged operations

File System

  • 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 Inventory

Productivity

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

Development & Scripting

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

Internet & Communication

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

Entertainment

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

System & Tools

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

RMS Store Layout

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.)

Configuration

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.


Version History

v6.0 ULTIMATE (current)

  • 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

License

Proprietary / personal project. All rights reserved.

About

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.

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages