simpl_e has quit [Remote host closed the connection]
simpl_e has joined #osdev
[itchyjunk] has quit [Ping timeout: 240 seconds]
[itchyjunk] has joined #osdev
[itchyjunk] has quit [Max SendQ exceeded]
[itchyjunk] has joined #osdev
ElectronApps has joined #osdev
CoffeeMuffin has quit [Ping timeout: 240 seconds]
heat has joined #osdev
ravan has joined #osdev
srjek has quit [Ping timeout: 240 seconds]
xenos1984 has quit [Read error: Connection reset by peer]
xenos1984 has joined #osdev
vdamewood has joined #osdev
Teukka has quit [Read error: Connection reset by peer]
Teukka has joined #osdev
heat has quit [Ping timeout: 256 seconds]
kingoffrance has joined #osdev
ElectronApps has quit [Ping timeout: 256 seconds]
ElectronApps has joined #osdev
ravan_ has joined #osdev
ravan has quit [Ping timeout: 240 seconds]
<Griwes>
Okay, I'm *reasonably* confident in this erase implementation now that I've used a real case of it failing generated by nondeterminism in my kernel to improve the coverage of weird cases
<Griwes>
I'll probably need to plug a fuzzer into this at some point to generate an actually exhaustive set of values to test it with?
<moon-child>
isn't the idea with nondeterminism that it's ... nondeterministic, and can't be reliably triggered, even given an exhaustive set of inputs? :P
<Griwes>
Oh, two different things
<Griwes>
I want to plug a fuzzer into the avl tree implementation
<Griwes>
The nondeterminism is on the side of the user of the tree
<Griwes>
(in a way, the kernel worked as a really poor fuzzer in this case 😂)
<Griwes>
Anyway, next step is parsing ELFs and address space syscalls, which is finally something I have actually never done before (I've written code to *generate* elf object files before, but I've never *parsed* elfs before, and never worked with executables directly)
<bslsk05>
​github.com: lk/elf.c at master · littlekernel/lk · GitHub
<Griwes>
Hey, half the fun is writing it from scratch and from spec :p
<clever>
i think it all depends on where you draw the line
<clever>
one of my early programming mistakes, was never using standard string functions
<clever>
because the book i learned from, started with how you write string manip functions
<clever>
so, every single project i started, began by re-implementing all string functions from scratch, as i needed them, lol
<clever>
since then, ive learned to use library functions when they are available
<Griwes>
My OS project may or may not also include a c++ standard library implementation
<moon-child>
my condolences
<Griwes>
Hey, it's nice, because I'm able to use std::format before it's implemented by most platforms :p
<moon-child>
whatever lets you go to sleep at night
<moon-child>
:)
<Griwes>
Look, for normal projects I reuse the environment
<Griwes>
For the OS, at least for me, the point is to *write* that environment
<moon-child>
sure, but why c++
<clever>
Griwes: in my case, the goal is to write a working bootloader/firmware, not to create an os
<clever>
but features like a userland are of use, for making the firmware more modular
<Griwes>
moon-child: because it has tools to work around the hell that is C
<moon-child>
sure, but why c
<CompanionCube>
how much of c++ do you actually use
<Griwes>
moon-child: because whenever I go back to try rust, I get more infuriated about it than before
<Griwes>
How much c++ do I use? That's hard to quantify
<moon-child>
I would rather use c than rust. And rather rust than c++
<Griwes>
I write what I consider to be a sane, relatively modern, and highly generic programming oriented subset of the language, but that also includes virtual functions and exceptions, so ymmv with that definition
<moon-child>
but what about e.g. d, common lisp, ..
<Griwes>
Look, if I worked for you and you wanted me to leave without firing me, the easiest way to get that would be to make me write C
<moon-child>
haha
<Griwes>
D has made Choices that I don't particularly enjoy. And lisps and similar are just not a thing I know well enough
<Griwes>
So I'd rather use a thing I know than also fight with learning a language in addition to everything else that is going on in osdev
Mutabah has quit [Ping timeout: 252 seconds]
GeDaMo has joined #osdev
Mutabah has joined #osdev
the_lanetly_052 has joined #osdev
<geist>
clever: eep sorry there. that elf file in LK is a bit weird. i was trying different ideas
<geist>
it's not the best code i ever wrote
<geist>
more of a weekend hack to get somerthing going, with the intent to refactor at some point
<geist>
oh wait, no that's okay. it's not the code i was thinking about, though it can still use some work
<clever>
i can see signs of being able to remap things as loading, but otherwise its limited to loading each DT_LOAD to the addr in the .elf headers
<geist>
yah
<geist>
i wrote amuch more powerful one 20 years ago in newos that wasn't quite right to pull into LK
<bslsk05>
​github.com: newos/rldelf.c at master · travisg/newos · GitHub
<geist>
'rld' is the user loader binary
<clever>
a userland would give me more stability, so a single segfault cant bring down the entire kernel
<clever>
but modules might be simpler and lower on memory usage?
<geist>
for VPU you'll need a properly specced ELF file for it
<geist>
with all the usual relocations and whatnot
<clever>
oh, and thats another problem
<clever>
my linker currently omits relocations by default
<clever>
and without an MMU, i need them
<clever>
that, or manually link each thing to a unique addr
<clever>
and yeah, LK's elf.c wouldnt really work on its own, but rather serve as an example of parsing elf
<geist>
yah it basically walks the header
<geist>
and those portions should be the same on the VPU
<clever>
for implementing a userland, there are 2 hw parts i would need to investigate
<geist>
plus yuo need to figure out if you can actually implement a user space on it
<clever>
1: there are 64 software interrupts, much like `int 0x80` on x86, each has its own dedicated entry-point, part of the fully vectored irq table
<clever>
2: there are ~6 sandbox start/end registers, i think accessing outside of the sandbox while in user mode is a fault, much like an MPU on cortex-m?
<clever>
if i figure out both of those, then i can implement a userland with syscalls, but it will be limited to 6 mapped ranges at a time
<geist>
is there a notino of user and supervisor mode?
<clever>
yeah
<clever>
and each vector (both hw irq and software irq) can be configured to be serviced in either
<clever>
so the uart irq, could jump to a given addr, but remain in user mode
<clever>
but if you are context switching between userlands, you would need to conditionally route it to either supervisor or user, and force a switch to the right userland context
<clever>
according to the wiki, the sr register has 3 mode bits, supervisor, interrupt, and user
<geist>
there you go. at least it has a user mode
<clever>
and there are 2 stack registers, sp is current stack at all times
<clever>
esp is the "exception" stack pointer
<clever>
during an exception, sp becomes an alias to esp, so both point to the same physical register
<clever>
and when in usermode, esp is hidden, by becoming an alias to r27
<clever>
so you never write to the userland stack by accident when servicing an exception
<clever>
which could be an exploit, if userland points sp somewhere nasty first
<clever>
there is a `user` opcode, it likely switches into user mode
<clever>
bit0 of the vector table entry determines if it gets ran in supervisor mode or not
<clever>
and user mode running an swi not flagged for supervisor triggers an exception i think?
<clever>
i need to experiment with every combination to see what the rules are
the_lanetly_052 has quit [Ping timeout: 240 seconds]
<clever>
oh!
<clever>
that I bit in sr, isnt "in interrupt mode", its "interupts enabled"
<clever>
just like the I bit in one of the arm regs
<clever>
it just happens to be right smack between supervisor and user
<clever>
which is very misleading
<clever>
and there are no obvious uses of the `user` opcode in any binaries i can decompile
lainon has joined #osdev
lainon has quit [Remote host closed the connection]
ElectronApps has quit [Remote host closed the connection]
lainon has joined #osdev
lainon has quit [Remote host closed the connection]
ElectronApps has joined #osdev
mahmutov_ has joined #osdev
ravan__ has joined #osdev
ravan_ has quit [Ping timeout: 240 seconds]
Electron has joined #osdev
zaquest has quit [Remote host closed the connection]
ElectronApps has quit [Ping timeout: 256 seconds]
zaquest has joined #osdev
C-Man has quit [Ping timeout: 240 seconds]
ElectronApps has joined #osdev
Electron has quit [Ping timeout: 240 seconds]
mahmutov_ has quit [Quit: WeeChat 3.1]
mahmutov has joined #osdev
pretty_dumm_guy has joined #osdev
the_lanetly_052 has joined #osdev
Burgundy has joined #osdev
Belxjander has joined #osdev
pretty_dumm_guy has quit [Quit: WeeChat 3.4.1]
pretty_dumm_guy has joined #osdev
pretty_dumm_guy has quit [Client Quit]
pretty_dumm_guy has joined #osdev
CoffeeMuffin has joined #osdev
CaCode has joined #osdev
vdamewood has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<bslsk05>
​gankra.github.io: Rust's Unsafe Pointer Types Need An Overhaul - Faultlore
<GeDaMo>
"Every pointer is tagged with extra metadata that the hardware maintains and validates. If you ever break out of your sandbox the hardware will catch it and the OS will presumably kill your process."
<j`ey>
it's an aarch64 thing
<not_not>
aha, its arm?
<GeDaMo>
It's been implemented in an ARM
<not_not>
we can quantum entangle electricity in pretty much any pc system
<not_not>
breaking all security
<not_not>
guess u could do checksums on all pages in memory etc and do security by obscuity but in the dimension where that trick operates from time goes by so slow u can pretty much have a guy reverse engineer a pc the same second it was engineered
<not_not>
chivalry is dead
Burgundy has quit [Ping timeout: 252 seconds]
CaCode has quit [Quit: Leaving]
mahmutov has joined #osdev
Burgundy has joined #osdev
blockhead has quit []
<not_not>
yo
<gog>
sup
<not_not>
trying to get my boot loader into protected mode, id if it IS in protected mode but the output is not working or if it didnt make the jump
<bslsk05>
​pastebin.com: .code16.global init # makes our label "init" available to the outside.glob - Pastebin.com
the_lanetly_052 has quit [Ping timeout: 240 seconds]
not_not has quit [Quit: Lost terminal]
[itchyjunk] has quit [Ping timeout: 240 seconds]
[itchyjunk] has joined #osdev
skipwich has quit [Ping timeout: 256 seconds]
skipwich has joined #osdev
<gog>
you can't use int 10h to print from protected mode
* kingoffrance
.oO( magical 0xe9 for bochs and qemu? )
srjek has joined #osdev
<zid>
until gog finishes my emulator
<gog>
i help those who help themselves
<zid>
I already did all the work
<zid>
I just need someone to write it down
<zid>
I was in a tragic double-armed accident
<kingoffrance>
why do i think of a racoon who needs to borrow a leg?
elastic_dog has quit [Quit: elastic_dog]
elastic_dog has joined #osdev
scoobydoob has joined #osdev
puck__ has joined #osdev
flx-- has joined #osdev
auronandace has joined #osdev
mrvn has quit [Ping timeout: 240 seconds]
scoobydoo has quit [Ping timeout: 240 seconds]
elastic_dog has quit [Ping timeout: 240 seconds]
k0valski188 has quit [Ping timeout: 240 seconds]
ThinkT510 has quit [Ping timeout: 240 seconds]
puck has quit [Excess Flood]
NeoCron has quit [Ping timeout: 240 seconds]
flx- has quit [Remote host closed the connection]
rustyy has quit [Ping timeout: 240 seconds]
epony has quit [Ping timeout: 240 seconds]
ElementW has quit [Ping timeout: 240 seconds]
scoobydoob is now known as scoobydoo
rustyy has joined #osdev
ElementW has joined #osdev
epony has joined #osdev
epony has quit [Excess Flood]
epony has joined #osdev
auronandace is now known as ThinkT510
epony has quit [Excess Flood]
epony has joined #osdev
scoobydoob has joined #osdev
scoobydoo has quit [Read error: Connection reset by peer]
scoobydoob is now known as scoobydoo
nur has quit [Remote host closed the connection]
Fox has joined #osdev
elastic_dog has joined #osdev
Mutabah_ has joined #osdev
hegz4 has joined #osdev
Mutabah has quit [Ping timeout: 250 seconds]
LittleFox has quit [Ping timeout: 250 seconds]
bslsk05 has quit [Ping timeout: 250 seconds]
hegz7 has quit [Ping timeout: 250 seconds]
bradd has quit [Ping timeout: 250 seconds]
knusbaum has quit [Ping timeout: 250 seconds]
knusbaum has joined #osdev
riverdc_ has joined #osdev
zhiayang_ has joined #osdev
ids1024 has joined #osdev
eau_ has joined #osdev
garrit_ has joined #osdev
corank_ has joined #osdev
bradd has joined #osdev
Teukka has quit [Ping timeout: 250 seconds]
xenos1984 has quit [Ping timeout: 250 seconds]
corank has quit [Ping timeout: 250 seconds]
edr has quit [Ping timeout: 250 seconds]
simpl_e has quit [Ping timeout: 250 seconds]
garrit has quit [Ping timeout: 250 seconds]
zhiayang has quit [Ping timeout: 250 seconds]
lanodan has quit [Ping timeout: 250 seconds]
ids1024_ has quit [Ping timeout: 250 seconds]
eau has quit [Ping timeout: 250 seconds]
riverdc has quit [Ping timeout: 250 seconds]
GeDaMo has quit [Ping timeout: 250 seconds]
JerryXiao has quit [Ping timeout: 250 seconds]
lanodan_ has joined #osdev
garrit_ is now known as garrit
zhiayang_ is now known as zhiayang
edro has joined #osdev
JerryXiao has joined #osdev
GeDaMo has joined #osdev
puck__ is now known as puck
Teukka has joined #osdev
<gog>
mew
bslsk05 has joined #osdev
ElectronApps has quit [Remote host closed the connection]
nur has joined #osdev
dude12312414 has joined #osdev
matrice64 has joined #osdev
heat has joined #osdev
<heat>
updog
<zid>
how many updogs though
dormito has joined #osdev
<jimbzy>
n updogs should just about do it.
<heat>
they always ask what's updog, but never how is updog :(
gdd has joined #osdev
<gog>
how is updog?
<jimbzy>
Where is updog?
<bauen1>
why is updog ?
<jimbzy>
That's heavy.
dormito has quit [Ping timeout: 268 seconds]
dormito has joined #osdev
<gog>
when is updog?
<zid>
When you make me one
* gog
makes some updog for zid
<zid>
You should make extra so you can have one too, it's a waste otherwise
<gog>
i already had some
<nur>
it's sunday night, I'm working on _work_ work which is a chatbot that is mostly menu driven, rendering the whole natural language processing part moot, and I hates it. I'd rather be building an OS but such is life.
<gog>
:(
<zid>
Make it like a real chatbot and make it call you racist things occasionally
<heat>
make an AI chatbot and train it on 4chan
<zid>
dw they'll train it themselves
<zid>
"hey I found a chatbot" *14 million racist insults*
k0valski1883 has joined #osdev
dude12312414 has quit [Quit: THE RAM IS TOO DAMN HIGH]
GeDaMo has quit [Remote host closed the connection]
wolfshappen has quit [Quit: later]
wolfshappen has joined #osdev
X-Scale` has joined #osdev
X-Scale has quit [Ping timeout: 272 seconds]
X-Scale` is now known as X-Scale
wolfshappen has quit [Ping timeout: 250 seconds]
<geist>
really it's not a viable board so i should stop doing layout, but it's kinda fun to just route stuff: https://i.imgur.com/3801XG5.png
<geist>
basically 4x8 bit memories wired to a PGA 68030 with all the control lines routed to random headers (which i haven't really placed yet)
<jimbzy>
I was looking at getting a m68k board. Are you familair with the ROSCO?
<jimbzy>
Not all caps. I'm trying to type and eat a donut.
<geist>
maybe? i've actually tried not to look too closely at existing 68k boards since they'll just show me what to do
<geist>
this is a 68030 which has a lot more control bits too
<jimbzy>
Get one designed and I'll try building it out ;)
<geist>
yah the idea i had here was to just wire up the PGA + some ram and then bring all teh control lines out to headers
<geist>
so can piddle with building the control logic, most likely in a few PALs on a breadboard
<jimbzy>
Nice.
<jimbzy>
https://rosco-m68k.com/ <- Nothing technical on that page, but that's the one I was looking at.
<bslsk05>
​rosco-m68k.com: Home - rosco-m68k.com
sonny has joined #osdev
mahmutov has quit [Ping timeout: 240 seconds]
wolfshappen has joined #osdev
<mrvn>
You can buy Amiga boards too.
<jimbzy>
I don't think I'm cool enough for an Amiga.
<jimbzy>
I could probably pull off a VIC-20, though.
gxt_ is now known as gxt
Mutabah_ is now known as Mutabah
ravan__ has quit [Ping timeout: 252 seconds]
Burgundy has quit [Ping timeout: 256 seconds]
PyR3X_ is now known as PyR3X
Ali_A has joined #osdev
<sonny>
Do you have any expectations of what an operating system shell is supposed to do?
<klange>
parse commands, and then manage their execution
<klange>
maybe provide some line editing, tab completion, history, job control, pipelines or other complex execution arrangements...
<sonny>
hmm
<sonny>
this is giving me deep insight
<geist>
it should also spark joy
<sonny>
this most critical thing of osdev is the executive process
<sonny>
s/this/the/
<sonny>
geist yeah a lot of shells are pretty bad
<heat>
most real shells are pretty decent these days
<heat>
bash, dash, ash, mksh, powershell all pretty decent shells
<klange>
I still keep thinking about writing a new one with all I learned from making Kuroko.
<geist>
yah i was getting all marie kondo for a second
<klange>
My current shell is already not POSIX and it's garbage, so I could at least have something that is _nice_ while not being POSIX.
<klange>
The POSIX shell spec is hot garbage.
<heat>
oh yeah totally forgot
<sonny>
heat I think those are all bad
<heat>
zsh, fish
<sonny>
fish makes sense to me
<heat>
totally disagree
<heat>
if the gold standard shells aren't good, which ones are?
<moon-child>
I like zsh, don't like fish
<moon-child>
too frenetic
<moon-child>
(though, I have the impression that most people who use zsh use oh-my-zsh, which is just as bad)
<sonny>
my point was that they pretty much all suck
<klange>
I use bash just out of tradition, though these days I'm afraid to pick up something "nice" because then I'll be annoyed when I don't have it elsewhere.
<heat>
sonny, why?
<heat>
they do everything you'll ever want
<moon-child>
heat: not true
<sonny>
terrible grammars, strings only etc
<moon-child>
I've never had a shell do my dishes for me
<moon-child>
I still have to do them myself :/
<heat>
:D
<geist>
having a shell that understood math directly would be kinda nice
<klange>
"strings only" is not true of most of those
<moon-child>
geist: $((x+7))
<heat>
geist: posix shells can do simple (integer only) math
<sonny>
geist you can in powershell
<klange>
even bash has other types
<moon-child>
don't bash arrays start at 1?
<geist>
sure, and powershell has some decent ideas
<geist>
alas, it's tied to a platform i dont care to shell in
<moon-child>
there's linux pwsh now, I think
<heat>
i use powershell to ssh to my rpi :D
<klange>
moon-child: oh goodness no, they are zero-indexed
<geist>
but in general what klange says applies to me too
<moon-child>
but also: using a non-unix shell on unix is a serious fault
<geist>
i use the lowest common denominator
<heat>
sonny, so your point is that because the language has some pitfalls, it's trash?
<moon-child>
klange: oh, no, it's zsh arrays that start at 1 :P
<heat>
that's a really high bar for *anything*
<klange>
bash suffers a lot from mistakes of POSIX sh it can only barely work around without breaking compatibility
eddof13 has joined #osdev
<sonny>
heat I don't think so
<sonny>
the bar is on the ground
<heat>
sure go ahead and right a better shell
<sonny>
but that's just my opinion, of little importance
<sonny>
yeah, that's the plan
<heat>
it also needs to be fast and stable and it needs to fit well with the OS(or OSes!)
<heat>
also great in interaction, but fast, needs to be very fast!
<sonny>
shell is a misnomer I think, just really give me access to all resources, let me build whatever I want
<moon-child>
most shells are pretty slow
<sonny>
powershell is the closest to this afaict
<heat>
and I'm planning to run my old 1999 scripts there so good luck with that
<sonny>
heh, that's funny
<sonny>
I recall my prof saying the unix shell (bash) doesn't care about speed
<klange>
I want to build a shell with a bytecode compiler. My compiler for Kuroko is super fast, and it suffers from performance penalties from awkward parts of Python syntax.
<sonny>
I don't remember his reason though
<klange>
Bash is not "the unix shell".
<heat>
bash is in no way shape or form the "unix shell"
<heat>
dash cares about speed but suffers on usability
<klange>
dash can be really nice if you slap a readline-alike on it for interactive mode
<heat>
yup
<sonny>
oh yeah, shell portability is ah ... bad
<heat>
although it's also worse to program for
<heat>
some bash extensions are really useful
<klange>
I've decided writing a POSIX sh is not on my roadmap after struggling with how awkward the syntax really is deep down. If you need POSIX sh, I have a dash port.
<klange>
But my current shell is absolutely horrendous.
<sonny>
at this point I might name my OS megalodon
<sonny>
klange what is it?
<klange>
what is what?
<sonny>
your shell
<klange>
my shell is my shell, what further description are you looking for?
<heat>
toaru megabestshellsh
<kazinsal>
. o O ( DCL clone for toaru as the standard shell )
<jimbzy>
I'm not going to provide a shell for my OS out of fear that someone might try to use it.
<heat>
lol
<heat>
provide a python interpreter :)
<jimbzy>
That's not too far off the mark. I'd like to create my own little language.
<klange>
heat: done
<sonny>
kingoffrance: your idea that OSes should have different profiles is so genius
<jimbzy>
One does not simply reinvent part of the wheel.
<klange>
aw why not, it makes for very be-spoke software!
<klange>
:D
<sonny>
har har
<heat>
:D
<jimbzy>
Nice.
<klange>
I don't have any of the good modules for process execution / management, though, so throwing Kuroko at a user would be horrible as a shell experience.
<klange>
Something like the command mode in my editor would be a little better.
<heat>
it's unclear to me if python would actually be usable as a shell, or just cumbersome
<klange>
It parses things either as simple commands _or_, if that doesn't work, parses as a line of Kuroko.
<klange>
so you can do ":e /whatever" or ":e('/whatever')"
<jimbzy>
Maybe a stripped down version.
<heat>
right, but python is first and foremost a programming language
eddof13 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<heat>
you'd be effectively programming just to run ls
<heat>
not exactly the best ux
<sonny>
does multiuser mean many users at the same time?
<jimbzy>
Says you.
<jimbzy>
;)
<klange>
sonny: multiuser without further explanation is insufficiently ambiguous
<jimbzy>
What do you expect from an OS that is based on a Gordon Ramsey meme?