Jump to content
  • Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal

Ocawesome101

Members
  • Content Count

    11
  • Joined

  • Last visited

  • Days Won

    3

Posts posted by Ocawesome101

  1. In September of 2021 I started investigating what it would take to write a LuaPosix compatibility layer for the original ULOS.  While it is indeed possible, ULOS's Cynosure kernel simply wasn't designed around that sort of API—it would at best have required a large amount of work and been difficult to accurately reproduce LuaPosix's behavior.  There were also a few idiosyncrasies with the system as a whole, and it doesn't work on 256KB of memory, which is unfortunate.

    Cynosure 2 is my answer to this problem.  Its features include, but are not limited to:

     - Fully pre-emptive multitasking without requiring the `debug` API

     - Full, secure kernel-user separation, complete with removal of the `component` API.

     - Support for full POSIX file permissions, even on regular managed filesystems!

     - System calls performed through `coroutine.yield("syscall", "name", ...)` with no performance overhead.

     - A subset of POSIX standard system calls, some with slightly different behavior to account for Lua's advantages (`ioctl`, `open`) and limitations (`fork`).

     - The fastest VT100 emulator ever written for OpenComputers - comparable in speed to the original Cynosure's, and not limited by a poorly-written buffering library, Cynosure 2's VT100 emulation leaves its competition in the dust.  It's accurate, too - with (almost) all the features of Linux's VT100 emulator!

     - Sessions, process groups, character devices, line disciplines, VT100, oh my!  All the features you'd expect from a Unix-like kernel, implemented the right way.  System calls follow the Linux manual pages as closely as is reasonably possible.

     - True Unix-like multiuser support, with real and effective user and group IDs as well as saved-set-user-and-group-IDs.

    DIsclaimer: Cynosure 2 is still in heavy development and not all of these features are fully implemented yet. Please contribute!  Also, yes, just writing the LuaPosix compatibility layer would have been less work, but ULOS 1 had some other idiosyncrasies / weak points - and this was the more fun route :)

    You can find Cynosure 2's source code at https://github.com/oc-ulos/oc-cynosure-2.  I'm looking for bug-testers, contributors, and userspace developers.  Join my Discord server for development updates and for any questions/comments/concerns you may have!

  2. open-kernel-1-demo1.png.7be024e35869a5a84c28c5ff3fe54fb8.png

    open-kernel-1-demo2.png.39a34c6f7b65b5a37d84b6b01c61816f.pnghttps://github.com/Ocawesome101/open-kernel

    This is a project I've had sitting around for a while, but never really finished. So, I've decided to post it here.

    Open Kernel is my first actually-usable OpenComputers operating system. It has its quirks, but is fairly stable and has a decent set of programs.

    Note that Open Kernel 1.0 is NOT OpenOS compatible.

    If someone would like to fork the project and continue it (fix multitasking, etc) that would be fine.

     

    An installer is linked in the README of the GItHub repo.

  3. 1 hour ago, Zap said:

    Hi Ocawesome101
    the problem seems to be on line 36 of io.lua
    you're missing a "then" at the end of the line

    Thank you! I guess I need to do better checking lol. 

  4. I have made a second attempt at writing an OS, and it actually boots... but it refuses to recognize /apis/io.lua as existing - when I loadfile it, it just says '/sys/boot.lua:46: Attempt to call a nil value'.

    Also, I can't get it to display anything on the screen (I'm using OCEmu by gamax92, so maybe that's my problem).

    I have attached the entire filesystem as of now. (And before you ask, yes I know that /apis/graphics.lua is missing.)

    Filesystem:

    /init.lua

    /sys/boot.lua

    /apis/io.lua

    /apis/gpu.lua (unused)

    /apis/filesystem.lua

    init.lua boot.lua filesystem.lua io.lua os.lua gpu.lua

  5. 4 hours ago, AdorableCatgirl said:

    You never executed the loaded function on init.lua:13.

    Also, look at your print function in boot.lua. It won't work. You need to define w, h, cx, and cy outside of the "if not gpu then ... end" block.

    Ohhhh, okay. Thank you! :)

  6. Okay, so here's my problem.

    I am trying to make my own custom OS for OpenComputers. However, I am having issues with the GPU displaying on-screen.

    I have code that should, as far as I can tell, do what I need it to, but doesn't.

    How to reproduce:

    Download the attached .lua files, and put them on a floppy disk. Place init.lua in the root directory (of the floppy), and boot.lua in sys/boot/ (so the files on the floppy should be /init.lua and /sys/boot/boot.lua). Boot from the floppy, and you will see what I mean.

    If anyone can help me, or knows what I can change or look at, your help would be greatly appreciated :)

    Before you ask, I have already looked at the Wiki entries on Component, GPU, Screen, Writing Custom OSes, and that one forum post about 'Custom OSes under OpenComputers' Lua architecture'.

     

    I am probably a moderate to intermediate Lua programmer by now, and this code is the result of around an hour of work.

     

    Thanks in advance!

    boot.lua

    init.lua

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and Privacy Policy.