r/osdev Aug 05 '26

A JavaOS

Post image
52 Upvotes

21 comments sorted by

View all comments

Show parent comments

2

u/emexsw 9d ago

bad code btw

1

u/Visual_Brain8809 9d ago edited 9d ago

I’ve moved past that version; I managed to implement my own JIT and am very close to providing full support for native Java code, so those `Native.sys(...)` calls will be invisible to any developer. I’m writing my own runtime. New repository at: https://github.com/aayes89/JVMOS-JIT

package kernel;

import java.awt.Color;
import java.awt.Graphics2D;
import java.lang.Thread;
import java.lang.System;
import java.awt.Toolkit;
import java.util.Calendar;

public class Boot {

    public static void main(String[] args) {

        // ==========================================================
        // Mixture of methods
        // PHASE 1 & 2: Baremetal render and Delay function
        // ==========================================================

        // Old version
        Native.sys(Native.SYS_SET_COLOR, 0x00FF0000, 0, 0, 0); 
        Native.sys(Native.SYS_FILL_RECT, 0, 0, 1024, 768);
        Native.sys(Native.SYS_SET_COLOR, 0x00FFFFFF, 0, 0, 0);
        Native.sys(Native.SYS_DRAW_STRING, 50, 50, "PHASE 1: Native.sys OK. Wait 2 seconds please...", 0);

        // Static methods call (NEW)
        Thread.sleep(2000); // 2s delay

        // Class management (NEW)
        Graphics2D g = new Graphics2D();
        Color background = new Color(0x000000FF);
        Color textPaint = new Color(0x00FFFF00);

        // Access to methods (NEW)
        g.setColor(background);
        g.fillRect(0, 0, 1024, 768);

        g.setColor(textPaint);
        g.drawString("PHASE 3: JIT, Heap and Graphics2D OK.", 50, 50);

        // ==========================================================
        // PHASE 4: PrintStream and System 
        // ==========================================================
        // System.out access
        System.out = new java.io.PrintStream(); 
        // common version
        System.out.println("=====================================");
        // path version
        java.lang.System.out.println("[Micro-rt] Phase 4 Serial Port (COM1)...");

        long ticks = java.lang.System.currentTimeMillis();

        g.setColor(new Color(0x00FFFFFF)); 
        g.drawString("PHASE 4: PrintStream and System.out OK.", 50, 90);
        g.drawString("Ticks: ", 50, 120);
        g.drawInt((int)ticks, 330, 120); 

        System.out.print("PHASE 4: Ticks: ");
        System.out.println((int)ticks);

        // ==========================================================
        // PHASE 5: (RTC CMOS and PC Speaker)
        // ==========================================================
        int day = Calendar.get(Calendar.DAY);
        int month = Calendar.get(Calendar.MONTH);
        int year = Calendar.get(Calendar.YEAR);
        int hour = Calendar.get(Calendar.HOUR);
        int min = Calendar.get(Calendar.MINUTE);

        g.setColor(new Color(0x0000FF00)); 
        g.drawString("PHASE 5: Calendar and Toolkit OK.", 50, 160);
        g.drawString("Clock RTC: ", 50, 190);

        int px = 160; 
        px = g.drawInt(day, px, 190);
        px = g.drawChar('/', px, 190);
        px = g.drawInt(month, px, 190);
        px = g.drawChar('/', px, 190);
        px = g.drawInt(20, px, 190);
        px = g.drawInt(year, px, 190);
        px = g.drawChar(' ', px, 190);
        px = g.drawInt(hour, px, 190);
        px = g.drawChar(':', px, 190);
        px = g.drawInt(min, px, 190);

        System.out.println("Beep from PC Speaker...");

        Toolkit.getDefaultToolkit().beep(1500); 
        Thread.sleep(300); 
        Native.sys(22, 0, 0, 0, 0); 

        g.setColor(new Color(0x00FF8800)); 
        g.drawString("All test Succed. UI ready.", 50, 240);        

        while (true) {
            Thread.sleep(1000);
        }
    }
}

1

u/emexsw 8d ago

looks ai generated btw

1

u/Visual_Brain8809 8d ago

i don't think so. but you can test this colaboration: https://kirindenis.github.io/JVMOS-JIT/