klange changed the topic of #osdev to: Operating System Development || Don't ask to ask---just ask! || For 3+ LoC, use a pastebin (for example https://gist.github.com/) || Stats + Old logs: http://osdev-logs.qzx.com New Logs: https://libera.irclog.whitequark.org/osdev || Visit https://wiki.osdev.org and https://forum.osdev.org || Books: https://wiki.osdev.org/Books
gog has joined #osdev
ElectronApps has joined #osdev
Izem has quit [Quit: Going offline, see ya! (www.adiirc.com)]
gog has quit [Ping timeout: 256 seconds]
<klange> haha 42 pages of shit in the moderation queue fml
<zid> ban everybody
<klange> p much
<zid> what subreddit?
<klange> the osdev forum :P
<zid> ah
<zid> ban everybody twice
<klange> i set up a little browser extension just to add a "ban the poster" option to the moderation queue alongside deleting it
<klange> I would like to go in and further remove these accounts completely from the database, but don't have that access and our fearless leader has been unresponsive for months
<klange> thankfully this appears to be a few hundred topics from the same account with short russian titles so makes scanning the queue for potentially legit posts easier than some of the other spam we've gotten recently
<klange> oh i can sort by author, excellent, just keep mashing until another name appears
<zid> sounds like it'd be faster to just log into the DB
<zid> and delete from queue where author
<klange> if only I could
<klange> I would also change the ****ing "captcha"
<klange> I am going to petition chase to just hand over everything, I'll pay the bills and _actually be around_ to manage things...
<zid> osdev forums and wikis and stuff still ran by that absentee guy?
<zid> sounds it
<klange> The one thing I haven't tried is calling the phone number he provided one time, but mostly because it would be an international long distance call and cost me a bunch of money, or I'd have to do it through a service like Skype and probably be blocked :)
smeso has joined #osdev
sts-q has joined #osdev
dude12312414 has joined #osdev
nyah has quit [Ping timeout: 272 seconds]
dude12312414 has quit [Quit: THE RAM IS TOO DAMN HIGH]
Beato has joined #osdev
wille has joined #osdev
<geist> fwiw i'd be willing to chip in a bit on that too
^[ has joined #osdev
Bonstra has joined #osdev
ElectronApps has quit [Remote host closed the connection]
ElectronApps has joined #osdev
flx has quit [Ping timeout: 245 seconds]
dutch has quit [Ping timeout: 258 seconds]
dutch has joined #osdev
GeDaMo has joined #osdev
aleamb has quit [Quit: bye]
lg has quit [Quit: leaving]
lg has joined #osdev
zoey has joined #osdev
iorem has joined #osdev
mctpyt has quit [Ping timeout: 258 seconds]
mctpyt has joined #osdev
sortie has joined #osdev
ElectronApps has quit [Read error: Connection reset by peer]
ElectronApps has joined #osdev
nohit has joined #osdev
gog has joined #osdev
sortie has quit [Ping timeout: 258 seconds]
mctpyt has quit [Ping timeout: 268 seconds]
zoey has quit [Quit: Leaving]
lg_ has joined #osdev
lg has quit [Ping timeout: 250 seconds]
sortie has joined #osdev
lg has joined #osdev
lg_ has quit [Ping timeout: 252 seconds]
dormito has joined #osdev
mctpyt has joined #osdev
anon16 has quit [Ping timeout: 256 seconds]
Arthuria has joined #osdev
anon16 has joined #osdev
Brnocrist has joined #osdev
mhall has joined #osdev
nyah has joined #osdev
isaacwoods has joined #osdev
ElectronApps has quit [Remote host closed the connection]
ElectronApps has joined #osdev
flx has joined #osdev
dude12312414 has joined #osdev
dude12312414 has quit [Quit: THE RAM IS TOO DAMN HIGH]
nismbu has quit [Ping timeout: 272 seconds]
devcpu has joined #osdev
dennis95 has joined #osdev
ElectronApps has quit [Read error: Connection reset by peer]
nismbu has joined #osdev
regreg has joined #osdev
iorem has quit [Quit: Connection closed]
nur has quit [Quit: Leaving]
nur has joined #osdev
froggey has quit [Ping timeout: 240 seconds]
Arthuria has quit [Ping timeout: 268 seconds]
regreg has quit [Read error: Connection reset by peer]
<nur> is this thing on?
<GeDaMo> Maybe the batteries need to be replaced :P
<nur> I haven't seen any text since last night :p
<nur> I thought maybe the channel was broken
cultpony has joined #osdev
<nur> but now that I know it's not, is there a reason the examples in the Programmer Interval Timer wiki page is all in assembly?
<nur> it feels needlessly complicated
<GeDaMo> Well, it's a wiki, you could always add C or pseudocode versions
smarton has joined #osdev
<zid> because C has no way to do it
<nur> I mean maybe not setting the registers but you can just use inb outb for those and use C for the rest no?
cultpony has quit [Quit: ZNC 1.8.2 - https://znc.in]
cultpony has joined #osdev
divine has joined #osdev
<geist> yah a few of the pages are like that
<geist> whomever submitted it used their favorite language
<geist> surprised we haven't seen more rust or lisp or something
<sham1> I'm more impressed that their favourite language would be x86 assembly
dennis95 has quit [Quit: Leaving]
<nur> ok so if I am reading this right, if I want a scheduler interrupt at 200hz I choose a divisor (1193182/200), send a mode command to port 0x43 (and I want channel 0, lobyte/hibyte split mode, and... a rate generator?)
<nur> I am not sure which function I want here :-/
immibis has joined #osdev
johnjay has quit [Ping timeout: 250 seconds]
johnjay has joined #osdev
mahmutov has joined #osdev
<nur> I'll go with square wave generator and see what happens
ifreund has left #osdev [WeeChat 3.2]
froggey has joined #osdev
<gog> nur: you want rate generator
<gog> square wave mode is for the second channel (i think?) to do tone generation on the pc speaker
dormito has quit [Ping timeout: 258 seconds]
janemba has joined #osdev
GeDaMo has quit [Quit: Leaving.]
devcpu has quit [Quit: leaving]
kingoffrance has joined #osdev
<moon-child> hmm. So, say I have two keyboards
<moon-child> plugged into the same computer
<moon-child> I press shift on one, and then a on the other. Do I get 'a' or 'A'?
<moon-child> and how does this interact with all permutations of caps lock?
<zid> depends how the os handles it
<moon-child> right. I am the os; how should I handle it?
<zid> depends if you want multiple keyboards to be operable or not
<zid> same for like, game controllers in a game
<zid> do you want space + trigger to both be jump
<moon-child> hmm, multiple controllers is ...
<zid> for something like windows it's not super useful, because it's single seat
<zid> and focus is only on one thing
<moon-child> 'multiseat' is kind of holy grail of hci, but it's been kinda shown not to really work
<zid> but if you're like.. a mainframe
<moon-child> but video games are a rare exception to that
<zid> it might be useful that login daemon claims a keyboard and has its own buffer
<zid> so if you had 4 keyboards plugged in, init spawned 4 ptys and gave them a keyboard each or whatever
<moon-child> 'claims a keyboard' good point. So within some 'session' events from some devices will be filtered. I will make a note to have a way to handle that. But I think you still want to have multiple devices operable within a single session
<moon-child> laptops are an obvious example
<zid> nod, same as keyboard + controller for a single seat game
<zid> people do that in trackmania, sharp turns with keyboard and loose surfaces with controller :P
<moon-child> but i still don't know what to do about shift from one device + a from another device!
<moon-child> just tested freebsd, its behaviour is wrong
<zid> wrong how?
<moon-child> shift on one keyboard + a on another gives A. Fine. Press lshift on kb1, press lshift on kb2, release lshift on kb1, press anything: lowercase
<zid> I would say it's entirely up to the OS and whether the stream is in raw mode etc
<zid> that seems correct to me.. given I know how keyboards work
<moon-child> why is that correct?
<moon-child> it's not like nkro or anything, clearly it can distinguish the events
<zid> keyboard's are.. edge triggered
<zid> s/'//
<zid> it'll send a press packet, and an unpress packet for shift
<zid> and the last thing you got sent was an unpress packet
<moon-child> yea, but it knows which keyboard the unpress packet came from
<zid> but if it's collapsing them into a single 'keyboard state' such that you even get A in the first place
<zid> You'd expect A and lowercase together like that.
<zid> otherwise you'd have gotten lowercase a to begin with
<moon-child> you can keep track of state separately for all keyboards, but say 'do uppercase translation if _any_ shift key is pressed'
<zid> that's overly complicated for no gain
<zid> I'd expect either full independnant keyboards, or a single merged virtual one
<zid> indepednntendnant
<moon-child> actually that was just the freebsd vt layer
<moon-child> x handles
<moon-child> it correctly
<zid> yea x is probably in a rawer mode
<moon-child> lshift on kb1 + lshift on kb2 + release lshift on kb1 + a -> 'A'
<zid> hid rather than vt
<zid> and does complicated libinput crap
<moon-child> not sure why x would access rawer events than vt. It's probably just processing them in a more sophisticated manner
<zid> because vts only care about characters
<moon-child> right. Shift isn't a character, though, so at that level there's no recognition of it _at all_. The _implementation_ of vt is responsible for translating keyboard events into characters; at that level you have to access all raw keyboard events at a level no higher than x itself does
<zid> It's probably gone through a couple of simple ass "collect keyboard events into a buffer lol" steps in the kernel for the vt side
<zid> and X is just talking nearly raw packets
<moon-child> wait what
<moon-child> lol
<moon-child> x on linux gets shift+shift+unshift wrong
<moon-child> but linux vt gets it right
<moon-child> ??????
<clever> moon-child: just for the heck of it, i turned on a shiftlock option a while back
<clever> so the "capslock" key now makes the numbers turn into symbols
<clever> its more of a shiftlock, and not limited to just letters
<clever> xkbOptions = "caps:shiftlock";
<moon-child> clever: that's how typewriters work
<moon-child> capslock physically shifts the whole thing down
<zid> I like those scelectrix ball things
<moon-child> 'shiftlock' I can see making sense if you actually use capslock, but ... I don't sooo ¯\_(ツ)_/¯
<zid> I wouldn't wanna be within 50ft of someone typing on one, but they're rad
<moon-child> zid: oh, yea, those are cool
<clever> moon-child: yep
* moon-child just has a dumb regular ol' electric typewriter, nothing fancy
<clever> capslock is the weird one, refusing to shift other keys
<moon-child> got it mainly for the cool factor, then found out the ergonomics are SHIT. I still kinda wanna hook up my keyboard to it, though
<zid> curious marc has some rad gear
<zid> networked mechanical terminals and stuff
fly_ has joined #osdev
fly_ has quit [Quit: Lost terminal]
devcpu has joined #osdev
regreg has joined #osdev
MiningMarsh has quit [Ping timeout: 245 seconds]
<moon-child> I've decided modifiers from one device _should_ affect events from another device
<moon-child> imagine the case of foot-pedal-as-meta-key
<moon-child> or two one-handed maltrons
<zid> nod, fair
<zid> plugin numpad is a real thing too
<zid> and you might want to ctrl-3 in nethack
<moon-child> no love for hjklyubn? D:
<zid> vikeys and numpad have different autowalk behavior
<zid> but numpad is more annoying to play on
<moon-child> 'autowalk'?
<zid> HJKL
<moon-child> you mean like the difference between shift+direction and ctrl+direction?
<zid> yea
<zid> whether they stop for nasties or turn corners and things is slightly different
<moon-child> so that's shift vs ctrl, not vikeys vs numpad
<zid> I don't think shift-numpad does anything though
<zid> unless that was a config issue
<moon-child> so that's two reasons not to use numpad!
<moon-child> :P
<zid> not using vikeys frees up lots of # commands though!
<zid> jump for one
<moon-child> eh, with autocomplete it's not too bad
<zid> I'd play nethack more but I don't like 3.6
<moon-child> play slashem
<zid> cbf to learn it tbh
<zid> I got to zot with some runes in dcss once, that's about it for non-nethack I've bothered to play
<moon-child> I added readline bindings to it finally...after _decades_ of not being able to fix prompts without ^U and retyping. Like 200loc
<zid> I played one game of the nethack4 fork and ascended and quit undefeated :P
<moon-child> haha
<zid> (I got annihilated by a lightning golem in zot)
<zid> I had +++ lit res or whatever but I was in a corridor and got max-bounced
<moon-child> the only non-nethack roguelikes I've tried to play are angband and cogmind
<moon-child> never really got into either
<zid> I played one game of doomrl
<moon-child> well, I played ftl. That one was fun
<zid> I'm semi-decent at nethack
<zid> but it took me a lot of games to get there
MiningMarsh has joined #osdev
<zid> I can like, semi-reliably ascend a valk in 3.4.3, but I have a lot more fun going neural human wizard and getting OPOP
<moon-child> wiz is fun
<zid> neural or riot, I love the eyes
<kingoffrance> "I've decided modifiers from one device _should_ affect events from another device" eh, i agree with x. mechanism, not policy. surely should be a way to do that, but i wouldnt mandate it.
<kingoffrance> to each their own :)
<kingoffrance> i will always choose meta lol
<moon-child> what do you mean 'i agree with x'?
<moon-child> which x? x on linux or x on freebsd?
<kingoffrance> that was more supposed philosophy
<kingoffrance> im not saying implementations actually follow it :)
<kingoffrance> but like why you have window managers
<kingoffrance> and not a single toolkit
<kingoffrance> etc.
nvmd has quit [Quit: Later, nerds.]
<kingoffrance> other people would call that overcomplicated, overengineered, design overkill, etc.
<kingoffrance> or "lack of design" even
<kingoffrance> if something is not mandated, what good is it?
<moon-child> kingoffrance: so, obviously to get correct behaviour wrt shift you have to track modifier states individually per-keyboard. And then at some point you collate that state wrt a single event. This is composition
<moon-child> as we all know, premature composition is the root of all evil
<kingoffrance> lol
<moon-child> so obviously yes it should be possible to control the way that composition occurs
<zid> I thought it was the cause of soiled underwear
<moon-child> all I'm saying is I think one way of composing is more sensible than another
<kingoffrance> np ok, i misinterpreted maybe then.
<kingoffrance> yeah, you still need a "default" no matter what you do i guess
<kingoffrance> even for ultra-customizable, sensible defaults still makes sense for expected usage, etc.
<kingoffrance> or "templates" etc.
<moon-child> also see previous discussion about device filtering viz sessions
<moon-child> which is again a sensible class of proto-behaviour, not a hard-fast rule. (At least in my conception of it)
<kingoffrance> i also tend to lean on flexible because what people will want to do or try as an experiment depends on what is close at hand...
<kingoffrance> so even if i have no conceivable use for something, i still dont rule it out lol
<kingoffrance> <-- not productive
<moon-child> heh! I lean that way too though so i sympathize
MiningMarsh has quit [Quit: ZNC 1.8.2 - https://znc.in]
<zid> I keep having urges to dick with bison, then thankfully I catch myself and stop
<moon-child> pls no bestiality
<zid> I'm like "I bet I could make a simple language.."
<zid> Then I open a .l file and go "But.. do I hate myself enough"
<moon-child> making a language is fun
<moon-child> but...don't use bison
<moon-child> just don't
<moon-child> trust me
<zid> If I stuck to things bison was capable of doing
<zid> and not making it hard on myself
flx has quit [Ping timeout: 240 seconds]
<zid> I don't fancy making a language without someone else writing the parser
<moon-child> do a lisp
<moon-child> or an apl
<zid> I don't want a lisp :/
<zid> I want a C
<moon-child> y
<moon-child> c sux
<moon-child> how bout a forth
<zid> I am not a forth-aboo
<klange> write your own parser from scratch, bison is for quitters
srjek has joined #osdev
<zid> I'd have to figure out how to write parsers
<bslsk05> ​craftinginterpreters.com: Crafting Interpreters
<zid> recrusive descent and other nonsense sounds like a lot of work
<moon-child> $ wc -l fc/c/parse.c
<moon-child> 1099 fe/c/parse.c
<moon-child> :/
<moon-child> not an experience I would like to repeat
<zid> You'll have to read it out loud to me klang
<moon-child> it doesn't even handle all the fancy declaration syntax you can do in c
<moon-child> probably grow to at least twice that before it's done
MiningMarsh has joined #osdev
<zid> cpp + bison can handle most of C except you'd have to do typedefs by hand I think?
<moon-child> there's also the 'lexer hack'
<moon-child> but I'm not touching bison with a 10 foot pole
<moon-child> also combined cpp/tokenizer is faster than doing it as a separate step
<zid> yea but I don't care about speed
<zid> I mean, enough to minimize passes, I'm not going to write it in python
<zid> I have SOME self respect
<zid> what's a lexer hack?
<bslsk05> ​en.wikipedia.org: Lexer hack - Wikipedia
<moon-child> you 'parse' something like 'x*y' as 'maybe a multiplication or maybe a declaration'
<moon-child> and then later on you find all those 'maybe' nodes and figure out what they actually are
<zid> yea I guess that's what I meant about typedef right
<zid> "This ambiguity can happen in C if the lexer does not distinguish between variable and typedef identifiers."
<zid> It doesn't seem that hard to solve if you've hand written it, because you can just.. parse the typedefs on the spot trivially afaik?
<zid> then just pass the little hash table you made for that forwards or whatever
<moon-child> yes
<zid> I really don't want to write a lexer and a parser :(
<zid> I just wanted to demo my incomplete structure deref
<moon-child> you can dereference incomplete structures?? ;o ;o
<zid> You can in my language!
<moon-child> how?
<zid> You're allowed to until the first member with an incomplete type
<zid> tada, that's the entire change.
<moon-child> oh I see
<moon-child> so you can have struct a { int x; struct b y; int z; } *a
<moon-child> and then access a->x but not a->y or a->z
<zid> so struct apple { int weight; struct apple_private; }; struct apple *a = apple_new(20_GRAMS); if(a->weight == 30) ...; apple_free(a);
<moon-child> (but yes &a->y?)
<zid> otherwise you have to leak all the declarations for everything everywhere
<zid> or use a struct * and eat an indirection
<zid> or do really sketchy char hidden[]; stuff
<moon-child> 'eat an indirection' you can do better than that
<moon-child> access 'hidden' indirectly, but actually allocate it right after the main struct
<moon-child> so that way whenever one is in cache the other is too
<moon-child> so you still have the dependency but it's not horribly slow
devcpu has quit [Quit: leaving]
<zid> if anything those solutions are worse, because they fuck up the language
<klange> a pointer to a struct is equivalent to a pointer to its first member, so just make `struct apple_private { struct apple ..., your private shit here }`
<zid> nothing stops you making automatics of them
<zid> klange: You need the size of the inner struct, leaking the dec
<klange> yes? you need the size of something to calculate where to put something after it?
<zid> exactly.
<zid> We can already do what you say, and it sucks because it leaks the dec.
<moon-child> zid, klange is flipping your structure around; the public thing is inside the private thing, not the other way around
<moon-child> the private parts of apple_private are not leaked
<zid> Yea I've done that typically, you have to cast everywhere
<klange> only on the private side
<zid> you end up looking like the sockets api
<klange> boo hoo
<zid> it'd all be transparent and perfect if I could just make my one change
<zid> afaik plan9 has it
<zid> oh it also has the problem if being fuck-uppable with automatics
<zid> s/if/of
<bslsk05> ​github.com: kuroko/compiler.c at master · kuroko-lang/kuroko · GitHub
sortie has quit [Quit: Leaving]
* moon-child is reminded that he needs to add lambda lifting to his lisp interpreter
<zid> can I submit a whitespace patch to add a newline on line 602
<klange> no
<moon-child> there is a newline on line 602
<moon-child> right at the end
<zid> ah silly me