Search logs:

channel logs for 2004 - 2010 are archived at ·· can't be searched

#osdev2 = #osdev @ Libera from 23may2021 to present

#osdev @ OPN/FreeNode from 3apr2001 to 23may2021

all other channels are on OPN/FreeNode from 2004 to present

Monday, 11 September 2023

00:41:00 <immibis> kof13: <- this is a thing made of only factorio sounds that can be assigned to speakers in game and with timing accuracy that can be achieved in-game, IIRC
00:42:00 <immibis> just do that with piano sounds
00:43:00 <immibis> a low-pass filter might also be useful :P
00:43:00 <immibis> put your talking piano in a padded room
00:43:00 <immibis> so nobody has to hear the zillions of key presses per second
00:44:00 <immibis> (btw this remix has a 2 minute intro so skip that far to hear what singing sounds like)
00:48:00 <kof13> it just makes me think of a cartoon or something and a character who only speaks as ♪♪♪♪♪♪♪ fly out of its mouth when it talks
00:59:00 <kof13> on a fast enough system it could be a /dev/midifilter sound device :D although presumably with modern daemons/etc. that would be a better place for such a "filter"
01:39:00 <kof13> yeah that sounds similar
01:42:00 <kof13> i really don't know this stuff, and not to get further off-topic, but i suspect you can simulate sounds with whatever other sound, akin to writing programming language x using/within y > no guitar samples were used for this tune... only synths..
01:51:00 <Hammdist> ah I was saving spsr and it I now notice it has a copy of the processor flags in it. I see now, thanks
04:03:00 <clever> immibis: ive been doing PWM audio recently, and had a surprisingly hard time getting good quality, you happen to know anything that might help?
04:25:00 <zid> heh, cute series I just found on youtube, he's planning to 'start an ISP'
04:25:00 <zid> by which I mean, a 1993 isp, he's bought a sparcstation and some dialup modems etc
04:34:00 <immibis> how old is the series?
04:34:00 <zid> brand new, not a lot of content yet sadly
04:34:00 <immibis> is this a retro project or does he really think that is useful?
04:34:00 <zid> huh
04:35:00 <zid> yes, he's adamant that 14.4k baud internet serving 5 users is the future of ISPs, and has invested billions of dollars so far.
04:35:00 <immibis> I mean is it just for fun using old worthless hardware or are we talking about a delusional person
04:35:00 <immibis> some people are...
04:35:00 <zid> and by extension me, for promoting it?
04:37:00 <immibis> clever: wouldn't call myself an expert and would probably have to hear what you've made but - PWM frequency as high as you can set it, as much resolution as you can set it (sometimes those are contradictory, make a tradeoff but don't leave anything on the table), and make sure you have some lowpass filtering ability (this can come after the PWM)
04:38:00 <immibis> not sure why I wrote the last part in parentheses... I meant to say the speaker can be part of the filtering
04:50:00 <sham1> hi
04:52:00 <zid> His Ham.
05:44:00 <clever> immibis: the issue, is that the refclk is basically just pwm_freq * resolution
05:44:00 <clever> immibis: so a 44khz 16bit audio sample, would need a ~2.8ghz reference clock (44000 * Math.pow(2,16))
05:45:00 <immibis> but you don't need 16 bit resolution
05:46:00 <immibis> not for the PWM, anyway
05:46:00 <clever> yeah
05:46:00 <clever> a lower resolution makes the clocks reasonable
05:46:00 <clever>
05:46:00 <clever> this is a recording of what comes out
05:46:00 <clever> you can hear a lot of clicking and highfreq? content on each drum beat
05:47:00 <clever> and this is the identical hardware and input, but with the official rpi firmware
05:47:00 <clever> which says its not a hardware limitation
05:48:00 <immibis> of course it would be bad apple. This is the normal raspberry pi audio port, and you are trying to diagnose why your firmware is worse than the official firmware?
05:48:00 <clever> yeah
05:48:00 <clever> also, i made a terrible mistake with the first audio test :P
05:49:00 <clever> it wasnt bad apple!
05:49:00 <clever> also, re-listening to that one again, it sounds ... better?
05:49:00 <clever> but it doesnt have the same impulses from a drum
05:50:00 <immibis> you are not making this project for silliness: - you are actually trying to get something that is designed to be used as an audio port to play audio
05:50:00 <clever> yeah
05:51:00 <immibis> that audio is recorded directly out of the UART port
05:51:00 <clever> its a mix of many things, 1: a stress test of the whole stack, 2: 2d accel, 3: audio playback
05:51:00 <clever> i had finished implementing usb-host, and ext4/msd support
05:51:00 <clever> and then i got side-tracked, lets play bad apple from a usb stick :P
05:52:00 <clever> it wound up revealing a few bugs in my usb stack
05:52:00 <immibis> you could dump the PWM module registers while running official firmware and yours to see if there's any difference
05:52:00 <clever> i do also have a forum post explaining how the official audio is configured
05:52:00 <clever> > 100 * 1000 * 1000 / Math.pow(2,7) / 1000
05:52:00 <clever> 781.25
05:52:00 <clever> its generating 7bit PWM samples, and clocked at 100mhz, giving a pwm rate of 781.25khz
05:53:00 <clever> some vector math is then doing non-integer up-sampling, and dithering from 16bit->7bit, and applying EQ stuff to compensate for the analog filters
05:53:00 <immibis> clicking like that might possibly be caused by integer overflow. Drums are sine-wave-ish with low frequency and often higher amplitude than everything else combined. They could trigger overflow.
05:54:00 <clever> but i dont know enough to reproduce all of that math
05:54:00 <clever>
05:55:00 <clever> if i just drive the PWM directly at the audio sample rate, so its 1 pulse per sample, you get what you heard in the above recordings
05:55:00 <immibis> dithering means add a random -1/256 to 1/256 before rounding to the nearest 1/128. You can do that to improve quality. I don't think not having it would cause this clicking
05:56:00 <clever> with the OVERSAMPLE flag in the above code, i can increase the pwm rate to some integer multiple of the samplerate
05:56:00 <clever> and just play each sample N times
05:56:00 <clever> but thats not properly doing a linear interpolation between the previous and next sample
05:56:00 <clever> and raising N makes it sound worse and worse
05:57:00 <immibis> you have defined BITS as 8 but you say the PWM is 7 bits
05:57:00 <clever> the part of the code i linked, is also responsible for converting the 16bit audio to 8bit audio
05:57:00 <clever> the official firmware does 7bit at 781.25khz
05:58:00 <clever> my code is doing 8bit at 44khz
05:59:00 <clever> the PWM peripheral also has 3 modes
05:59:00 <clever> in PWM mode, its 1 pulse per sample, where the pulse is N clocks long, and the period is always RANGE clocks long:
05:59:00 <immibis> by the way is this pin hardwired as PWM? if it supports some other high speed transfer mode like SPI you could get even better audio quality with higher processing power by using delta sigma modulation
06:00:00 <clever> in M/S mode, its randomly alternating between high and low, so its N highs out of RANGE,
06:00:00 <clever> which gets rid of the strong tone at the pwm rate
06:00:00 <immibis> (M/S mode sounds the same as delta/sigma modulation)
06:00:00 <clever> and then it just has serializer mode, where you give it a 32bit sample, and it shifts it out at $clock
06:01:00 <clever> i cant hear any real difference between PWM and M/S
06:01:00 <clever> serializer mode, would let you implement any custom thing you want
06:02:00 <clever> you just have to generate an array of bits, and store them in ram
06:02:00 <clever> and unlike SPI, it wont pause every time your transfer-size register overflows
06:03:00 <clever> for the pi3b, the audio is on gpio 40/41,
06:03:00 <clever> 41 can act as MOSI, but 40 is MISO, so you would lose an audio channel
06:04:00 <clever> and that plan would fail on the pi4b, where 45 is one of the audio channels, that can only do SPI CS or i2c SCL (ontop of pwm or gpio)
06:06:00 <clever> immibis: the other major problem i can see, is that PWM mode, has each pulse starting at the same point, relative to a 44khz clock, so there might be some weird effects, where the offset from low to next high, depends on the volume, which could introduce unwanted frequencies
06:06:00 <clever> but i M/S kinda complicates matters, and i cant predict what it would do then
06:07:00 <clever> the other major difference, between the bad-apple sample, and the wear sample (the other song), is how i manage the data buffers
06:07:00 <clever> wear, was a single .bin file, baked directly into the `.rodata` section, with dma configured to just copy the whole thing into the PWM FIFO
06:07:00 <clever> so its kind of a set it, and forget it style of playback
06:07:00 <immibis> the drum clicks still make me think of integer overflow. You could try a less complicated test file, just some drum by itself, or lowpass filter bad apple (audacity can do this) and then if overflow is right, it should be possible to look at the recording's waveform and see it
06:08:00 <clever> but bad apple, is far more complex
06:08:00 <clever> there is an array of 1024 samples (adjustable, line 81), which is split in half
06:08:00 <clever> dma is configured to copy a,b,a,b,... into pwm, and fire an irq when each half is done
06:09:00 <clever> a thread then blocks on an event from that irq, reads 4096 byte chunks from ext4/usb, and keeps the ringbuffer topped up
06:09:00 <immibis> another mistake that would be easy to make is mixing endianness - if your audio file is really quiet so all the samples are under+/-128 except for the drum beats
06:11:00 <clever> hmmm, when i was using .bin format, i had to specify be vs le in ffmpeg args, and yeah it did sound way worse when that was wrong
06:11:00 <clever> also signed vs unsigned int
06:11:00 <clever> ffmpeg -i 【東方】Bad\ Apple\!\!\ PV【影絵】\ \[FtutLA63Cp8\].webm bad-apple.wav
06:11:00 <clever> but double-checking my notes, i dont specify anything when using .wav
06:13:00 <clever>
06:13:00 <clever> immibis: would the le vs be be within format_type?
06:15:00 <immibis> actually I think all WAV files are little-endian
06:15:00 <immibis> is your bin file also little-endian?
06:15:00 <clever> that works, my cpu is LE only
06:16:00 <clever> extract-audio:ffmpeg -i Ken\ Ashcorp\ -\ Wear\ \[_3ux53bbVXs\].webm -ar 16000 -ac 1 -f u16le -acodec pcm_u16le output.raw
06:16:00 <clever> i was using this for my other .bin tests
06:16:00 <clever> so yeah, that was 16bit 16khz LE
06:17:00 <clever> but some math, says that would have been clocked at 1048mhz, which seems a bit high
06:17:00 <clever> not sure what numbers i last used
06:21:00 <clever> i did try asking ffmpeg to output ~700khz audio, but then it changed some special header in the .wav, and it was too much data for usb2 to handle
06:21:00 <clever> so i cant just pre-upsample it
06:30:00 <clever> immibis: i'll need to get the hardware wired up again, and get back to you tomorrow, its already 3am here
06:38:00 <immibis> remember i'm no more an expert on this than you are - even if i did play bad apple on a uart
06:51:00 <clever> yeah
14:08:00 <gog> hi
14:23:00 <sham1> hi
14:24:00 <Ermine> hi gog, may I pet you
14:24:00 <gog> yes
14:24:00 * Ermine pets gog
14:24:00 * gog prr
14:27:00 <netbsduser`> drivers for windows' Storport framework (for fast storage bus adapters) turn out to be almost completely self-contained and depending only on storport routines
14:27:00 <netbsduser`> i wonder whether i might be able to shim it and load these drivers for a lark
14:29:00 <gog> windows NT has a good driver model fite me
14:32:00 <netbsduser`> gog: it's profoundly asynchronous which is nice
14:32:00 <netbsduser`> i stole an idea from some microsoft chap as well when i was implementing a streams-like framework for my kernel
14:34:00 <netbsduser`> this guy invented something to do with filesystem filtering, and he suggested that in place of recursive calls up/down the driver stack as used in Windows, instead he would rather have an iterative mechanism where a driver returns information about what to do next
14:36:00 <netbsduser`> it saves greatly on kernel stack this way (windows apparently has a mechanism whereby if the call stack is getting too big in an i/o codepath, it first tries to extend the kernel stack; if that fails, it executes the driver call that would overflow in a worker thread instead)
14:40:00 <Ermine> heat: I'm looking at #85
14:41:00 <heat> Ermine, nice! see the tty code for starters
14:42:00 <heat> or pipe, pipe is probably simpler
14:43:00 <heat> test for pipe should be "write(n bytes), readv({n bytes, 1 byte})", verify it blocks, then fix, then make sure it doesn't block
14:44:00 <heat> O_NONBLOCK is probably useful there
14:46:00 <Ermine> so 'verify it blocks' would be 'check if it returns EWOULDBLOCK' ?
14:47:00 <heat> yeah sgtm
14:48:00 <heat> you could add it to kernel_api_tests
14:48:00 <Ermine> Ok
15:01:00 <x8dcc> Hello, does anyone know if the intel manual has a similar figure for the segment descriptor as the one in the GDT page of the osdev wiki? I found one for the gdtr (vol. 3, fig. 2-6) but none for the segment descriptors
15:07:00 <gog> the AMD has better figures for the descriptors
15:07:00 <gog> hang on
15:07:00 <gog>
15:07:00 <gog> section 4.6
15:07:00 <gog> through 4.8
15:08:00 <Ermine> Anadia people have fun time with wine on the streets meanwhile
15:11:00 <x8dcc> gog: Thanks, that's useful. I didn't even know AMD had a manual like that. Doesn't look as good as Intel, but the index at least looks cleaner :)
15:12:00 <x8dcc> I would still like to know if the Intel Manual has a similar figure as the one on the wiki, though
15:13:00 <gog> it does i just can't remember where
15:13:00 <x8dcc> which is basically Figure 4-13 of the amd manual you sent
15:13:00 <gog> the AMD manual is a little more condensed
15:14:00 <gog> and i just like it better
15:14:00 <gog> also RYYYYYYYYYYYYYZEN
15:14:00 <x8dcc> gog: well, at least I can search for it now that I know the intel manual has one :)
15:21:00 <x8dcc> found it: Vol. 3, Figure 3-8
15:39:00 <bl4ckb0ne> what happened to the memory acquired through allocatepool time when getting the memory map?
15:39:00 <bl4ckb0ne> is it omitted, or do I have to be careful not to overwrite it
15:40:00 <heat> it's in the memory map
15:40:00 <heat> assuming this is EFI AllocatePool you're talking about
15:40:00 <bl4ckb0ne> yep
15:41:00 <mcrod> hi
15:41:00 <bl4ckb0ne> i also dont get that from the spec
15:41:00 <bl4ckb0ne> >The AllocatePool() function allocates a memory region of Size bytes from memory of type PoolType and returns the address of the allocated memory in the location referenced by Buffer. This function allocates pages from EfiConventionalMemory as needed to grow the requested pool type
15:41:00 <bl4ckb0ne> if PoolType is EfiLoaderData
15:41:00 <bl4ckb0ne> will it still take memory from EfiConventionalMemory?
15:41:00 <heat> yes
15:42:00 <heat> all of DRAM is conventional memory, and you carve from it
15:42:00 <heat> so AllocatePages for EfiLoaderData carves from conventional memory
15:42:00 <mcrod> heat: i'm doing real embedded work today
15:42:00 <mcrod> what say you
15:42:00 <heat> (and allocatepool ends up in allocatepages or similar)
15:42:00 <heat> mcrod, ew embedded
15:42:00 <bl4ckb0ne> i see
15:42:00 <mcrod> i actually am using an oscilloscope to
15:42:00 <mcrod> o
15:42:00 <mcrod> they are fun
15:42:00 <mcrod> buy one
15:43:00 <bl4ckb0ne> so EfiLoaderData is just a fancy name for some memory region that ends up being EfiConventionalMemory
15:46:00 <gog> EfiLoaderData is the allocation type
15:46:00 <gog> EfiConventionalMemory is the range type
15:47:00 <gog> so when you look at the memory map for allocated blocks it'll tell you what the allocation type is
15:47:00 <gog> EfiLoaderData, EfiLoaderCode etc
15:47:00 <bl4ckb0ne> and they are both efi_memory_map nice
15:48:00 <mcrod> gog may I hug you
15:49:00 <bl4ckb0ne> hmmm
15:50:00 <bl4ckb0ne> so EfiLoaderData and EfiLoaderCode memory type should not be used by the kernel past exitBootServices
15:50:00 <heat> well yes because its *you* lol
15:53:00 * bl4ckb0ne loves the smell of footguns in the morning
15:53:00 <bl4ckb0ne> should've done that in C++
15:56:00 <gog> EfiBootServices{Data,Code} and EfiLoader{Data,Code} become available for use after ExitBootServices()
15:57:00 <gog> and data in a region may still be there, but if you need to pass data along to a kernel you may as well define your own EFI_MEMORY_TYPE > 0x80000000 iirc
15:57:00 <bl4ckb0ne> not efiloaderdata/code
15:57:00 <gog> what does the spec say
15:57:00 <bl4ckb0ne> gah fuck i lost it
15:58:00 <bl4ckb0ne> > On success, the UEFI OS loader owns all available memory in the system. In addition, the UEFI OS loader can treat all memory in the map marked as EfiBootServicesCode and EfiBootServicesData as available free memory.
15:58:00 <bl4ckb0ne>
15:58:00 <bl4ckb0ne> see Table 7.6
15:59:00 <gog> right, and then when the loader has passed control to the kernel then anything in LoaderData and LoaderCode are free now too
15:59:00 <heat> not quite
15:59:00 <bl4ckb0ne> doesnt seems like it
15:59:00 <heat> LoaderCode and LoaderData can and probably are you if you're an EFI app hybrid or some shit
15:59:00 <bl4ckb0ne> i shoved my boot params in there
15:59:00 <mcrod> gog: :(
15:59:00 <gog> mcrod: what is it
15:59:00 <mcrod> i asked for hug
16:00:00 <gog> oh
16:00:00 * gog hug mcrod
16:00:00 * mcrod hug gog
16:00:00 <bl4ckb0ne> just after you left
16:00:00 <gog> sorry i reboot4ed
16:00:00 <bl4ckb0ne> you never saw the msg
16:01:00 <gog> anyhow, once BootService are exited, whatever is in Loader{Data,Code} was allocated by your loader and is at your disposal
16:01:00 <gog> if you stuffed boot params in there that's fine, you can reclaim it at some point
16:01:00 <gog> i'm doing something even weirder in my dev branch though
16:01:00 <bl4ckb0ne> yeah, it can still be reached
16:01:00 <bl4ckb0ne> but i wont use it to allocate more mem
16:01:00 <gog> you can't after ExitBootServices anyhow
16:02:00 <heat> ii'm doing a bisect for a random guy on a byzantine kernel bug
16:02:00 <gog>
16:02:00 <heat> gog
16:02:00 <gog> The Loader and/or OS may use this memory as they set fit
16:02:00 <gog> heat
16:02:00 <gog> bisecta
16:03:00 <gog> byzantine
16:03:00 <heat> you bisected my heart
16:03:00 <gog> whaaaaaaaa
16:03:00 <gog> when
16:03:00 <gog> i would never
16:03:00 <heat> in your 9th grade biology class
16:03:00 <heat> that was my heart
16:03:00 <gog> we dissected mudskippers
16:04:00 <gog> or some kind of lungfish
16:07:00 <heat> i wonder if i can disable DRM here
16:08:00 <heat> it pains me when doing these bisects that i build so much shit i don't need
16:10:00 <heat> gog gog gog
16:11:00 <heat> buy me a cocmputer
16:11:00 <heat> let me program
16:11:00 <heat> build kernal fast go vrooooooom
16:13:00 <gog> i can't afford
16:14:00 <heat> why u cant afford
16:14:00 <heat> u poor?
16:14:00 <heat> why can u aford computer for you but not computer for me
16:14:00 <heat> idk seems kidna unfair
16:14:00 <zid> I'm first heat
16:15:00 <zid> I need new jippy U
16:16:00 <heat> i need a new motherboard and central processing unit and random access memory and jippy u and power supply
16:16:00 <heat> and m.2 nvme PCIe gen 4 very fast sir pls
16:17:00 <gog> best i can do is a half-broken goldmont netbook from 2019
16:19:00 <heat> if the kernel was written in C++ i'd be doing 1h compiles instead of 10 minutes and i find that beautiful
16:20:00 <heat> if the kernel was written in rust i'd be doing 2h compiles with 100 crates and 30 minutes of LTO at the end
16:20:00 <heat> thank god rust is never getting in the ker-fuck
16:20:00 <zid> Have you considered writing it all in assembly
16:21:00 <zid> that will rebuild super fast
16:21:00 <heat> mr torval had that idea in 1992
16:22:00 <gog> never write code
16:22:00 <gog> no code, no compiling
16:22:00 <gog> no bugs no tests
16:23:00 <gog> ezpz
16:23:00 <gog> i'm trying to write as little code as possible today
16:23:00 <kazinsal> a wise decision
16:23:00 <heat> gog what0s your favourite unix and why is it solaris 10
16:24:00 <gog> illumos
16:24:00 <gog> because it's solaris 9
16:24:00 <heat> illumos? more like solaris nein
16:25:00 <gog> when i started using illumos i had more free time to kiss women
16:26:00 <heat> kiss a what now
16:26:00 <heat> what's a 'woman'?
16:26:00 <zid> the things gog kisses
16:26:00 <zid> all you need to know
16:26:00 <gog> YES
16:26:00 <gog> yes
16:26:00 <kazinsal> boobs
16:26:00 <gog> maybe
16:26:00 <gog> :<
16:27:00 <heat> bobs
16:28:00 <kazinsal> entirely unrelated I am tired as all hell and got zero hours of sleep last night after working until 1am
16:28:00 <gog> dang
16:28:00 <kazinsal> it's only 9:30am. I am already starting to lose it
16:28:00 <gog> why were you working so late
16:28:00 <gog> on a sunday
16:28:00 <kazinsal> cutover for a client that's open 7 days a week 7am-7pm
16:28:00 <gog> shiiiii
16:28:00 <gog> do you get to fuck off early today at least?
16:29:00 <kazinsal> maybe, idk. probably gonna tell my boss I'm going to take a two hour nap sometime around lunch
16:29:00 <kazinsal> hopefully manage to get enough sleep to keep going until bed
16:29:00 <heat> why are you LAZY
16:29:00 <heat> never sleep
16:29:00 <heat> keep working
17:45:00 <bl4ckb0ne> OutputString is annoying
17:46:00 <heat> it is
17:46:00 <bl4ckb0ne> thought I could just snprintf it but no it requires char16_t
17:48:00 <mcrod> god
17:48:00 <mcrod> how do I do `time += infinity;` in my life
17:48:00 <bl4ckb0ne> there's no god
17:48:00 <mcrod> duh
17:49:00 <bl4ckb0ne> its only agony
17:49:00 <gog> gnu-efi has a sort of printf implementation
17:49:00 <gog> sort of
17:49:00 <bl4ckb0ne> i dont use it
17:50:00 <gog> fair
17:55:00 <mcrod> god why is gitlab actually good
17:55:00 <heat> why do you only complain or mindlessly praise
17:56:00 <bl4ckb0ne> im 50% sure mcrod has french blood
17:56:00 <heat> bl4ckb0ne, btw you could naively just expand ASCII into UCS2
17:56:00 <bl4ckb0ne> heat: idk, just complaining
17:56:00 <heat> fair
17:56:00 <bl4ckb0ne> there's a printf reimpl in hboot already
17:58:00 <mcrod> heat: i wish i knew.
17:58:00 <mcrod> i'm not french at all
17:59:00 <heat> i personally don't like gitlab, it just feels alien to me
17:59:00 <heat> some sort of dollar store github
17:59:00 <heat> yes i'll send you a pull reque- erm i mean a "Merge request"
18:01:00 <heat> git bisect run is nice
18:02:00 <zid> mrod: you mean, GOD, FRENCH IS SUCH A LANGUAGE
18:02:00 <zid> stay in cahracter ffs
18:03:00 <mcrod> i don't complain that often, in truth
18:03:00 <mcrod> it's just the only thing I end up saying here is indeed, some form of complaint
18:03:00 <zid> hmm?
18:03:00 <zid> compared to what? a complaining bot set to 11?
18:03:00 <mcrod> i am splitting hairs
18:03:00 <Ermine> one minor perk of gitlab is that it can remove mr branches automatically
18:04:00 <zid> is mr branches related to dick sites
18:04:00 <heat> hahahaha
18:09:00 <gorgonical> I finally finished my first play of baldur's gate 3 last night
18:10:00 <zid> I'm too poor to understand this message
18:10:00 <zid> (game looks great though)
18:10:00 <gorgonical> I had to actually upgrade my graphics card so the game cost me an additional $100 lol
18:11:00 <gorgonical> I cannot believe how big the game is
18:11:00 <zid> I have BG2 somewhere, I never really played it though
18:11:00 <zid> it's in a cardboard foldout mess with like 5 CD pouches
18:11:00 <gorgonical> I never played it when it was new, I was too young to really grok it
18:12:00 <gorgonical> I mean I was 6 so lol
18:13:00 <zid> like that
18:13:00 <zid> wonder how much extra it cost vs a reg game at the time
18:13:00 <gorgonical> oh that's really cool
18:13:00 <gorgonical> wow
18:15:00 <zid> It came with a friend's computer I think, the pack in game, along with total annihilation
18:15:00 <zid> I ended up with it cus he was never going to play it
18:16:00 <zid> we played a fuck lot of total annihilation though
18:18:00 <gorgonical> is that an rts?
18:18:00 <zid> TA is yea
18:18:00 <zid> The first one to use 3d models I think
18:19:00 <gorgonical> hmm
18:19:00 <gorgonical> I played loads of warcraft 3 as a kid
18:19:00 <gorgonical> Never did play dota though lol
18:19:00 <zid> wc3 was harrrd
18:19:00 <gorgonical> I was actually pretty good at the game and played ranked and did reasonably well
18:19:00 <gorgonical> certainly not top 10% but I was an excellent turtler as humans
18:20:00 <zid> grubby, moon, and gorgonical.
18:22:00 <gog> hi
18:23:00 <gorgonical> hello hello
18:23:00 <gog> wc3 was very hard i think it was a long time before i ever beat the campaign
18:25:00 <heat> hi
18:26:00 <gog> i'm making curry for dinner
18:26:00 <gog> i have garam masala and turmeric and paprika
18:26:00 <zid> paprika is just red dye
18:27:00 <gorgonical> unless you use a lot of it
18:27:00 <gog> it sort of has a flavor
18:27:00 <gorgonical> that's what i had to learn, to use like three times as much as you think
18:27:00 <zid> not that you'd taste through garam masala
18:27:00 <gog> yes
18:27:00 <gog> the turmeric and paprika are mostly for color
18:27:00 <netbsduser`> gog: best wishes
18:28:00 <zid> I bought some madras powder from ebay once, it was bad :(
18:28:00 <netbsduser`> i'm british asian and my first summer job was at a bengali/indian restaurant
18:28:00 <netbsduser`> give me a shout if you want advice
18:28:00 <zid> netbsduser`: make me a madras
18:28:00 <gog> nice ty :D
18:29:00 <gog> there used to be an asian grocery downtown that i loved but they lasted like a year before closing down
18:29:00 <gog> now it's a similar market but they don't have any of the imported snacks or spices
18:29:00 <zid> oh, and enough popadoms so that when stacked the ones at the bottom start to break
18:29:00 <zid> thanks
18:29:00 <gog> i've neveer tried to make popadoms i should do that
18:30:00 <ripsquid> Small question, How do I learn about debugging something I think is "triple fault?" or something that makes qemu close? How do I figure out what instruction that makes it happen? Could anyone lead me to any helpful resource?
18:30:00 <gog> ooh or samosas
18:30:00 <zid> -d int
18:30:00 <zid> -no-reboot -no-shutdown
18:30:00 <gog> ripsquid: -d int -no-restart
18:30:00 <gog> yeah
18:30:00 <zid> no something
18:30:00 <zid> reboot or restart, try!
18:30:00 <heat> what zid said
18:30:00 <heat> --no-reboot --no-shutdown
18:30:00 <heat> plus -d int
18:30:00 <gog> yes
18:30:00 <zid> -no-reboot
18:30:00 <heat> plus the qemu monitor's info registers etc etc even gdb can help you there maybe
18:30:00 <zid> I checked
18:31:00 <ripsquid> What does -d int do? I have no-reboot and no-shutdown since before.
18:31:00 <zid> traces interrupts
18:31:00 <zid> aka exceptions
18:31:00 <gorgonical> so if you have your output somewhere else than the monitor you'll be able to see what interrupts occurred
18:32:00 <zid> you'll get like old 0xffff new 0xd <info about the exception> old 0xd new 0xe <info about exception> old 0xe new 0xe <info about exception> then -no-reboot will hang it
18:32:00 <zid> and you have a lovely trace to look at for what caused your triplefault
18:33:00 <ripsquid> Okay. I am trying to setup interrupts and exceptions. My "OS" just makes qemu pause even while I think I am successfully running lidt and related code. But I'll see what -d int gives me
18:33:00 <gog> descriptor tables are annoying and a very common stumbling block
18:33:00 <gorgonical> it took me a long time to make them work correctly too
18:33:00 <zid> my lidt is the one thing that always worked
18:33:00 <zid> gdt I've fucked up a few times
18:33:00 <gog> idt is only one kind of descriptor really
18:34:00 <zid> mainly because it has loads more fields
18:34:00 <zid> and you load it way more often
18:34:00 <gog> at least i think you can only have gate descriptors in the IDT and only ones that are traps, interrupts or faults
18:35:00 <zid> imagine using anything but interrupt
18:35:00 <gog> GDT stands for God Damn Table
18:36:00 <gorgonical> i don't even really know what the other two do
18:36:00 <zid> same
18:36:00 <gorgonical> i never did figure out how to use traps
18:36:00 <gog> they don't clear IF on entry
18:36:00 <zid> disgasting
18:36:00 <gog> or rather, teh CPU won't clear them when vectored to
18:36:00 <gog> s/them/it
18:36:00 <gog> idk
18:37:00 <gog> i'm not a computer person really
18:37:00 <gog> i just spend all day with computers and make money by touching them and entering arcane symbols and formula
18:37:00 <gog> i should've been a dancer instead
18:37:00 <gog> this sucks
18:41:00 <mcrod> that's ok
18:41:00 <mcrod> everything is terrible
18:41:00 <gorgonical> i'm definitely gonna be bald by the time i get my phd
18:42:00 <mcrod> everyone i know is bald
18:42:00 <mcrod> and i just turned 29
18:42:00 <mcrod> .
18:42:00 <zid> yes, everybody you know is bald
18:42:00 <zid> and we all believe that
18:43:00 <mcrod> you should
18:43:00 <mcrod> i'm willing to bet you're bald
18:43:00 <zid> my hair goes below my shoulders
18:43:00 <gorgonical> it could be true if you live on that mountain in greece where no women are allowed
18:43:00 <gorgonical> mt athos?
18:43:00 <mcrod> also, "everyone" isn't so literal here
18:43:00 <gog> i know a weird trick to prevent baldness but you probably won't like it
18:43:00 <zid> no fair, bald women are hot
18:43:00 <gorgonical> gog: lol
18:43:00 <zid> gog: hrt?
18:44:00 <gog> bingo
18:44:00 <zid> I was about to ask actually
18:44:00 <zid> if trans women dodged male baldness
18:44:00 <gog> it actually depends
18:44:00 <zid> (ngl it'd be kinda funny if they didn't)
18:44:00 <gorgonical> genetically i never had a chance. there's not a man in my family that isn't bald
18:44:00 <zid> my dad had hair when he died
18:44:00 <gog> my hairline was receding a bit and is a little bit high but i got about 1cm of vellus hair back
18:44:00 <zid> I should be okay enough
18:45:00 <zid> and grandad on mother's side had *some* hair left in his 80s
18:45:00 <zid> I've slowly been going grey for 15 years though
18:45:00 <zid> I think it's exponentially ramping, but I am still at the 0.00000001 stage
18:46:00 <zid> I'll just go FWOOMP at some point and be totally grey
18:46:00 <zid> gog: when you go grey are you going purple rinse?
18:46:00 <gorgonical> purple rinse?
18:47:00 <zid>
18:47:00 <zid> stock gog footage from 2080
18:47:00 <gorgonical> I didn't know the old lady hair dye had a name
18:47:00 <zid> rip barry humpries
18:50:00 <gorgonical> I finally have my two kernels communicating over IPI and trustzone boundaries on hardware
18:50:00 <gorgonical> the value between them is not correct but that's probably a mmu/coherency misconfiguration
18:50:00 <gorgonical> Fuckin qemu cost me so much time and caused me so much pain
18:50:00 <gorgonical> :c
18:51:00 <zid> you expected accurate trustzone emulation in qemu? O_o
18:51:00 <gorgonical> no
18:51:00 <gorgonical> i expected accurate memory behavior in qemu
18:51:00 <gorgonical> worse
18:51:00 <zid> yea that's a bit of a hard sell
18:51:00 <zid> almost no emulators do that
18:51:00 <zid> because it's just SO much slower and much more work
18:51:00 <gorgonical> there is also some wildly inaccurate trustzone behavior on the board
18:52:00 <zid> like, 100x slower a lot of the time
18:52:00 <gorgonical> which qemu *did* implement correctly
18:56:00 <gog> i have too much red for purple rinse to work :(
18:57:00 <gog> i tried this temporary color because i wanted some of the pink back but it didn't take4
18:57:00 <geist> oh grats for finally getting that going
18:57:00 <geist> what was the final problem you had to figure out?
18:58:00 <geist> well, gorgonical is who i was asking, but hair color is interesting too!
18:58:00 <gorgonical> geist: finally we resigned to the fact that the board is just not implementing secure/non-secure access correctly, and the behavior is seen with other secure oses
18:58:00 <gorgonical> i built up op-tee from their whole stack and it also shows the same behavior on my board
18:58:00 <gorgonical> so after that it was pretty smooth sailing honestly lol
18:58:00 <geist> yah makes sense. at the end of the day the secure/nonsecure stuff is just a biton the AXI trasnsactino the hardware has to actually honor
18:59:00 <gorgonical> the wacky thing is that linux can read the secure version but writes the non-secure version, but the bits that are supposed to be mapped between the two versions are not really
18:59:00 <gorgonical> it is insane
18:59:00 <gorgonical> like linux, running with scr_el3.ns==1, can just disable gicd security board-wide
19:00:00 <gorgonical> i lost so much time on this because it wasn't resolved by me recognizing some mis-set bit. I had to actually sit down and characterize the strange behavior to understand what was happening
19:05:00 <gog> geist: :P
19:05:00 <gog> i know
19:37:00 <sham1> hi
19:39:00 <gog> hi
19:39:00 <gog> would you like some curry
19:40:00 <mcrod> yes
19:53:00 <gorgonical> I would really like some egg curry
19:55:00 <gog> egg curry :o
19:55:00 <x8dcc> Hello, everyone
19:55:00 <gog> meowdy
19:56:00 <gorgonical> Just whole eggs cooked until the yolks are a little jammy, stirred into whatever curry you like to stain and flavor them. I use a coconut curry cause the original idea was from south indian cuisine
19:56:00 <gog> nice
19:56:00 <gog> sounds tasty
19:57:00 <gog> my sauce base was coconut too
19:58:00 <gog> i used to think i didn't like the flavor or smell of coconut but it actually doesn't bother me anymore. i still don't like the texture of flaked coconut
20:00:00 * zid sends gog a bounty
20:00:00 <zid> your favour!
20:00:00 <zid> ite*
20:04:00 <gog> no pls
20:07:00 <gorgonical> that's just a mounds
20:07:00 <gorgonical>
21:45:00 <zid> welp, bookworm finally did it
21:45:00 <zid> the thing it's about, happened
21:54:00 <heat> >I am trying to run xv-6 on kali linux
21:54:00 <heat> cheers mate
21:54:00 <heat> who the fuck uses kali linux
21:55:00 <mcrod> your mom
21:56:00 <cloudowind> heat: a lot using that
21:58:00 <heat> my mom does not use linux
21:58:00 <heat> much less pseudo-hacker linux
21:59:00 <heat> >With version 2020.3 in August 2020, the default shell was switched from Bash to ZSH
21:59:00 <heat> holy shit wow please die
21:59:00 <mcrod> i use zsh
21:59:00 <heat> i respect people that use zsh
21:59:00 <heat> but switching the default? fucking hell
21:59:00 <mcrod> therefore I am obligated to do thi-
21:59:00 <mcrod> okay, you have saved yourself from utter destruction
21:59:00 <kof13> i know for a fact that guy uses kali linux <points at indiana jones rope bridge scene>
21:59:00 <heat> it's like if i make a distro whose default shell is tcsh
22:00:00 <heat> or mksh
22:00:00 <heat> i'm really begging to get shot
22:01:00 <CompanionCube> 'Early versions of Mac OS X shipped with tcsh as the default shell, but the default for new accounts became bash as of 10.3 then zsh as of 10.15.'
22:01:00 <CompanionCube> heat: could be worse, default shell could be fish, but wrong vibe
22:01:00 <heat> yeah early versions of macOS shipped with tcsh because it's a netfreebsd ripoff
22:01:00 <heat> netfreebsdmach ripoff
22:02:00 <heat> fish being the default shell would however be funny as fuck
22:02:00 <mcrod> i should figure out a way to lower my blood pressure
22:02:00 <mcrod> before i stroke and die
22:02:00 <mcrod> if I ever get around to an OS
22:02:00 <mcrod> I would like to make it POSIX compliant
22:02:00 <kof13> nextstep had zsh IIRC but it wasn't default of course
22:03:00 <mcrod> as in, certified
22:03:00 <heat> lmao
22:03:00 <mcrod> that'll never happen
22:03:00 <mcrod> but I can dream
22:03:00 <CompanionCube> heat: microsoft should publish a distro with pwsh as the default, for the memes.
22:03:00 <zid> I can't tell the difference between zsh and bash other than that portage has theme packs for zsh
22:03:00 <heat> you realize the POSIX stamp is just something you basically pay for?
22:03:00 <mcrod> is it?
22:03:00 <heat> yes
22:03:00 <mcrod> don't they have a fancy test suite
22:03:00 <heat> horrendous test suite yes
22:03:00 <mcrod> how do you know
22:03:00 <CompanionCube> hence why macOS is certified and linux isn't.
22:04:00 <heat> i've poked many holes at le dear UNIX-certified macOS's path walking from a test suite I wrote in a few hours
22:04:00 <mcrod> ah
22:04:00 <heat> written based on the wording
22:04:00 <heat> like, non-POSIX certified systems did better than macOS
22:05:00 <heat> POSIX is also kinda the bare minimum of everything
22:05:00 <heat> if you strive to be POSIX only you're like the vanilla of flavors
22:05:00 <moon-child> zsh is great but there is a special place for people that 'juice'/'rice' (or whatever they call) it
22:05:00 <heat> it's not really usable
22:06:00 <mcrod> sure, but that's "unix"
22:07:00 <mcrod> if you're fully compliant with SUS, you should be theoretically as usable as anything else
22:08:00 <heat> no
22:08:00 <heat> because anything else implements a boatload of extensions
22:09:00 <mcrod> still would be cool to give it a go
22:09:00 <heat> as usable as everything else
22:09:00 <bslsk05> ​ <no title>
22:10:00 <heat> GCC is just bloat, no one ever needed all those features
22:10:00 <mcrod> you know that's not what I'm saying
22:10:00 <heat> then what are you saying?
22:10:00 <heat> POSIX is the *bare minimum* everyone got to agree with
22:10:00 <mcrod> when I say "as usable" I mean at the very least I should be able to compile and run X or something
22:10:00 <mcrod> okay i don't quite know what I'm saying
22:11:00 <heat> i mean you don't need to be POSIX compliant for that
22:11:00 <mcrod> no, you don't
22:12:00 <heat> here's an example of what i'm saying: let's say you wanted to run an sql server on your theoretical OS
22:13:00 <heat> database software traditionally uses O_DIRECT when opening database files because the page cache and the POSIX write guarantees suck
22:13:00 <heat> POSIX does not have O_DIRECT
22:13:00 <heat> do you want high quality entropy? POSIX does not have arc4random
22:14:00 <heat> have a web server with lots of clients? oh no, there's no epoll nor kqueue
22:14:00 <zid> select is great shush
22:14:00 <zid> (Why is there no select but with a better interface btw?)
22:14:00 <heat> yeah, and that's poll, and it still sucks
22:14:00 <zid> poll is not select with a better interface
22:14:00 <heat> why not?
22:15:00 <zid> because it isn't? I'm not sure why
22:15:00 <heat> it does everything select does, in a cleaner way
22:15:00 <CompanionCube> also how will you run X? POSIX doesn't specify graphics APIs.
22:15:00 <heat> unless you're really attached to the bitmap idea
22:15:00 <mcrod> it doesn't, but I meant
22:15:00 <mcrod> you can compile X and it would (maybe?) work just fine, since all of the POSIX shit is there
22:16:00 <heat> that's not a reality
22:16:00 <heat> X heavily relies on per-UNIX-variant code for lots of stuff
22:16:00 <heat> like PCI device enumeration
22:16:00 <heat> standardize that, i fucking dare you
22:18:00 <zid> okay maybe poll is select with a better interface, but I sort of meant a better better interface, not select.1b
22:28:00 <heat> and you do, epoll and kqueue
22:28:00 <zid> I knew computer was mistake
22:28:00 <heat> and /dev/poll for the solaris fans out there
22:29:00 <zid> fine I'll fucking use epoll geez
22:30:00 <heat> /dev/poll actually looks really ez to implement
22:30:00 <heat> >The /dev/poll device, associated driver and corresponding manpages may be removed in a future Solaris release. For similar functionality in the event ports framework, see port_create(3C).
22:30:00 <heat> :(
22:31:00 <CompanionCube> funny quote from the illumos manpage: 'The /dev/poll driver does not yet support polling.'
22:32:00 <zid> but does it support epolling
22:34:00 <CompanionCube> lol the notes
22:34:00 <bslsk05> ​ illumos: manual page: epoll.7
22:36:00 <heat> oh they have epoll?
23:20:00 <gog> hi
23:20:00 <nikolar> hi
23:20:00 <gog> native applications should continue to use this interface (that's worse)
23:21:00 <zid> no gog, no computer
23:21:00 <zid> computer mistake
23:21:00 <zid> don't think about computer
23:21:00 <gog> i have benerial disease
23:21:00 <gog> i got it from my computer
23:21:00 <gog> don't ask how
23:21:00 <gog> (my computer was cheating on me and didn't say)
23:22:00 <gog> illumos is aspirational for me rn
23:22:00 <gog> they've done what i can't even do
23:23:00 <gog> reimplement linux poorly
23:23:00 <zid> gog when are you adding an allocator to my kernel
23:23:00 <zid> I could write so much cool stuff after that
23:23:00 <zid> it doesn't even have to be good
23:23:00 <gog> idk just use mine
23:23:00 <zid> adds it!
23:23:00 <gog> it's not very good but it can do anonymous vm mapping
23:23:00 <gog> mostly
23:24:00 <zid> I don't even know what that means
23:24:00 <zid> can it.. give bytes
23:24:00 <gog> yes
23:24:00 <zid> k submit
23:24:00 <gog> no
23:24:00 <gog> you submit patches to my kernel first
23:26:00 <zid> but I haven't pre-written you any code yet
23:26:00 <zid> this is a bad trade
23:27:00 <cloudowind> which one is your kernel
23:27:00 <zid> the one on github/zid
23:27:00 <zid> (kernel is stretching it)
23:27:00 <cloudowind> k , and gog's is github/gog ?
23:28:00 <gog> idk it's somewhere
23:28:00 * gog shuffles papers around
23:28:00 <gog> no
23:28:00 <netbsduser> mcrod: i run xorg and my os is very much not sus
23:29:00 <zid> gog: I think someone in here is possessed by an owl
23:29:00 <cloudowind> peter?
23:29:00 <gog> do you think it's me?
23:30:00 <gog> ¯\_(ツ)_/¯
23:30:00 <netbsduser> who is peter
23:30:00 <gog> foudn the owl
23:30:00 <netbsduser> st peter the apostle? peter the great?
23:31:00 <gog> peter griffin
23:32:00 <heat> hehehehehe
23:32:00 <heat> netbsduser, OS IS SUS
23:33:00 <heat> gog, submit patch to my kernal
23:33:00 <heat> if Ermine submit you submit
23:33:00 <heat> that iz deal
23:33:00 <gog> i will never submit
23:33:00 <gog> i will never yield
23:33:00 <heat> if gog submit mjg submit
23:33:00 <heat> and if mjg submit famed linox kernal dvelop linux torvald will
23:34:00 * kazinsal pets gog
23:34:00 * gog prr'
23:34:00 <heat> prr apostrophe
23:35:00 <gog> prr prime
23:35:00 <gog> it's the derivative of prr
23:35:00 <kazinsal> prr for mathematicats
23:35:00 <heat> oh no
23:36:00 <gog> oh yes
23:37:00 <heat> gog
23:37:00 <heat> gog
23:37:00 <heat> gog
23:37:00 <gog> heat
23:37:00 <heat> foo
23:37:00 <heat> bar
23:37:00 <heat> baz
23:37:00 <heat> INGA
23:37:00 <gog> fizz
23:37:00 <gog> buzzing
23:37:00 <gog> fizzbuzzinga
23:38:00 <heat> bazinga lightyear
23:38:00 <gog> i'm not programming
23:43:00 <kazinsal> need to get some better accessories to make my coding better
23:43:00 <kazinsal> maybe I'd actually get something done if I had some of those fancy programming socks
23:46:00 <gog> they say it's the socks
23:46:00 <gog> i think it might actually be cat ears
23:47:00 <kazinsal> perhaps a combination of the two
23:49:00 <heat> do you think K&R had programming socks
23:49:00 <gog> absolutely
23:49:00 <kazinsal> I have it on good authority that if you buy programming socks off amazon, it'll recommend you buy the K&R book along with them
23:51:00 <heat> rust book when??
23:51:00 <heat> rustc only runs if you have programming socks on