#MINTIA (not vibecoded)
1 messages ¡ Page 27 of 1
thats not that big
i could lift that
small computer really
(DEC Alpha mainframe from 1992)
looks like a fridge
I see, it turns out the boundaries are softer than I thought. Thanks.
i need to make a logo for XRSI or XR/corp or whatever its called
ive wanted to do some aesthetic work for a while an d i think today may be the day
i want the firmware to draw a cool sidebar containing various system info which OSes avoid drawing over until their DE is ready to come up
mock up
much more stuff will be in that sidebar like (complete list):
- XRSI logo
- representation of the system its running on (thats the only thing there in the mockup)
- rectangles for each of the NUMA nodes which say "NODE 0: 4096KB" or however much memory
- NUMA node rectangles also contain little icons for each of the CPUs which start out saying "IDLE" until kicked by the system software at which point itll say "ACTIVE"
Does your hardware platform support NUMA?
I'm curious to know whether you break the nodes down into subnodes or not
on the software side itd probably be a good idea to stop conflating kernel nodes with hardware nodes
having a different number of virtual nodes than physical nodes could be desirable for scalability
working on it
hmm maybe the sidebar should be on the left
make it float around like a dvd screensaver
left is WAY better
if you have a portrait display it puts the sidebar at the bottom
ignore the text being weird thats just placeholder text until theres a bitmap to draw there
hmm itd be cooler at the top tho
top looks stupid too
so i just made it always be on the left
drawing run length encoded xrstation image
the rom is only 128KB so this is actually quite difficult to fit
luckily it seems it would actually look better if that bitmap were a bit smaller
so thats an easy way to save space
dunno if that might help but there are simple compressed image file formats
like qoi
dunno how much space that will save you though
it says its usually worse than png and the png of that is already 25k
my RLE is 8k
sooo
thas not surpsoed to hapen
@icy bridge when im done with this it would b sick if you modified your linux port so that the video terminal stays out of the way of the firmware's sidebar, the idea is that it stays visible until the OSes desktop environment comes up, so like a boot log or early terminal would ideally not obscure it
i think it would look really cool
when its done itll like display the name of the booted OS, the status of all the processors, etc
and a bitmap image of the computer its running on
as here
cant you make a vectorized version of that and render that instead
i think the way you're supposed to do that kinda thing with linux is using a non-verbose boot (which makes it not touch the framebuffer at all)
Looks cooler bitmapped
but I'll look into it
but it's eating lots of memory
theres gonna be some new entries in the device db struct for the width and location of the sidebar so you know what to stay out of the way of
only a few kb
i have a good rle
about to get better i just had a good idea
i bet you could encode it as vectors and have it take like 200 bytes at most
it was 8k now its 5k and with this next change i wonder if i can get it to 3k
also i realized the fonts encode a bunch of glyphs for ascii codes >=128 which i dont need and can trim off
sounds good, I think the best way to do that would be to communicate a display rectangle
how can rle be good or bad
also its like mostly a black rectangle so ofc rle wins here
ud be surprised how many bit tricks you can play to get it tinier and tinier
its fun actually
its more about reducing the metadata but im going to do that too
no i cant
that would look rly bad
2 bits
ah ok
so like i could do a 16 bit palette of greys
or something
and in fact im going to look into making each rle image encode a palette beforehand and then use indices into the palette
They're saying they might want more color for later
then they can handle that differently
I'd say 16 colors are more than enough to make this kind of thing
overcomplicated
how is dithering more complicated than RLE
actually if you dont do RLE and use 2 bit colors you still get like 16 kib per 256x256 image
hmm
I got a crazy overcomplicated idea for compressing this kind of image
But i better shut up 
no say it
dont you dare say it
ignor him
ignore this guy he doesnt know what he's talking about
he's happy with his RLE that can only do like 5 kib
let him live in blissful ignorance
Okay but hold up i'm doing something rn
I don't recall what method this was again but use the decompressed data, a pointer within it and a length, to get both RLE and pattern compression
So since this image is mostly just big areas of one single color you could fierst break it into a grid of square cells of k size on each side and start merging cells that don't have any sub-cell details (so they're just one solid block of some color) into rectangular or square cells and on cells that do have sub-cell details you could do normal rle
(you can do the merging in blth dimensions)
Then you just describe "heres a big block of some color that goes from cell X1,Y1 to cell X2,Y2" and the ones that couldn't be merged this way can be RLE'd and also have a small metadata saying the location on the grid of these cells
This will probably save up a lot on images that aren't too noisy overall
@twilit smelt so what do you think
it sounds very fancy and good
but ur right its overcomplicated lol
50 good boy points to whoever can decode this format without me giving them any hints
decodes into this
kind of a cool looking bug
waoe
woohoo
down from >8k with the original rle
still too big...
check THAT out
i got it down to 2k by encoding all the colors as 4 bit indices into a palette
and all of them are packed at the start
the run control bytes come after
format:
- offset to run control bytes from start (2 bytes)
- 4-bit palette (16 bytes)
- nibble pool (N bytes, packed 4-bit nibbles)
- run control bytes (M bytes)
cant you configure the linux kernel console framebuffer driver to start drawing offset from an x coordinate?
thats only 500 bytes worse than DEFLATE gives me btw
like framebuffer->start += x * sizeof_pixel; framebuffer->width -= x;
what if you introduce long and short runs
bytes of the format xy where x is between 1 and 15 (pixels) of palette index y
and 0y xx where x is the length + 15 and y is the palette index
my runs look like this
-- 7 6 5 0
-- +----------------------------------------+
-- | L | G | LENGTH |
-- +----------------------------------------+
-- | LENGTH |
-- +----------------------------------------+
where the first byte contains the low 6 bits of the length biased by -1 (so a zero means length of 1), G=1 means the run is a run of one nibble from the pool, G=0 means the run is a run of consecutive literal nibbles from the pool (this is used when theres a failure to compress due to a long series of un-alike pixels), and L=1 means the length is greater than 64 and therefore the second byte is needed
if L=0 then the second byte doesnt appear and the run is encoded in a single byte
the lua script i wrote for encoding this is 200 lines
and is extremely ugly
ive heard of using a bitwise RLE for encoding bitmap fonts and in fact this is how fonts were encoded in the original macintosh's rom for example
im not gonna bother with that lol
bitwise RLE is really easy though actually
@warm mural @mortal thunder do either of you know what the easy way to do bitwise RLE is
without googling
if you google youre lame
i know of a way to encode continuous runs of 1 and 0 bits really compactly
which is that you specify the length of the next run, start at 0 and switch between 0 and 1
so like 00 05 06 07 decodes into 111110000001111111
(i swear i havent googled it, i just kinda remembered something associated with how the original GB pokemon games store their character sprites)
yeah inversion points
bitwise rle seems pointless unless your fonts are really big?
like if your fonts are 5x8 for example there's little need at all
you can get the same storage capacity in 5 bytes
you used 4 bytes to encode 18 bits though đ
without even needing to compress them
thats not the point
i wasnt gonna type 240 ones and 255 zeroes to demonstrate it better
are those cases even common though? Iâd have thought normal data wouldnât have such regularity, at least color data
what would it be used for?
i think apple's encoding was more like this
7 6 4 3 2 0
+---+----------+---+----------+
| S | Length | S | Length |
+---+----------+---+----------+
where it was packed so that the run lengths were 3 bits (1-8) and the S bit decides whether you actually invert or not
so your example would be encoded as
1 100 1 101 1 110
which is 12 bits to encode 18 bits, a win
It's somewhat inspired by video codecs lol
i havent looked much into compression but i guess one way would be you have one bit for the data and 7 bits for the counter/length
iprogramincpp's way seems better
visual console continuity into mintia2
dont be fooled the firmware is DEAD! by then and gone
none of it is left
this is a visual trick to be pretty
fireworks
made it so the crash screen 'shutter' effect doesnt shutter the firmware side box
the fonts dont need to match up for the console continuity to work because the cursor is reported as pixel coordinates rather than character coordinates, so it is font agnostic
theres mintia2 using sun gallant demi while the firmware console was using haiku console font
it looks really cool
idk what else to say
I like how much larping you do (in a literal sense, not in a derogatory way), it gives the project a lot of character
quite cool indeed :3
Did that system image on the side come from a specific firmware or did you invent that
wdym ssystem image on the side
Like having the picture of the machine
i made that up
In the firmware
Yeah but the concept didn't already exist right
yeah ok
its the same image used on the cover of the handbook
It looks cool
My only criticism is that whatâs the point of it? Like it takes away usable space just to be able to display a cool image
there will be more info in the sidebar
oh I see
and also it will go away when the DE is up
itll only be there during boot logs and like text mode use of the OS
Are you gonna bring back the mintia console eventually
yeah its only gone bc i dont have an IO system yet lol
itll also position itself in the middle of the rectangular area to the side of the sidebar to avoid obscuring it
when is my kernel gonna be cool like that 
i feel like there is like several months before I can start running DOS apps on top of it
Don't think that's gonna look good
Too much clutter maybe
it will look good
its not necesarily gonna look exactly like the old mintia console did
is your OS gonna be like OS/2?
more like Windows 3.1 / 95
it is a DOS based OS
maybe i shouldâve made an OS/2 clone instead
given how it was meant to be a âbetter Windows than Windowsâ
I donât know anything about OS/2 design or internals though
i haven't looked into OS/2 or win9x much
like one of the design requirements of my OS that everything uses DOS
drivers, IO etc all done through DOS and BIOS
which I know is bad design
because even Windows 3.1 realized this was a bad idea and shipped 32-bit disk drivers
but I want to rely on DOS as much as possible
i thought that was a windows for workgroups 3.11 thing
I donât think so
I honestly think my idea is so cool
I hope the execution ends up being well
there is a book OS/2 internals
it is quite unixlike in architecture
dont think thats normal
why are the fireworks so small
theyre like boxed in
people have been trying to get away from DOS, why the hell would you want to rely on DOS
bc i made them smaller
long time ago
wanted to be able to see logs and stuff while theyre going
there are no fewer particles the view port is just smaller
because I love DOS and I wanted to make something that uses it
and with memory protection itâs not that bad
like the biggest issue is that a lot of IO operations are going to be slow
i think i've once heard of someone who really loves win9x and doesn't like NT, lol
at least this part of their winME video sort of indicates that, i guess:
yes, apparently, a "poorly written driver" can easily bring down NT, but not win9x somehow, according to this framing
I really doubt that lol
i could link the whole video, but even in context, this just felt really odd to hear the first time i watched it
i guess they were sick of people claiming NT4/2000 was infinitely more reliable than contemporary versions of 9x?
honestly the more I learn about how 9x the more I appreciate it
I donât think itâs as much of a hack as people claim / think, itâs a proper 32-bit multithreaded operating system that rarely uses DOS for anything and nicely extends it
it has some really major protection issues like exposing IDT but those are due to silly backwards compatibility reasons
i'm curious to see how its dynamic linker works
supposedly, its implementation of ExitProcess() didn't terminate all but the calling thread prior to performing process shutdown as opposed to NT
that, or raymond just said it worked different from NT somehow
And I find it heavily unfair that Windows 3.1 is just treated as an interface that runs on top of DOS
Itâs literally a full 32-bit preemptive multithreading kernel with memory management and stuff
(in enhanced mode)
by any measure windows 9x is a wonderful design given the extreme path-dependence it had to contend with
I love 9x
i don't think it's even true for, like, windows 1.0
yeah, but itâs way less true for something like 3.1 enhanced mode
my design diverges from 9x in that my kernel uses DOS for IO and drivers
instead of shipping its own drivers
but other than that Iâm trying to be similar to 9x design
can we see it? i'm interested how this ends up looking
currently there is nothing you can see - no interface and no apps for it, Iâm focusing on the basics of the kernel before those
there isnât even a crash screen or kernel debug output
it isnât anywhere near being ready
but I had posted an old source code dump here:
#lounge-0 message
I tested it from kernel space (and user space) and I could use DOS/BIOS for IO and drivers, so the basic idea works
Iâm now rewriting major parts of it to be more robust and support running DOS apps on my OS
if you want to compile it you need to use OpenWatcom in DOS, run âwindyâ to enter the kernel (just like how you run win to enter Windows 3.1)
Anyway I shouldnât be talking about this here, if you want to continue you can comment on my thread - itâs also here, search for the name Windy
I feel like I hijacked @twilit smeltâs thread which is not nice
to hyenasky - Iâm sorry for hijacking your thread to talk about my project, wonât do that again
is it #1495511907472248863?
yes
I'm pretty sure POSIX doesn't require that to happen
Like, destructors get called even while other threads are still running and stuff
i was talking about win9x, not POSIX
win32 isn't POSIX, so i don't get how that's relevant
I'm just saying that the "other" design also doesn't handle the case where you have other threads running and you call exit
well, i only brought it up because NT doing it was a point of criticism from a project on github that i was researching
https://devblogs.microsoft.com/oldnewthing/20070503-00/?p=27003 i think this is the article you're taking about
Exiting is one of the scariest moments in the lifetime of a process. (Sort of how landing is one of the scariest moments of air travel.) Many of the details of how processes exit are left unspecified in Win32, so different Win32 implementations can follow different mechanisms. For example, Win32s, Windows 95, and Windows NT all shut [âŚ]
yeah
I love Raymond Chen articles
for the record, the project in question is, of course, the operating system design review by eillot killick, and specifically under "Process Meltdown," they criticized the way ExitProcess() dealt with outstanding threads on NT
apparently, this was the only part of the document i could find regarding how the "other" design handles process shutdown:
The GNU loader doesn't implement any such startup performance hack to forgo locking on process startup. The absence of any such mechanism by the GNU loader enables threads to start and exit at process startup or within a module initializer. The same is true for process exit. Therefore, the GNU loader is more flexible in this respect.
this is from the end of "Windows Loader Initialization Locking Requirements"
simply put, there's too much from the document alone i could try to pick apart without starting a whole new thread
looks pretty cool actually
yea
need to make little bitmaps to represent CPUs now
@icy bridge i made a tux boot badge bitmap for you
oo thanks
This Could Be You! (jerry rigged to display tux bitmap and say linux)
Lol
Extra points if it says the kernel version below
why does it look so sexy
it gets the os name from a hard coded string field in the boot block
so thatd be hard
itd have to be in there
i have to make a 40x64 CPU icon now
40x64 cpu icon got hands
out of curiosity is this project really NT inspired?
no i hate nt
i love NT when i don't have to think about win32
this is the little cpu icon i settled on
pointing out that its a risc cpu is part of the 1989 larp
they couldnt stop saying risc back then
they stay grayed out except processor 0, to indicate they r idle
until they are IPI'd for the first time and then they color themselves in
to indicate active
the code for this sidebar stuff is some of the gnarliest ive ever written
only two things left
- new boot picker
- XRSI logo needs to be designed and put somewhere
but rn i need to take a break to get a bit of homework done
well ill do the boot picker first so that it reaches functional parity with the old gui and i can merge it
Thats pretty neat
Did they actually have numa nodes back then and were they really that tiny
the low ram is a quirk of the default ram being 4mb and the emulator splitting it evenly between the nodes (of which there must be 4 because 16 procs were specified)
Also why risc cpu and not the actual xr cpu name
this is not a sane config lol
Oh ok
its just a result of me putting -cpus 16 at the command line without putting a proportional amount of ram
they did have numa nodes
one of the AViiON systems was a 16 processor m88k machine with two numa nodes each with 8 processors i believe
And how much ram
that was 1992
Yeah
What about this
bc XR already appears too many places on that screen
and also
.
Oh ok
risc of rain 2
Because u did have a prettier pic on the readme
this firmware affects mintia 1 too right
?
wdym
this firmware has to chain load the old firmware to boot mintia1
U have an xr cpu pic on the readme somewhere
oh
isnt that like
too hacky
Backport mintia1 to new firmware
^
no its way simpler lol
yes they would
I think thatâs nicer and not hacky
that literally is how NT would boot on some systems
it reminds me of third party CSM modules
i saw that
yes autocorrect
also mintia1 is not the only OS that relies on the old firmware
theres also aisix
it chain loads it to boot both of those
why tf did it auto correct to Jacky đ đ đ
idk
maybe it thought it was a name
aisix revival when
never it was awful
and all of this runs in computercraft
is my understanding correct
new firmware gui is up on the web demo https://xrarch.github.io/
yeah it can
i ahvent tested that in forever though
every time i test it i have to update the extremely ancient lua emulator with whatever platform changes occurred
Wtf?????
ok what the hell
Isnât computercraft like a Minecraft mod that lets you run Lua
yes it is
yeah
how can it run an OS
đ
this project started when i was a preteen on the computercraft forums ppl kept saying "its impossible to write a real OS for computercraft. you can only write a replacement shell." and i decided to prove them wrong by writing an emulator for a custom ISA, in lua ofc, and then writing a "real OS" for that
and it just kept growing until it outgrew computercraft
so i ported the lua emulator to use love2d
and then that got too slow eventually
so i rewrote the lua emulator as the C emulator
and thats where we are now
11 odd years later
thats like more than a decade
if you boot aisix or mintia1 u can see the old firmware come up lol
the one-to-one rewrite of mintia1 in jackal that i was working on was going to boot under a4x directly
but it started to dawn on me how vast mintia1 was and that that was going to take me months so i gave up
directly rewriting 120k lines isnt a cake walk
The MINTIA operating system provides an environment suitable for use in a range of systems, from single-user desktop workstations to minicomputers supporting dozens of concurrent users. It does this while retaining performance and reliability.
shouldnt it be the other way around
?
yeah minicomputers are the size of fridges
oh
hence the term microcomputer
smaller than a minicomputer
your pc is a microcomputer
80s terminology:
computer = size of a room
minicomputer = size of a fridge
microcomputer = fits on a desk
so what would a single user desktop workstation be
a minicomputer
or like a computer
a microcomputer
only if you stretch the definition of unix
it was my first semi-viable preemptive multitasking os project ever
2020
it takes forever to compute fibonacci sequences
its recursive fib
non memoized
so yeah
it did not swap
includes the earliest comment documentation of my attitude toward swapping
17 yr old me wrote that
godspeed to him
pascal
the 1980 RISC LARP is so cool
1990*
oh
i see
How far is MINTIA2 progressed, anyway?
I know old MINTIA had a whole userspace running right?
this is what a crash look like now btw
not as far as i would like
What was RAM limit again?
@icy bridge this is all pushed so if you wanna try to get linux looking good its stable now
16 MB or smth?
That number's definitely higher than last time I asked 
xr/station is up to 32mb for 1 node
its not
its been 256mb since 2018
so thats unlikely
its 4mb by default
4mb 1 processor would be a typical config youd come across
are the CPUs 32-bit or 64-bit
32 bit
What kind of virtual memory does this do? Radix tree paging?
software tlb refill
Oh interesting
So like MIPS where software decides what page maps are
That makes the CPU a lot easier
I still don't get how these things work lol
Basically, instead of having hardware do virtual to physical translations, software does it. And then just stores said translations in the TLB (Translation Lookaside Buffer; cache of translations) explicitly.
yes
Well that definitely is easier than making a hardware page table walker
I mean that's why we have the TLB
No I mean
Both have the TLB
But the mere fact software is bothered to fill it, makes it way slower than a hardware page table walker would be
That wasn't always true
The software refill on many risc chips was famously faster than the hardware refill on x86 for some time
Partly because x86's walker couldn't take advantage of software optimizations
i.e. describing mappings in a more compact manner in the TLBs?
causing fewer faults?
Hmmm, and what happens when you try to access a page that isn't on the TLB at the time, does the cpu raise a fault so the software fills some entry?
Yes
Bottom up page table walking was a common one
Well what I can confidently say is that on modern CPUs hardware walkers are everywhere for a reason
google has become literally useless... what is that?
They have enough silicon to do multi level TLBs and stuff which essentially does bottom up page table walking in hardware
It's where when you take a tlb miss exception, you try to grab the PTE directly from a recursive mapping of the page tables. If the containing page table is in the TLB already, then you get the PTE right away and don't need to walk the rest of the levels. Otherwise you take another TLB miss on it and that time you end up looking at the PDE, and so forth until you get to the top level table which is anchored in place with a "wired" TLB entry that is never replaced
This works bc of how recursive mapping works which I won't explain
if u don't know alrdy
but basically this saves you from having to look up the upper levels of the page tables
most of the time
I know recursive mapping
Software TLB feels ugly
I think caches like this should be mostly transparent to user
They are
User mode never sees such caches
user was bad phrasing, I meant osdever
out of curiosity does software TLB mean the OS can implement its page tables in any format it desires?
Yes
cool tbh
yeah but there's usually no reason to use anything other than the CPU's tlb entry format
you dont even need page tables you can use any data structure and get away with it
(well by page table i mean radix tree)
i think itll look better if it goes on the right
it feels imbalanced to have the console text and the sidebar stuff all putting so much visual weight on the left
"user" in the context of like an architecture manual refers to the osdev
who is using the chip
sidebars traditionally go on the right
i have to admit the idea is quite a nice one
and since all monitors are widescreens today i might or might not copy the sidebar idea for the keyronex console
but i'd add an analogue clock, that would add a classy touch, like a lexus dashboard
what if the TLB refill routine used a random number generator to decide the entries' page frame addresses
Btw is it the firmware or the kernel itself the one that starts the other cores?
why would the firmware start the other cores
in this platform they all start simultaneously at reset, processor id 0 goes on to become the boot processor and the others enter a hlt loop waiting for an IPI
the kernel IPIs them (using a firmware interface) to get them to start executing kernel code
how do you decide the start PC then for each core
so the code there does a check like if(WHAMI != 0) while(true) hlt();
FwxReset:
.global FwxReset
// Zero out RS.
mtcr rs, zero
// Invalidate the caches.
li t0, 3
mtcr icachectrl, t0
mtcr dcachectrl, t0
// Set our exception block.
lui t0, zero, 0xFFFE0000
mtcr eb, t0
// If we aren't processor zero, go to the MP corrall and wait for an IPI.
mfcr t0, whami
bne t0, .mp_corrall
// Reset EBUS to quiescent state.
la t0, 0xAABBCCDD
mov long [0xF8800000], t0, tmp=t1
// Set the initial stack pointer to 1024 bytes.
li sp, 0x400
j FwReset
.mp_corrall:
// Set the stack pointer to 0x400 + (320 * id).
li sp, 0x400
add sp, sp, t0 LSH 8 // + 256 * id
add sp, sp, t0 LSH 6 // + 64 * id
mov a0, t0
j FwProcessorStartup
Because it shows you in the sidebar which cores are started, so i suppose it does have an involvement on that
thats the reset code
yeah it updates the icon when the OS calls the firmware interface to IPI them
ok that kinda makes sense
actually it has the processors update the icon before they jump to the OS-specified entrypoint
so it only gets updated if the processor itself woke up correctly
what is EBUS btw
the system bus
and what does it do
Busing around
from the system software perspective it provides a general layout for the physical address space
from the fantasy hardware perspective i suppose it would be a complex protocol of electrical signals over copper traces and a slot form factor and so on
(bus)
hmm
for a second i thought it was like the equivalent of PCI
for your thing
did you not know that
boots and runs bash and glibc
shouldve ported neofetch
thats incredibly cool ngl
why does it say This architecture does not have kernel memory protection
idk
i think it means monkuous compiled it with kpti disabled
or something
the coolest thing about it for me is that it is the ultimate vindication that my fake computer is a real computer
real enough to boot linux
and also its gratifying to see linux running atop my tlb refill scheme
this also means your emulator doesnt have like
any major bugs that linux could trigger
i mean last time monkuous worked on it linux did crash randomly but he thought that was more likely his fault than mine
oh
its probaly not my fault because mintia1 should have exercised the probably related emulator components like cache and mmu enough to weed out any bugs linux could be triggering
btw I think it looks way better this way
and the borders are much nicer than before
i cant wait until you start working on a window system for mintia
i know its like
a couple years away probably
(pessimistically speaking)
but i can't imagine it looking anything less than great
Someone enlighten me on the state of the art in slabs and magazines
the two words I donât want to hear again
Bonwick's paper?
I've read it
That's not the state of the art
That's the like origin of the art
I've been checked out somewhat while @warm pine and @warm mural have been studying it and have missed out on most of their cool findings
Ik abbix has a cool bitmap thing
#1485107693458030706 message
This is trivia but Linux has implemented them for a second time but renamed them
They implemented them ages ago in what they called their "SLAB" allocator, then someone said "SLAB has too many queues and too much per CPU, let's replace it with SLUB which won't have either", then SLAB disappeared, and now magazines have been reimplemented exactly per Bonwick and Adams
there's also SLOB for embedded systems
In a cryptic move they've called their "magazines" and "depots" as "sheaves" and "barns" respectively
Kegs being a reference to alcohol and buckets to marijuana
The analogies are always so interesting
i don't get this desire to rename existing concepts
In my experience, this is usually a sign that the author of the code does not know the state of the art very well
I renamed caches to zones (as per freebsd naming) because it makes more sense imo
There's also SLOP now 
(openslopware)
you mean like Limine? 
yeah
The author did not even refer to magazines in his patch submission which was bizarre
maybe they rediscovered it somehow?
He only later when quizzed about the name revealed he had implemented them as per bonwick and Adams' 2001 paper
I forgot why or if he said why he changed the name. But I think he said somewhere that magazine mighy be evocative of rifles, which is culturally insensitive to the people of the USA, where they have numerous school shootings as well as many other kinds of shootings
In USA they have strong feelings about whether these shootings should contikue and - you guessed it - if you have a difference of opinion with your interlocutor, it could end in tears and a bullet (just ask Charlie Kirk) But it still feels extreme to purge any word that can be associated with firearms from the kernel
Crazy Charlie Kirk came within 10 miles of me and that happened to him right after
wdym by came
he was in utah
oh
Got an evacuation order bc they found a gigantic cache of explosives
are u evacuating now
No that's miles from me
what country?
oh AT&T
so USA
where?
where are you even supposed to go in this case
Utah
he's with tung now
well, outside of the affected region
i find it funny how i can tell this is an iphone se 3rd gen from the top bar
also what does 2000 feet of 1100 W 1400 N mean
are people expected to know their precise geolocation in degrees on the meridians/parallels?
I'd guess those are street names
In SLC yes
lol
all i know is that the 45th parallel cuts through my country
middle, slightly south
during the scottish enlightenment our town planners decided that it would be more rational to lay out towns and cities on a perfect grid
glasgow is one of the poster boys of this movement
the americans were very influenced by our ideas so they built their cities on grids
ive seen that before
i thought the americans were the ones who started that trend
lmfao
so you can just locate yourself by a coordinate relative to some centre point
i wonder what the most efficient road layout would be for a given amount of buildings and the average traffic for each one in a city
the americans like to film in glasgow when they want to depict "new york city but 100 years ago"
aberdeen has a more ignoble claim to fame, they filmed some scenes here which were intended to be set in the late soviet union!
i feel like if let loose our former communist regime would've done something similar
i very much hate this
there is an apple film about tetris and you'll find the headquarters of the firm is in fact the zoology building of the university of aberdeen
but ceaushima wasn't so bad as to warrant redrawing streets
like a grid doesnt really sound efficient for traffic
it's not
but it's just a feeling idk how to prove it
some guy on yt did a vid about it
ok maybe a start would be that it has like N^2 intersections
it's said that cumbernauld in scotland or milton keynes in england may be some of the most efficient designs
yeah but is it mathematically provable to be the most efficient
milton keynes is grids within grids but it's really the separation of pedestrian from motor traffic that works for both of them
maybe it's the subjective experience that matters more
idk i dont trust human judgement on time perception
if you stopped whatever you're doing and just stared at a wall for 1 minute each day, that would feel worse than the same thing but done for a single second at a time, 60 times a day
that's maybe the trick of it
I don't think this is even a solvable problem
in any case living in cumbernauld probably feels a bit like doing that 24 hours a day
the houses there actually look good tho
Yeah true
this looks like brutalist crap
some other districts of the town
i also very much hate this
i get why they would want to film soviet movies in places like these
these were probably built many decades ago
when brutalism was a thing
because people were like "wow what if we built like this, it would be so cool!" until they actually built it and realized it sucks ass
it was the fashion until the 70s or so
milton keynes was built after that so it's much nicer
despite also being a town built practically out of nothing
why not
it certainly seems like it would be difficult to model
and you have so many things to take into consideration
for example do you care how congested it gets if there's a football match? are you prepared to figure out how you ought to account for traffic from fans both home and away? what about other events?
isnt it like any other algorithm
like even if the worst case is O(N^3) or whatever
you can still have an average O(N) ig
idk what that would mean for a road though
maybe you could always design for the worst case or design the roads differently for both the average and the worst
like making longer routes around the city for big events that have more capacity
idk im not a civil engineer
In most cases brutalism wasn't chosen for it's aesthetic
it's just cheaper to build with concrete
it's still cheaper, no?
you're still better off using basic geometric shapes and not doing any sort of outside facade work
money wise
and it's not like they were in the great depression either
that is literally what I said?
you were talking about brutalism as if people chose to do it because it looked good
brutolesm
lol remember brutal
yeah they kept bragging about how they were 50k loc
remember when that was a lot
the osdev power scaling sure has gotten out of hand
50kloc isn't that huge, is it?
idk if its even 50kloc
I know Managarm is way more
having worked on it I highly doubt brutal is 50kloc
BadgerOS is about 50kloc ignoring headers
mine is ~11kloc right now and it doesnt do much
I was curious and Boa32, my RISC-V CPU, is 20kloc
afaik that was a big factor
to me it seems we would all still be building cities in a brutalist style if we went by that logic
my kernel is only 1.1 kloc as of now
which makes me realize i should work on it more
how
Well that includes shitloads of peripherals and test code
But same project
I wonder where all that asm comes from because I did not write that much
CPU itself is 4kloc
peripherals another 4.4k
Found it
It was counting the submodule riscv-tests (official RISC-V unit tests) as part of my project even though it isn't
if i count absolutely everything i can get pretty close ```/mnt/c/boron$ cloc --vcs=git .
552 text files.
529 unique files.
62 files ignored.
github.com/AlDanial/cloc v 1.90 T=13.76 s (36.7 files/s, 5232.0 lines/s)
Language files blank comment code
C 256 9366 6974 32605
C/C++ Header 176 3171 4143 10784
Assembly 16 321 500 1539
make 33 197 210 554
Markdown 4 169 0 483
C++ 6 70 45 317
Pascal 2 8 0 160
DOS Batch 3 26 5 116
Python 2 46 24 111
Bourne Shell 7 6 4 37
SUM: 505 13380 11905 46706
-------------------------------------------------------------------------------```
but theres a lot of external code and things
and the kernel is only about this many```
/mnt/c/boron/boron$ cloc --vcs=git .
279 text files.
278 unique files.
11 files ignored.
github.com/AlDanial/cloc v 1.90 T=1.83 s (146.1 files/s, 23908.4 lines/s)
Language files blank comment code
C 149 6130 4987 20402
C/C++ Header 101 2009 2707 4811
Assembly 12 286 463 1368
make 1 55 47 175
Pascal 2 8 0 160
Python 2 46 24 111
Markdown 1 12 0 44
SUM: 268 8546 8228 27071
-------------------------------------------------------------------------------```
also your directory structure is kinda fucked, why the hell are you using single character directory names
r/z/s/zinnia
just put them in like ~/src or ~/work or ~/projects
what
that's fish doing it
it's repos/zinnia/sources/zinnia
what is fish and why does it do that
best shell
it does it so the path in your prompt isn't too long
aha, so a path compression of sorts
imo if the path is so long that you need a shell to compress it you have bigger problems
i mean personally id just make the path shorter by removing useless crap but sure i guess thats one strategy
yeah but i think it's already as minimal as it can get
idk man its not very hard to make to make it more minimal
it's essentially projects/distro/sources/kernel
the whole "(wayland)" part is just noise tho
is that really that important lol
it helped me more than it has caused issues
i see
the only thing like that in my prompt i actually have is the active direnv tbh
direnv?
its this thing: https://direnv.net/
ah
its useful if you are doing nix because it means you dont have to use their shitty bash setup
you just echo use nix > .envrc, direnv allow, and its all in path now
i like fish because it has really good completions most of the time
fair
zsh has some weird bugs/issues (probably caused by my bad prompt) with completions
I used fish for a while and I think fish is pretty good but its not POSIX
yeah tbh that's its biggest downside
I think zsh with oh my zsh gets pretty close to its functionality while still being POSIX
i dont think zsh is posix?
it's POSIX-compatible, i'm pretty sure
no its not
it's closer at least
i just use bash
im like gon freeccs if he were into hobby osev
His head is remarkably flat
Especially with the ears going to the side
Enhances the flat appearance
Possibly a 99th percentile flat cat or more
does he have a flat brain as well
have you tried out tokei
it's very fast and automatically recognizies .gitignore
it takes 4 seconds to count the linux kernel's loc compared to 4 minutes for cloc
No I haven't
I came extremely close to failing my algorithms final just now
There were 4 questions and 2 hours
After an hour I'd answered two and was completely stumped on the others
I stared blankly at them with my panic increasing for like 45 minutes
Then for one of them I was suddenly like oh the solution is just a fucking knapsack problem with an extra loop at the end
Quickly scribbled it down
Looked at the other one
Stared at it and suddenly had a brain blast from a homework problem from two months ago and scribbled it down
Finished with seconds remaining
From what I overheard from other students they did NOT fare as well mostly
shouldve just asked claude
Provided to YouTube by DistroKid
We Have Come to Bless the House ¡ Severed Heads
City Slab Horror
â Sevcom
Released on: 1985-03-01
Auto-generated by YouTube.
i'm going to design a kind of hierarchical bitmap where the lowest level is a bitmap and the higher levels are bloom filters
and put it in Rtl as a general utility
itll be designed for each level to be virtually sparse so that they can be extended
also sometimes i wish i kept the mintia source code private
not for any good reason
just to like make people constantly question whether its real
the first mintia was basically as good as private anyways
like if i encrypted my code and put it on github
would you say it's public
Monkuous can read encrypted stuff as well 
fadanoid could also read it
you wouldn't be nearly as popular in this discord if the source code was kept private probably
people would doubt your thing is even real and exists
also mintia2 is essentially encrypted too because its reached such a high level of esotericism
if i was a beginner and i was like "ooh this seems like an interesting hobby project to learn from" and it was mintia2 and i looked at that id probably just quit
this is my current "play on loop infinitely while doing osdev until i hate it" song
found it in a mixtape made by boards of canada
called societas x tape
best song in a p good mixtape
@twilit smelt I think you're the right person to ask
do you know of any reliable resources on the internal workings of the ExAllocatePool3 allocator in modern windows?
you may be saddened to know that i dont even know what that API is
but i can direct you to @hollow musk or @craggy spire who might
also kelowerirql in my discord
probably ida
unfortunately I have to rely on 3rd-party descriptions
wdym have to
look at their bio
whats it supposed to tell me
that im fat
is that like a slang for something
no thats just my filler reply when i dont have anything else to say
nah i was replying to your bio message
I DID đ
will there be ExAllocatePool4 one day ?
that they're not allowed to use RE, probably
It just says "high paid plumber" so probably not
U+F8FF is used by apple to represent the apple logo
which scenario of it?
afaict exallocatepool3 can give you memory from a normal pool or from the secure pool
my guess is that its something like:
- on first use (or some initialization i cant find in the docs), the pool state associated with the tag is allocated and stored in a hashtable
- then allocations proceed as normal with the given {pool, size} pair
- secure allocations work by doing everything in the secure kernel through a proxy
but i havent read the code
or the tag and cookie may be stored before the allocation
fwiw if you can read first party microsoft blog posts: https://www.microsoft.com/en-us/security/blog/2020/07/08/introducing-kernel-data-protection-a-new-platform-security-technology-for-preventing-data-corruption/
(3) is confirmed by the blog post so yeah
the internal RtlpHpAllocateHeap function is basically just void* RtlpHpAllocateHeap(heap: *SegmentHeap, size: usize, flags: usize, unknown: u16) according to this pdf from ibm security
what good is that option if everybody who doesn't use apple software can't see it
i like how nobody thought that the weird unrendered character in their bio, might have anything to do with the apparently confusing statement i wrote about their bio, and so they didnt google it
so they were really loudly confused and my attempt to be discreet backfired catastrophically
It uses the same allocator under the hood as ExAllocatePool2 or any other pool API
A key feature of ExAllocatePool3 is the ability to specify additional flags such as the aforementioned Secure Pool
However, one of the latest kernel updates this year removed Secure Pool, and its allocations now return a not supported status
26H2 and later switch to a new pool instead of Secure Pool, which isn't even a proper pool in the usual sense for NT
What sort of algorithm is a pool allocator?
iirc it uses lock free linked lists
for caches yeah
utf standard says it's in a private use area
what does it mean
just google it đ
U+FBFF is the unicode hex value of the character Arabic Letter Farsi Yeh Medial Form. Char U+FBFF, Encodings, HTML Entitys:ﯿ,ﯿ, UTF-8 (hex), UTF-16 (hex), UTF-32 (hex)
and
ah wait thats 8
U+F8FF is the unicode hex value of the character . Char U+F8FF, Encodings, HTML Entitys:,, UTF-8 (hex), UTF-16 (hex), UTF-32 (hex)
so tldr they're an apple employee
how do u know all of this stuff
That is to say, a pool allocator differs in that upon deallocation it caches the memory block in a free list?
pool is just another word for heap
that is an optimization that the windows kernel's heap/pool allocator just happens to perform
theres no special thing called a pool
For some reason, out of unfamiliarity, I assumed it was the name of some clever 'pool' algorithm.
What algorithm actually underpins a pool allocator?
there are many
everyone does it differently
there are many ways to divvy up memory into blocks to hand out and then making it more scalable adds a whole other dimension of diversity on top of that
If you're specifically referring to Windows, in newer versions of Windows it's a pool (aka heap) wrapper over a segmented heap allocator and that allocator is itself a stack of suballocators chosen by size and pool type
The segmented heap is the primary general purpose allocator in both user mode and kernel mode with some modifications
So the allocator stack is:
ExAllocatePool
-> ...
-> pool manager, node and heap selection
-> dynamic lookaside, when eligible
-> LFH sub allocator
-> VS sub allocator
-> Segment sub allocator
-> Large block sub allocator
And each sub allocator has its own way of doing things
I'm updating to the latest versions and seeing what's changed
In ida?
WinDbg, IDA, a collection of various scripts
Do you have your own kernel or do you just re stuff
No, I don't
Sad
right lookaside is the word for what i was thinking of
now i remembered it
i saw the apple logo symbol at first and didn't think much of it until somebody pointed it out, lol
Yeah, not too long ago they switched to dynamic lookasides which have up to 64 possible size buckets with a bitmap indicating active buckets, and now depth is adjusted per bucket as part of global bucket selection
do you know the fault-tolerant heap in user-mode? supposedly, that's necessary for things like civ4 to run due to bugs in their CRT's alloc.
I know it exists, but I don't know any more than what's in the official docs
thanks
so no more Dynamic KDP?
It's gone with windows 11 25H2
They've changed their approach and the replacement will be more like Static KDP
first time i heard about it was apparently in a reply to a tweet from the guy behind hyprland (yes, really)
right wing griftrland
here's the OG tweet in question if you're curious
the selected text was what had it catch my attention at first, lol
that is, apparently, "very lenient" is supposed to refer to the fault-tolerant heap
that's what i assumed since someone else would bring up fault-tolerant heaps in the replies
lol
otherwise, idk wtf he was referring to
we with our tiny audiences of experts reading our little messages are held ~100x more accountable for intellectual honesty than tech influencers are
and that gets to them a lot
i thought vaxry isnt an influencer?
NT is not any "more lenient" with mm than linux, so either he means fault-tolerant heaps or he doesn't understand what he's talking about
hes the developer of hyprland
influencer and developer arent mutually exclusive
true
influencer is just someone with a big audience, and they can also happen to have real substantial projects, but inevitably with a big audience of less-than-experts youre going to start saying silly shit about other things, it seems like a rule of nature
LFH sub allocator looks like the front line, what is it?
for smaller allocation sizes i think, yes
i for one still don't know what this is
some sort of library that people use to write wayland compositors or something like that
its a wayland compositor
no its just a compositor
which is very nih because he got banned from xdg iirc
LFH is used for small allocations once a size bucket becomes active, when it lacks memory, it obtains subsegments from the segment sub allocator
LFH is opportunistic, so if the bucket isn't active yet or if it can't provide a block allocation falls back to VS sub allocator
hyprland is a wayland compositor
what is meant by activation?
i love this part of his blog post about it where he says "excess online hate" implying that there was a goldilocks zone of online hate he was aiming to direct at them and his audience just went too far
you guys were only supposed to do 97 online hate units not 120
not cool
lol
LMAO
vaxry isn't very smart, i guess. that much i know.
LFH uses lazy promotion of a small size class, so when a bucket is not enabled its bucket array entry records usage. When the same size is allocated often enough, the bucket becomes active and allocations of that size can go through LFH.
If I'm not mistaken, often enough means 17-18 times
i still don't know how he managed to say "windows is very lenient with memory management" when:
- official docs for fault tolerant heaps would imply civ4 was crashing on NT before:
The Fault Tolerant Heap (FTH) is a subsystem of Windows 7 responsible for monitoring application crashes and autonomously applying mitigations to prevent future crashes on a per application basis.
- heap corruption would almost certainly lead to a crash in most situations anyway
anyone who likes vax can't be so bad
btw, if anyone here is in the hyprland server, let me know if he posts what i just said on his twitter, lol
apparently, he posts whatever people say about him online
He posts the fictional anime characters to which he goons to
(not a joke btw)
thats normal zoomer behavior
Do you also do that then ig 
i'd be sad if i did that on any of my social medias, lol
The Amazing Digital Footprint
At least use an AD account
Yeah sure i love seeing anime tits as well as updates on the software i use
no.
doesn't he have a @hyprwm account for the latter?
Kinda but he also posts stuff on his main acc
online zoomers are weird especially the right wing ones
vaxry is apparently a Self-Proclaimed Centristâ˘, so i'd say he's even more weird than most right-wing zoomers
i wish i still had a screenshot of one of vaxry's most infamous quotes, lol
it was one of the most baffling things i've ever read
do people generally think NTFS was derived from HPFS? a friend of mine just said somewhere that "NTFS was a natural development from OS/2's HPFS," but my understanding of NT's development was that there was apparently a lot of debate as to whether NTFS should be made.
NTFS was a derivative of VMS's ODS
the ppl who designed it didnt care about or like HPFS
those would be gary kimura and tom miller, correct?
yeah
i think ODS was a little more primitive than NTFS like i dont know that it was using btrees
but NTFS didnt get that from HPFS it just got it from the filesystem research that was current
same common source that HPFS and HFS got it from
yeah, i assumed the presumed relation to HPFS had to do with them using B-trees and that, according to wikipedia anyway, they share the same MBR partition ID (0x07)
i guess it makes sense if you forget most of NT was designed by people from DEC, lol
also, i just learned this exists: https://betawiki.net/wiki/Windows_NT_3.51_build_1057.1_(IBM_PowerPC_Edition)
