Well, I finished my first pre-MVP #FoundationOS shell script. It opens a file called "test", and displays some content from the file. The kernel runs in Linux userspace, and isn't quite a true OS yet, but it demonstrates successful inter-process communication between the #SubSky p-code userspace shell and the C "kernel"'s filesystem server process.

Here's the script!!

// "cd" to env
ci= #1

// Open "DOS C:" root DB, and "cd" to it
open \06\80\FB\7D\06\B8\DF\67\80\00\00\00\00\00\00\00\00DOS\20C: #0 #0 #0 #0 #1
ci= $r

// Open the file "test" inside the DB, and "cd" to it
open \04\00\00\00\00\00\00\00\80\00\00\00\00\00\00\00\00test #0 #0 #0 #80000000 #1
ci= $r

// Read 10 bytes from the beginning of the file
read #0A #0 #0
read #10 #0 #0

// Close the file
close
...a bit more complicated than running $hd test, but the debug shell is basically just a CLI interface to the syscall interface, for now. A future improved shell will not require you to enter so many magic numbers....

The Not Implemented crash which happened when I closed the file happened because the "host db" process which serves the "DOS C:" root (the external host filesystem) became the sole owner of the file the shell process opened, and I haven't written the appropriate callback for that event.

#OSDev #FoundationProject
After researching open-source licensing further, I've adjusted the licensing in the #SubSky project.

  • The CPU library and the SubSky stdlibs are under the LGPLv3
  • The examples are under the CC0 1.0 (basically public domain).
  • Everything else (emulator, compiler) are under the GPLv3
Before, everything was licensed under the LGPLv3.

I know no one would want to use this project for something commercial, at this time anyway, but I suggested in the README the possibility of paid non-GPL licensing. Just in case ;)

https://gitlab.com/golemwire/subsky/-/tree/itemsys?ref_type=heads#licensing

#FoundationProject
Files · itemsys · Ethan Black / SubSky · GitLab

A simple, minimalist, and easy-to-use RISC ISA and computing environment intending to strike a reasonable balance between elegant simplicity and practical power.

GitLab
Totally!

Some of the main things #SubSky lacks in its instruction set (other than larger things like vector instructions and floating-point, which it isn't supposed to have):
  • Instructions for 2-byte memory R/W (it has read/write word/byte, but not 2-byte).
  • A good way to quickly negate a non-normalized boolean.
Presently, you use CPT to "normalize" a boolean to either 0 or 1, then XOR with 1. That's two instructions, which is annoying.
If I had unsigned reverse monus, I could just do <bool> < 1 (a trick I found in the RISC-V ISA manual; a good read as well! (I haven't read the whole thing lol) ).


There's a remaining unused encoding for a unary operation: ADT <Q> IP <B>. Currently this results in Q += A, which is just a less-capable version of ADD <Q> <A> <B>.
So! I want to make ADT <Q> IP <B> be a special case which does Q = bitsize(B).
With bitsize (Hacker's Delight 2nd ed pg. 106!), floating-point emulation could be made faster (maybe even by a lot).
I am going to start posting more about my projects.

#FoundationProject -- a project to rethink, rework, and rebuild the computer technology behind the scenes.

#SubSky -- A minimalist CPU architecture and computing environment. https://gitlab.com/golemwire/subsky

#Itemsys -- an object-capability model which defines how data and actions work.

#FoundationOS -- The OS of the Foundation project; Itemsys as an operating system. #OSDev

#BeingsOfIsness -- an action-adventure story game with fighting-game mechanics, in development for SubSky. #gameDev
Ethan Black / SubSky · GitLab

A simple, minimalist, and easy-to-use RISC ISA and computing environment intending to strike a reasonable balance between elegant simplicity and practical power.

GitLab
Line counts for my videogame, so far. #gamedev #FGC #fightingGames #gaming #lowLevel

[Lines Words Chars]
117 371 2118 bobcolor1.0/bobcolor.s
23 63 798 bobfighter1.0/character.s
580 3898 25450 bobfighter1.0/fighter.s
808 5018 33125 bobfighter1.0/fighter:step.s
423 2700 19629 bobfighter1.0/fighter_change_state.s
180 1245 7962 bobfighter1.0/render.s
408 2572 15656 bobphysics1.0/body.s
59 348 1941 bobphysics1.0/render.s
499 2832 14905 bobphysics1.0/world.s
454 1305 8305 characters/Testman.s
203 1036 6313 ctrlr_overlay1.0/ctrlr_overlay.s
175 1595 7622 worlds/debug_world.s
389 1417 9142 BoI.s
217 1126 7364 controllers.s
43 103 513 ctrlr_mappings.s
123 566 4055 player.s
146 743 4238 screen.s
168 1062 6349 temp_horrid_ai.s
167 1056 6298 temp_horrid_ai_2.s
68 354 2427 bobfighter1.0/attack.h
64 548 3477 bobfighter1.0/character.h
222 1112 7335 bobfighter1.0/defaults.h
29 306 2004 bobfighter1.0/defaults_checks.h
223 2145 13788 bobfighter1.0/fighter.h
14 71 486 bobfighter1.0/render_defaults.h
43 155 1021 bobphysics1.0/body.h
50 258 1628 bobphysics1.0/render.h
24 109 661 bobphysics1.0/render_defaults.h
16 28 147 bobphysics1.0/sprite.h
99 363 2455 bobphysics1.0/world.h
17 47 264 ctrlr_overlay1.0/ctrlr_overlay.h
17 21 192 ctrlr_mapping.h
18 37 251 player.h
6086 34610 217919 total
It's being written for #SubSky.
Making 0x00 0x00 a no-op in my ISA was a mistake. I might want to adjust that before I get the #SubSky ISA out of beta.... #ISADesign #ISA

This software I'm making is pretty abstract... I think this particular task qualifies as kernel development ..?

I'm adding support for my object-capability model #Itemsys to my #SubSky computing environment. I plan to [re-]port my emulator Sbse to UEFI.

#OSDev

Black Loops // Cervus @ Minimüzikhol - 04 Apr feat. Black Loops, Subsky

#SESH #BlackLoops #Subsky

https://sesh.sx/e/1919369

RE: https://fosstodon.org/@golemwire/115075076162218775

I'm starting a Fluxer (Discord alternative) group for my #SubSky computing environment :D

Invite link: https://fluxer.gg/I2P03SBv

#ISA #programmingLanguages

@kabel42 @rl_dane #SubSky uses a bottom-left origin ;)
My rationale is that it is more reasonable for a coordinate to *increase* while going *up* rather than for it to *decrease* while going *up*.

Also the math world does it that way (though they also have cursed standards for rotation/orientation.)