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
wblue has quit [Ping timeout: 245 seconds]
vinc has joined #osdev
[itchyjunk] has quit [Remote host closed the connection]
nyah has quit [Quit: leaving]
<heat> mcrod giant armor is available for purchase from the giant blacksmith
<gog> meow
<heat> hi gog
<heat> how r u
<gog> hi heat
<geist> a gog
<heat> hi geist
<geist> hewwo
<heat> here's an interesting detail i found out about a few days ago: you can't rely on x86_64 registers' upper 32-bits when doing 64 -> 32 -> 64
<heat> Because the upper 32 bits of 64-bit general-purpose registers are
<heat>    undefined in 32-bit modes, the upper 32 bits of any general-purpose
<heat>    register are not preserved when switching from 64-bit mode to a 32-bit
<heat>    mode (to protected mode or compatibility mode). Software must not
<heat>    depend on these bits to maintain a value after a 64-bit to 32-bit
<heat>    mode switch
<geist> interesting
<geist> but probably makes sense. so when coming from user space the top of the 64bit registers may be full of garbage, and you should probably treat accordingly
<geist> arm i think makes a statement on the topic of what happens to the top of the registers in 32bit mode
<geist> riscv i'm not entirely sure does
pg12_ has joined #osdev
<heat> trivial testing says nothing interesting happens (it gets 0'd if you change the bottom 32-bits)
pg12 has quit [Ping timeout: 250 seconds]
<heat> would probably be a big security problem a-la zenbleed if they gave it garbage or something
pg12_ is now known as pg12
MiningMarsh has quit [Ping timeout: 260 seconds]
vinc has quit [Read error: Connection reset by peer]
<geist> yeah
<geist> qewll, i mean it's really a kernel problem, and the kernel if it sanitized input stuff from user space it's solved
<clever> after turning DMA on in the dwc, many things broke, turns out, NAK packets are more automated in DMA mode
<clever> so i can throw away that timer i was using to retry interrupt endpoints
<clever> ive fixed all the bugs i caused by switching, and i'm back to my MSD issue, but ive also got some new theories
<clever> i entirely forgot to manage data-toggling on OUT packets
<clever> until now, the only OUT was for control-in with a 0-byte OUT to ACK
heat has quit [Ping timeout: 246 seconds]
<clever> but maybe that theory was wrong, its hanging at test-unit-ready, the first OUT, with DATA0
<clever> but i'm assuming DATA0 is first for bulk
ajunior has quit [Remote host closed the connection]
<clever> i also read a ticket on the tinyusb github, tinyusb on the rp2040 is abusing the hardware support for interrupt endpoints, to query bulk-in endpoints
<clever> it gives automated polling, but its limited to 1 poll per frame
ajunior has joined #osdev
<clever> why is my 13 byte IN, 0 packets long?...
<clever> int packets = (size / max_packet_size);
<clever> because round down, lol
dude12312414 has quit [Remote host closed the connection]
vdamewood has joined #osdev
dude12312414 has joined #osdev
elastic_dog has quit [Ping timeout: 246 seconds]
<clever> fixed that, still nothin
elastic_dog has joined #osdev
ajunior has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
stolen has joined #osdev
<clever> aha, OUT was hard-coded to DATA2 !!
<clever> DATA1*
<clever> confusing when 0=0, 1=2, 2=1, and 3=mdata, lol
<clever> yep, that helped!
heat has joined #osdev
<heat> geist: it's not just a kernel problem as you can switch modes in userspace
<geist> well, okay. yeah sort of right, yeah
gog has quit [Ping timeout: 260 seconds]
heat has quit [Quit: Client closed]
m5zs7k has quit [Ping timeout: 245 seconds]
m5zs7k has joined #osdev
smeso has quit [Quit: smeso]
<clever> geist: and i fixed MSD access, both bulk-in and bulk-out where mis-handling data toggling!
<clever> i can now query the lun count, query the size of each lun, and read sector 0 correctly
smeso has joined #osdev
<clever> but tinyusb is async, and lk/bio is sync, so i need to rig up some blocking there
<clever> sleep(2sec); is a very ugly hack!
<geist> yeah probably need a worker thread to drive the bio layer
<clever> i think i can just create an event_t on the stack, and block on that
<geist> yup
<clever> and the tinyusb callback (tinyusb has its own worker thread) will wake that
<clever> and this is the first time i'll have write support on the rpi, lol
<clever> i never bothered getting SD write working, but tinyusb has already done 90% of the work
m5zs7k has quit [Ping timeout: 240 seconds]
<clever> the big lesson, is that if you DATA1 a MSD when it expected a DATA0, you get no errors
<clever> the MSD even ACK's the packet!!
m5zs7k has joined #osdev
<clever> 2 of my drives are doing exactly that
<clever> geist: foo=EVENT_INITIAL_VALUE in the stack frame, or event_init()?
vdamewood has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<clever> ah, checking the src, event_init just de-refs and does EVENT_INITIAL_VALUE
<clever> better inlining if i just use the macro myself
<geist> yeah it's just two different styles. the macro version is generally used if you're initializing it in some global
<geist> the C++ equivalent would be to use a constexpr initializer, but that doesn't exist in C
<clever> yeah, when you dont want cxx_init to run
<clever> minor issue, read errors
<clever> i'll need a struct, containing the retval, and the event_t
<clever> geist: `dev->bdev.read_block` should return what upon error?
sbalmos has quit [Server closed connection]
sbalmos has joined #osdev
<clever> looks like negative
<clever> i'll grab something from err.h
<clever> that seems to work!
<clever> so now i just grab the mbr code you wrote...
<clever> ah, and that breaks it
<clever> i ran partition_publish(), in the tinyusb thread
<clever> so tinyusb stopped processing packets, and never ran the callback
Vercas has quit [Quit: buh bye]
Vercas has joined #osdev
<clever> usb2_0p0, size 268435456, bsize 512, ref 1 (no erase geometry)
<clever> it verks!!
Vercas has quit [Client Quit]
Vercas has joined #osdev
kernelcorrupt has joined #osdev
Vercas has quit [Client Quit]
Vercas has joined #osdev
dude12312414 has quit [Quit: THE RAM IS TOO DAMN HIGH]
Vercas has quit [Client Quit]
Vercas has joined #osdev
Vercas has quit [Remote host closed the connection]
Vercas has joined #osdev
[itchyjunk] has joined #osdev
terrorjack has quit [Quit: The Lounge - https://thelounge.chat]
terrorjack has joined #osdev
bradd has quit [Remote host closed the connection]
kernelcorrupt has quit [Quit: Leaving]
[itchyjunk] has quit [Remote host closed the connection]
rorx has quit [Ping timeout: 246 seconds]
vinc has joined #osdev
Jari-- has joined #osdev
<Jari--> morning
goliath has joined #osdev
<clever> morning
ajunior has joined #osdev
ajunior has quit [Client Quit]
Burgundy has joined #osdev
rorx has joined #osdev
elderK has joined #osdev
GeDaMo has joined #osdev
CaCode has joined #osdev
CaCode has quit [Quit: Leaving]
stolen has quit [Quit: Connection closed for inactivity]
Jari-- has quit [Ping timeout: 240 seconds]
danilogondolfo has joined #osdev
terminalpusher has joined #osdev
nyah has joined #osdev
terminalpusher has quit [Remote host closed the connection]
sakasama has joined #osdev
netbsduser has joined #osdev
raggi has joined #osdev
selfsigned has joined #osdev
chibill has joined #osdev
Left_Turn has joined #osdev
gog has joined #osdev
gareppa has joined #osdev
Left_Turn has quit [Ping timeout: 260 seconds]
wgrant has quit [Quit: WeeChat 3.5]
Turn_Left has joined #osdev
vinc has quit [Read error: Connection reset by peer]
Turn_Left has quit [Ping timeout: 260 seconds]
vinc has joined #osdev
Left_Turn has joined #osdev
wgrant has joined #osdev
kfv has joined #osdev
zxrom has quit [Quit: Leaving]
kfv has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
kfv has joined #osdev
vinc has quit [Read error: Connection reset by peer]
dutch has quit [Ping timeout: 250 seconds]
Burgundy has quit [Ping timeout: 246 seconds]
vinc has joined #osdev
dutch has joined #osdev
ajunior has joined #osdev
elderK has quit [Quit: Connection closed for inactivity]
nj0rd has quit [Quit: WeeChat 4.0.1]
nj0rd has joined #osdev
gareppa has quit [Quit: WeeChat 3.8]
gareppa has joined #osdev
gareppa has quit [Client Quit]
gareppa has joined #osdev
kfv has quit [Remote host closed the connection]
netbsduser has quit [Remote host closed the connection]
netbsduser has joined #osdev
MiningMarsh has joined #osdev
stolen has joined #osdev
gog has quit [Quit: Konversation terminated!]
eck has quit [Ping timeout: 245 seconds]
netbsduser has quit [Remote host closed the connection]
netbsduser has joined #osdev
eck has joined #osdev
heat has joined #osdev
ajunior has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
vinc has quit [Read error: Connection reset by peer]
xenos1984 has quit [Read error: Connection reset by peer]
SGautam has joined #osdev
vinc has joined #osdev
ajunior has joined #osdev
ajunior has quit [Client Quit]
ajunior has joined #osdev
xenos1984 has joined #osdev
vinc has quit [Read error: Connection reset by peer]
vinc has joined #osdev
elastic_dog has quit [Ping timeout: 245 seconds]
CaCode has joined #osdev
elastic_dog has joined #osdev
ajunior has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
gog has joined #osdev
heat has quit [Ping timeout: 246 seconds]
goliath has quit [Quit: SIGSEGV]
<bslsk05> ​pastebin.com: void Console::PutCharExt(unsigned char c, int fore_color, int back_color){u - Pastebin.com
<SGautam> This is basically my PutChar logic, I seem to have trouble with some ncurses programs, where it appears to me that I am not supposed to wrap around (as it when X > width, X = 0, Y++), because when I dsiable the wrap around, it works as excpected, butt they do not send DECWAPM signal through CSI ? 7 h either.
<SGautam> Maybe something is wrong with my logic, then, I can't seem to figure it out.
<zid> butt.
<zid> my scotch bonnet noodles were hot, weird
alXsei has joined #osdev
alXsei has quit [Remote host closed the connection]
<gog> i just leveled up my sql
<gog> i understand everything now
<gog> (galaxy brain)
* psykose hands gog a SELECT FROM
<bslsk05> ​arstechnica.com: 8BitDo’s $100 wireless mechanical keyboard screams ’80s NES | Ars Technica
<Cindy> >wireless
kfv has joined #osdev
<sham1> gog: do you understand joins?
<Cindy> >keyboard
<Cindy> this screams security! :D
<Cindy> i'd like a bluetooth sniffer
<psykose> wish they banned wireless technology
<Cindy> sniffing my goddamn passwords and everything
zxrom has joined #osdev
joe9 has joined #osdev
<gog> sham1: i think so
<gog> i was able to chain a bunch of joins for a rather complicated query
<gog> and the output table was not total nonsense
<sham1> Bluetooth is encrypted
<gog> it was in fact sense
<gog> i already knew how to do this apparently
<gog> turns oout it's just venn diagrams in words
<zid> yus
<zid> now explain INNER vs OUTER
<zid> LEFT
<bslsk05> ​www.ionos.co.uk <no title>
<gog> inner returns only rows that match the join clause on both sides
gog has quit [Quit: Konversation terminated!]
gog has joined #osdev
<bslsk05> ​preview.redd.it: Reddit - Dive into anything
<gog> sorrty
<SGautam> holy shit what is this sequence ESC[22;0;0t
<zid> \e[22;0;0t
<SGautam> Every terminal program that doesn't work with my vt sends this
<zid> you're welcome
<SGautam> I don't handle this "t" attribute because I don't know what its supposed to do.
<sham1> What terminal are you emulating
<zid> set lines per physical page?
<sham1> Like VT220? Xterm?
<zid> But yea, ncurses won't send that sutff, if you don't advertise understanding it
<zid> DECSLPP is 't'
<bslsk05> ​terminalguide.namepad.de: Push Terminal Title — Terminal Guide
<zid> from VT330/420/510/520/525
<zid> aha that looks likely
<SGautam> sham1: I aimed to support VT100 but clearly most programs expect some sort of extensions.
<SGautam> GeDaMo: Ah, thanks, seems unrelated to my issue.
<zid> what are you reporting back to termcap?
<zid> vt100?
<bslsk05> ​terminalguide.namepad.de: Window operations [DISPATCH] — Terminal Guide
<zid> That's a nice website you've got there
<GeDaMo> Can't you just ignore any escape sequence you don't recognise?
<zid> better to negotiate with curses
<zid> else it might try to do "resize the window", which you don't understand, rather than moving the cursor and emulating it itself
<zid> and then it all going to shit
<zid> afaik it works like this: agetty gets told what the ttys are, and sets TERM before launching `login` then it ends up inheriting all the way down to you starting X and launching a real terminal, unless you have an export TERM=xterm-color or TERM=VT-100 etc to override it
<zid> so you either need to TERM=vt100 ./my-terminal-emulator or your terminal emulator needs to set TERM to something it actually understands
<zid> then ncurses will stick to vt100 codes
<zid> not xterm-color ones
Burgundy has joined #osdev
<zid> my TERM is xterm-256color, so any program launched that interfaces with ncurses, will get escape sequences for xterm
<zid> not a DEC terminal
<zid> (My serial consoles are vt100 though)
<sham1> On OpenBSD (I know, heresy) I've noticed that the default VTYs are vt220 which is interesting
<sham1> And of course there's xterm when you get to the graphical environment
<zid> I'm not actually sure where xterm-256color gets set in my env, maybe those numbered files
<sham1> What terminal do you use
<sham1> IIRC xterm-256color is often used as the "default" by many terminals
<zid> yea possibly it just got cleared somewhere
<zid> because it wasn't started through agettery
awita has joined #osdev
<zid> It was started as a service
<GeDaMo> From terminfo: xterm+titlestack|xterm 251 feature, rmcup=\E[23;0;0t, smcup=\E[22;0;0t,
<zid> yea my emulator defaults to xterm apparently, and I can't find xterm-256 in /etc, MYSTERY
<zid> TERM=vt100 sl > log.txt
<zid> TERM=xterm sl > log2.txt
<zid> md5sum log.txt
<zid> 9de327bd85e46d9fa19f3093746e8e93 log.txt
<zid> md5sum log2.txt
<zid> 8c7147b5bb8ebe9c4c2ea49b7db8dbac log2.txt
<zid> ncurses power
<zid> And is sort of the entire point of ncurses, it's easier to not use it and just spit VT codes, if you happen to remember them
<zid> but it's portable if you tell ncurses the *intent* and make *it* spit out the codes, for any terminal
gareppa has quit [Quit: WeeChat 3.8]
gareppa has joined #osdev
gareppa has quit [Client Quit]
gareppa has joined #osdev
RandomOSDev has joined #osdev
<RandomOSDev> hello
<GeDaMo> Hi RandomOSDev :)
<RandomOSDev> oh yay a other human being
<zid> cr0, yes, vt100, paging
<zid> lmk if any of it was correct
kfv has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<RandomOSDev> Does anyone know how to setup drivers on a meaty-skeleton type of OS? Just a simple explaination will do.
<zid> on a what
zxrom has quit [Ping timeout: 260 seconds]
kfv has joined #osdev
<RandomOSDev> A OS based on the meaty-skeleton tutorial
<zid> never heard of it sorry
<zid> I'd just do it myself anyway
<bslsk05> ​wiki.osdev.org: Meaty Skeleton - OSDev Wiki
<sham1> In the meaty skeleton, you just add code for the modules, you'd add it into the kernel sources obviously
<sham1> And not to the kernel libc
<zid> like, it's just code, add it? :P
<RandomOSDev> so for kernel drivers just use modules as drivers more or less
<zid> if you want modules
<sham1> Well a driver is just code you'd add there. And yeah, you don't need modules
<RandomOSDev> yeah I was planning on adding a filesystem driver and a upgrade to my CLI
<zid> Making a modular build system sounds like a pain in the arse, much less runtime modules, just to do something like print text or whatever
<zid> I'd leave it for a long ass time
<RandomOSDev> well it would mainly rely on already existing code for a FAT32 filesystem driver that I just have to rewrite to work with my current custom LibC
xenos1984 has quit [Ping timeout: 245 seconds]
RandomOSDev has left #osdev [#osdev]
xenos1984 has joined #osdev
kfv has quit [Quit: Textual IRC Client: www.textualapp.com]
Turn_Left has joined #osdev
Left_Turn has quit [Ping timeout: 245 seconds]
zxrom has joined #osdev
xenos1984 has quit [Ping timeout: 245 seconds]
vinc has quit [Read error: Connection reset by peer]
moberg has joined #osdev
brynet has quit [Ping timeout: 264 seconds]
xenos1984 has joined #osdev
brynet has joined #osdev
<kof123> been reading about https://en.wikipedia.org/wiki/Burroughs_Large_Systems No Assembly language or assembler; all system software written in an extended variety of ALGOL 60 named ESPOL. However, ESPOL had statements for each of the syllables in the architecture. | The B5000 was unusual at the time in that the architecture and instruction set were designed with the needs of software taken into consideration. This was
<kof123> a large departure from the computer system design of the time, where a processor and its instruction set would be designed and then handed over to the software people.
<kof123> they were..."devops-ing" software + hardware back in the 1960s, making them talk to eachother
vinc has joined #osdev
<kof123> somewhere said i believe those machines were arguably the first commercial/widespread smp-like stuff too
zxrom has quit [Ping timeout: 264 seconds]
<kof123> *software + hardware people/teams
<sham1> They were doing a lot of stuff in the 60s that we still recognise today: http://homepages.cs.ncl.ac.uk/brian.randell/NATO/nato1968.PDF
netbsduser has quit [Remote host closed the connection]
<sham1> > Software engineering: Report of a conference sponsored by the NATO Science Committee
netbsduser has joined #osdev
<Ermine> now we have asics/fpgas as purpose-specific hardware
<kof123> after linking that mix-c stuff the other day, there were a few other similar things for C "specialization" and/or run-time generation of specialized code. 2 of them were "tempo" and some "dyc" or "dync" thing...dyc which was not released it looks like, because tied to "multiflow" compiler. following that trail, leads to VLIW and itanium :D makes me think of asics/fpgas ... this "no assembly language" burroughs stuff as well. my un
<kof123> derstanding is you could program fpgas with specific instructions for whatever language
<kof123> *c-mix or mix-c i forget, one is an old dos compiler, the other does specialization
<kof123> well not even a language, if you know a particular application you can program/make hardware specialized for that
<kof123> *know a particular application is the main use,
Harriet has quit [Quit: WeeChat 4.0.2]
Harriet has joined #osdev
vinc has quit [Read error: Connection reset by peer]
andydude has joined #osdev
<kof123> or, there's surely other examples too, but write most of the system in a "high level language" before unix + c
<SGautam> How does a terminal handle a true type font? For instance, right now my terminal buffer is just an array of uint8_ts, I'm guessing to handle something like a TTF font you'd need all characters to be uint32_ts? Also I guess its practical for terminals to only support fixed-width fonts, correct?
<GeDaMo> I think you're confusing encoding (ASCII, UTF-8, etc.) with glyphs (font shapes)
netbsduser has quit [Remote host closed the connection]
<kof123> ^^^^ "font" seems to my like display. the "character set" (or utf, or encoding, or whatever term you want to use) i see as separate. there needs to be some way to look up/generate pictures/bitmaps/glyphs given some "character" but other than that, they seem independent to me.
<kof123> MVC
netbsduser has joined #osdev
<kof123> particularly, i think i have read font is a specific typeface/style, specific size, attributes (bold) etc. not nitpicking, just to get down to the details
<GeDaMo> Also, Unicode can be complex with double width codepoints and multiple codepoints representing a single glyph
<bslsk05> ​faultlore.com: Text Rendering Hates You - Faultlore
<bslsk05> ​lord.io: Text Editing Hates You Too – Lord.io
zxrom has joined #osdev
<psykose> is any kernel really complete without ITfLangBarItem support
<SGautam> Hmm, I think the correct approach for now would be to just try to get the ASCII 256 display then worry about unicode
netbsduser has quit [Ping timeout: 246 seconds]
heat has joined #osdev
<heat> hemlo
<SGautam> ASCII 256 characters being displayed as glyphs from TTF (as opposed to a raw font image which I do right now)
<SGautam> heat: hello
<heat> code points have nothing to do with TTF
<GeDaMo> How are you displaying the glyphs?
<heat> assuming you're doing unicode you need a uint32 to represent every codepoint there. then when you you re-draw cells you need to re-render those codepoints
<heat> the logic doesn't change for ASCII, you just need a uint8 instead
<Ermine> hi heat
<heat> hi Ermine
<psykose> hi heat
<heat> hi psykose
* psykose hands a flaming icecube to heat
<heat> new glibc release today
<Ermine> happens
<mjg> yay glibtz
<mjg> glibc reimplemented in rust when
<heat> would've switched already if glibc wasn't so god damn garbage statically linking
<mjg> yer garbage
<mjg> did you tell anyone you are using arch today
<heat> no, because im not
<heat> im using windows
<SGautam> GeDaMo: There's no TTF support yet, my text renderer is very simple, it reads a PNG file with pixel data, and creates a 256 items array each containing pixel data of rectangular blocks containing the ASCII character extracted from the PNG.
<psykose> imagine statically linking when you can have sex instead
<Ermine> heat: do you feel calmer that way?
<heat> yes i feel better this way
<SGautam> Using Windows makes me so much more calm tbh.
<GeDaMo> SGautam: are you writing directly to a framebuffer or using some graphics library?
<heat> chances of having sexual relations have increased by over 200%
<psykose> 200%*0 =
<SGautam> GeDaMo: Using OpenGL to render the pixel data as rects.
<SGautam> quads*, not rectsa.
<heat> solaris
vinc has joined #osdev
<bslsk05> ​playlist 'refterm' by Molly Rocket
heat has quit [Quit: Client closed]
<bslsk05> ​cmuratori/refterm - Reference monospace terminal renderer (57 forks/1419 stargazers/GPL-2.0)
heat has joined #osdev
<SGautam> oh wow this is perfect
<heat> fuck that guy
<sham1> > it is still straightforward to achieve reasonable frame rates and reasonable throughput by being sensible.
<sham1> > by being sensible
<sham1> A big ask
<psykose> just be sensible lol
<psykose> not enough fps? apply more chakras
<heat> wdym your terminal doesn't do 500GB/s????
<heat> fucking incompetent idiots
vdamewood has joined #osdev
<zid> Is that the "conhost is bad, let's do better" thing from reddit from a few months ago?
<heat> no, it's the "windows terminal is shit and everyone that works on it sucks, because it doesn't do 100000000GB/s like my SIMD-optimized D3D11-using terminal"
<GeDaMo> I think it was more about Windows terminal being bad but yes
<psykose> heat: pls be reasonable
<Ermine> windows terminal uses d3d11, no?
<zid> no?
<zid> cmd.exe hasn't been recompiled since windows xp
<heat> not cmd.exe, windows terminal
<Ermine> windows terminal != cmd.exe
<zid> that is windows' terminal
<psykose> zid moment
<bslsk05> ​microsoft/terminal - The new Windows Terminal and the original Windows console host, all in the same place! (7947 forks/89758 stargazers/MIT)
<zid> powershell is powershell, cmd is windows' terminal
<sham1> Windows Terminal can also be used with Powershell
<Ermine> powershell and cmd.exe are shells
<zid> wait, they called the new conhost terminal 'windows terminal'?
<sham1> And that makes Powershell bearable
<zid> This is worse than when Id released Doom
<zid> in 2016
<Ermine> powershell spins up my harddisk for some reason
<zid> cus it loads 3490 small filesprobably
<zid> like all windows software
<Ermine> It shouldn't load anything from that harddisk, it's not c:
ajunior has joined #osdev
<sham1> C:
<sham1> Meanwhile WSL2 is being annoying
<zid> wsl2 is always annoying yes
<zid> Ermine: gotta open D:\autoexec.inf
<zid> while it mounts /d/
varad has quit [Ping timeout: 250 seconds]
<sham1> WSL2 is annoying, yes, but the fact that Debian isn't even getting up is just irritating
<Ermine> Your another option is running linux natively
<sham1> And I do
<heat> mechanical drives on 2023 windows is a big LUL
vinc has quit [Read error: Connection reset by peer]
<sham1> Also it's August. Time to enroll on courses... ugh
<Ermine> It's windows fault to be slow on mechanical drivers
<Ermine> That said, Arch boots equally slowly
<heat> sure it is
<heat> but if arch boots equally as slow, your hdd may be dying
<heat> back when I booted on a mechanical hard drive, booting windows 10 would take me an hour, booting arch would take me maybe 1 minute
<Ermine> Then my hdd must be dying for 2 years or more
<psykose> an hour sounds extreme
<heat> yeah i hated computing back then
<heat> popped a SATA SSD in, works like a charm
<heat> 10 sec boot time in linux, 1 min on windows
<heat> windows has become very very hostile to mechanical drives
<Ermine> Win7 booted in 15 mins on my IDE HDD back then
<psykose> i wouldn't say it's not hostile to ssds either lol
<psykose> half the time you press anything the ssd disk io is 100%
<heat> works fine for me, 0% usually
<psykose> don't know how they manage to make 'install software msi' be slow as shit and like 10mb/s with 100% io use
<Ermine> heat: do you mean it took 1 hour to get to desktop or did it become useable only in 1 hour?
<zid> psykose: same, I assume it does a fuck load of checksumming and restore point and registry hive nonsense
<heat> Ermine: usable
<Ermine> ah ok
<psykose> zid: yeah prolly
<zid> heat: yea my mother's laptop had W10 on it, took ~5 mins to boot, takes 15 seconds after I put W7 on it
<zid> and doesn't run out of ram immediately either
<Ermine> zid: also windows defender feels like it has to check every file after boot
<zid> I have that mostly neutered now on my own w10 install at least
<Ermine> I think I want nvme ssd in the future
<zid> my sata one was fine, but it was an pro
<psykose> nvme ssds are great
<psykose> it's not gonna make some magic super big difference in windows though
<zid> so it could max the iops sata could handle
<sham1> Superconductor SSDs
<zid> cheap sata ssd that can do shitty iops still probably noticeable
<Ermine> shouldn't gamez load faster?
<zid> not really
<psykose> yeah they do
<zid> The part where you're waiting for data is a miniscule part of it
<psykose> but.. it's one of those things you don't notice much
<zid> like, battlefield 2's levels are 50MB or whatever
<zid> on a machine 10x as powerful as we had back then, on an nvme, it still takes basically as long to load into a map
<Ermine> Ah, so rendering stuff takes most of the time?
<zid> 2 seconds to load the shit into memory turning into 0.1 seconds doesn't matter when it spends 30 minutes calculating lighting and shit
<zid> and making DISPLAY GRAPHS using BOOST
<psykose> the difference between any-hdd and cheap-sata-ssd is turning minutes into seconds
<psykose> the difference between that and fastest-nvme-drive is seconds into seconds
<psykose> much like boot times, anything below 45 is like not relevant
<Ermine> Also possibility to debug nvme stuff
<psykose> best part of nvme is when you do a ton of io stuff that hits the disk where overall you'll save like 20+% time in a workload.... where you weren't going to use tmpfs anyway
<zid> yea, iops is where you're really competing, but your average desktop isn't going to care
<zid> once you get to "pro sata" levels of iops
<zid> there's a reason optanes were server not consumer
<psykose> yep
<psykose> quite good at that too
<Ermine> Thanks for this info
<Ermine> When I was building a pc for granny I've chosen nvme+hdd
<psykose> depending on where you are that's perfectly fine
<Ermine> Since it was granny's employer who paid for this, I don't regret
<psykose> a lot of the nvme pricing can be.. really close to a sata ssd anyway
<zid> yea I have two mechs, and an nvme
<zid> it was two mechs and aan sata ssd, but it went bang
<zid> so I got an nvme to replace it cus it was cheaper
<Ermine> I think it was a bit more expensive than sata ssd of the same vendor and size
<zid> random gigabyte nvme has better specs than a pro level sata ssd used to have
<zid> for half the price
<zid> (I have an 860 PRO spare now though, I got it back from RMA)
<zid> I should ebay it
<Ermine> What I regret is the poor choice of case, which has less usb ports on front than motherboard allowed
<psykose> front usb is awkward
<psykose> the connectors to them on every motherboard suck ass
<zid> I've never used front usb
<zid> I just face the PC backwards and use the rear as the front
<psykose> heh
<zid> like, why not?
<psykose> yeah honestly that sounds nice
<psykose> only downside is if it's a below-desk thing and it's truly towards you the monitor cables do a backward curve
<zid> idgaf about AESTHETICS
<psykose> sideways would still be fine tho
<GeDaMo> But how do you access your floppy disks? :P
<zid> all my drives are hanging from the cables
<psykose> usb floppy adapter
<zid> in 3D space
<zid> so it's the same if it's facing forwards or backwards
<Ermine> wasn't floppy driver removed from linux?
<psykose> dont think so
<zid> I remember something or other
<zid> but if you have a real floppy drive, you don't wanna run linux 6 anyway
<zid> so who cares
<Ermine> Yeah, reasoning was that it was poorly tested by that time
<zid> You *really* don't wanna use i/o ports for anything serious, shit's slooow
<zid> lock your whole machine up for a millisecond each time :P
<zid> I miss windows 95, opening My Computer would just freeze whole PC for 8 seconds
<Ermine> My understanding is that whether you use io ports or memory mapped io is hardware interface and you cannot do anything to it
<Ermine> am i wrong?
Matt|home has joined #osdev
<zid> can I get that with a verb
<gog> hi
<Ermine> hi gog, may I pet you
<gog> yes
* Ermine pets gog
<gog> so i fyou have a choice, let's say ATA
<gog> you can use PIO mode
* psykose hands gog a fish v2
<gog> or DMA mode
* gog fishy fishy
* gog prr
<psykose> :3c
<gog> it's preferable to use DMA mode
<gog> obviously
<Ermine> One can enable dma in device properties in win95
<gog> because then the CPU doesn't have to do the work of rep stos
<gog> yes
vinc has joined #osdev
<zid> I'm not sure there are any floppy drives that are on anything but the LPC, unless they're a modern usb one using basically an lpc over usb convertor
<gog> because PCI ATA controllers are standardized more or less
<Ermine> but you start dma by writing stuff into some port
<gog> sometimes7
<zid> Sometimes
<gog> jinx you owe me a coke
<Ermine> Win95 could fit into 8Mb of RAM, right?
<gog> yeh
<gog> last time i used it was on a system with 32 and it ran fine
<Ermine> I wonder if it is possible to write some decent os now and fit into this amount of ram
<zid> Mine does
<zid> but it also does nothing
<zid> it SIGNIFICANTLY fits into 8MB even
<Ermine> Or does it mean giving up on all modern hardware
<zid> problem with trying to keep shit small is just.. people expect more
<zid> if it doesn't WEBSCALE then it's BROKEN
<zid> so now your dumb array you were linearly searching cus it was only ever going to have 4 things in it
<zid> now has to be a B-tree
<zid> with all the code and allocations that entails
<Ermine> Tiny core linux requires more than 8mb
<gog> hi
<Ermine> hi again gog
<psykose> b-tree is 4 losers
<psykose> a+-tree is where it at
<gog> i like t-tree i think it smells nice
<zid> Dw though, it's only 800% slower now that it's a B-tree with 4 things it
<Ermine> I prefer orange trees
<zid> because you're not actually a weird server with 40PB of ram
* psykose hands zid a hefty bottle of 99.9% purity copium
<zid> why am I the copium
<heat> Ermine: understanding is that whether you use io ports or memory mapped io is hardware interface and you cannot do anything to it <-- you're correct
<zid> can you parse that for me heat
<zid> I failed
<heat> he was asking if you as the kernel have a choice between IO ports or MMIO access for whatever given hardware
<heat> or if it's part of the hardware's interface
<zid> no I need you to diagram the sentence
<heat> sorry, i'm not GNU plot
<psykose> zid -> ports -> io -> copium interface
<heat> btw btrees are not necessarily going to be slower
<heat> will probably be around the same speed as an array
<sham1> O(logn) behaviour
<sham1> Absolutely disgusting
<heat> it depends on the tree's order of course
<zid> heat: with 4 things, the array will 10000% be faster.
<heat> binary trees suck ass
<heat> no
<zid> yes
<heat> b-tree != binary tree
<heat> i can have a b-tree with order 4 and then you'll just have a single node with 4 entries
<zid> actually wrong, but doesn't matter
<Ermine> wat
<zid> and evne that, heat, is slower
<heat> not really
<zid> Yes really
<psykose> when slower, be faster
<heat> musl stringop tips?
<heat> wait, no, when slower, promise vague ideas of fastness while not implementing the obvious solution
<heat> there we go, musl stringops!
<Ermine> Oh shit here we go again
<gog> hi
<Ermine> hi again gog
<heat> all you had to do, was follow the damn train cj
<gog> can you pet me
* Ermine pets gog
* gog prr
<gog> i don't feel good
GeDaMo has quit [Quit: That's it, you people have stood in my way long enough! I'm going to clown college!]
<heat> why?
<Ermine> what happened
<gog> nothing really
* heat hug
* gog hug
<gog> i have a mystery health problem and it's bothering me again
<gog> so here we go with another round of doctor appointments that don't get me answers
<zid> just the one?
<gog> i have one in particular that's distressing and limits me
<Ermine> that sucks
<gog> i'm getting to the bottom of it this time
* kazinsal pets gog
* gog prr
* heat grog hug
<bslsk05> ​www.google.com: Error 403 (Forbidden)!!1
<gog> thanks
<sham1> That's forbidden
<psykose> heat: best characterised as "infinite circlejerk discussion"
<psykose> what year do you think c23 will make it in
<psykose> 2029?
<psykose> we could achieve 100% carbon-free energy in europe by just hooking up a generator to the musl ML
<sham1> 2024, for the irony
<zid> I hear msvc supports C99 now
<gog> i support c23 because she deserves it
heat has quit [Quit: Client closed]
<Ermine> Is musl ml that active
<psykose> nah
FreeFull has joined #osdev
<Ermine> wdym then
heat has joined #osdev
FreeFull has quit [Client Quit]
FreeFull has joined #osdev
<heat> 2029 will be the year of the mallocng that doesn't suck with multithreaded programs
<heat> mallocngng
vdamewood has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<psykose> that will never happen
<Ermine> mimalloc was mentioned
<gog> don't allocate memory
<sham1> Only allocate static buffers
* sham1 nods
danilogondolfo has quit [Quit: Leaving]
<heat> char heap[10000000000]; void *malloc(int bytes) { static char *p = heap; char *ret = p; p += bytes; return ret; }
<heat> do you need anything else? i don't think so
<sham1> That may not be properly aligned
<heat> boohoo
<heat> cry idiot
<heat> alignment isn't real
<sham1> Go to spec jail!
<heat> ""Alignment"" is a concept made up by the NWO
<psykose> i miss old heat
<psykose> old heat was more fluffy cat picture
<psykose> new heat is meanie
<heat> i am a fluffy cat picture
<sham1> Purrito
<Ermine> Not really fluffy
<heat> psykose when are u writing an operating system
<psykose> right after i can get past hello world
<heat> ok then do itttt i wanna debug triple faults!!!
<psykose> r u thinking i would be so noob i would post my faults here
<sham1> yes
<heat> you would obviously post them on the osdev discord
<psykose> never joined that shit
<heat> aka Hell Itself
<psykose> mint cannot convince me
<gog> i can't write hello world
<gog> i'm not really a programmer
<heat> yes, you can only write henlo worrd
<gog> i've been stitching together stackoverflow code this whole time
<heat> gog have you been our vampire all along?
<heat> oh you!
<gog> no
<gog> i'm very good at stitching the code
<gog> and can often solve problems with it myself
<psykose> loving grandma style
<heat> damn shots fired
hrberg has quit [Quit: https://quassel-irc.org - Chat comfortably. Anywhere.]
<psykose> heat: more seriously idk, i want to one day
<psykose> it's a lotta work
stolen has quit [Quit: Connection closed for inactivity]
<heat> depends on how seriously you take it
* Ermine is reading __MUSL__ discussion
<psykose> i can barely get out of bed
<heat> it's not that hard if you half-ass it
gareppa has quit [Quit: WeeChat 3.8]
<heat> Ermine: being pragmatic is lava
<psykose> i wouldn't call the macro very pragmati
<psykose> c
<psykose> all the suggested usecases are ass
<Ermine> heat: being pragmatic == add this macro?
<heat> yes
<heat> just the idea of not requiring fucking runtime tests to test if a feature is there would be much appreciated
<Ermine> Why runtime test? Why not build-time test?
<psykose> macros don't really let you do that tho
<heat> 1) build-time tests are not available to everyone (not everyone uses autoconf!) 2) runtime tests catch certain behavior
<Ermine> Ah, because build-time does not work with cross-compilation
<heat> no, runtime testing doesn't work with cross, build time does
<Ermine> You don't have to use autoconf for build-time tests
<psykose> build-time tests and autoconf are wholly unrelated
netbsduser has joined #osdev
<heat> right, so you have to handroll a bunch of logic for your own Makefile or whatever to do CC tests
<psykose> pretty much every build system lets you do that without "handroll a bunch of logic"
<psykose> ok, good point, gn doesn't
<heat> gn!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<heat> but make doesn't either
<Ermine> gn?
<psykose> make isn't a build system
<heat> hot ass take
<psykose> it's a piece of shit people insist on using, but build system it is not
<sham1> What is make then
<heat> oh man
<kazinsal> make is a series of byzantine footguns that let you construct build systems
<heat> you're going to have some haters here in a bit
<Griwes> that sure is a statement to see right after taking a look at the channel
<Ermine> use meson duh
<Ermine> or muon
<psykose> heat: i know you love me
<kazinsal> similarly, C is a language that lets you create byzantine footguns
<heat> Ermine: gn is google's build system for chromium/v8/fuchsia
<kazinsal> on a related note, I love C and make
<Griwes> noone should be directly writing make, but it's still a build system lol
<heat> psykose: 1) i definitely love you 2) i agree
<sham1> Again, if make is not a build system, what is it
* Ermine crosses himselves
<Griwes> (statements uttered moments before pub brawls)
<heat> criticizing make in this channel: 1) criticize make 2) make people say make is great and works wonderfully 3) BSD people pop in and say GNU make sucks ass and BSD make is the best shit ever 4) you say you've never used BSD make (and probably never will)
<psykose> bsd make default pretty output is better than gnu make
<Ermine> I'm 100% sure this stuff is tied to google way of doing ways which absolutely suits everyone's use case
<psykose> we love the eye candy yes
<psykose> heat: marriage when
<heat> now
<heat> gog marry us
<psykose> gog where
<kazinsal> one of the best (or worst) makefiles I've ever written was really like, 98% sh
<sham1> But yes, gmake does suck
<kazinsal> just this enormous pile of @-prefixed lines to do horrible things
<heat> Ermine: gn is pretty nifty and versatile but it's also horrendously laborious
<gog> no
<psykose> >:(
<heat> as you need hundreds of lines of gn boilerplate just to make the thing work
<Ermine> expectable
<gog> my makefiles are lovingly crafted because it took me forever to learn how to do them correctly
<gog> and i care about them
<gog> and i'm afraid to change them
<heat> also has the funny restriction that they *really* don't like you to execute out of tree things, execute things at gn gen time, etc
<Ermine> it is versatile, yet it cannot into runtime tests?
<heat> oh, it can
<heat> but they'll shoot if you ever try to push that to //build
<sham1> Are runtime tests webscale?
<gog> yes
<sham1> Anyway, clearly the best build system is maven
<heat> the important thing is that runtime tests do not work when cross compiling
<heat> so shit like autoconf assumes the worst out of your system, usually
<heat> python can't even cross compile without hand-holding it a bunch of autoconf vars
<psykose> that's just a fundamental cross limitation
<psykose> there's no actual solution to it, the autoconf one is 'hardcode a bunch of target triple assumptions based on the glob match'
<sham1> People get thought terminating clichés when they see XML, but it's just better than most other formats on account of not being ad-hoc
<psykose> lifting that one layer towards yourself to put #ifdef __RANDOMSHIT__ based on target isn't any improvement
<psykose> it's just your own handholding and similarly broken
<heat> idk, i find it cleaner to know "this is library X version Y.Z" vs having to, idk, grep that shit out of ldd or strings /usr/lib/libc.so
<psykose> by mechanism it's cleaner yes
<psykose> but the data itself is mostly not useful
<Ermine> You don't test for version
<Ermine> You test properties
<heat> if you know version X only has those properties you don't need test for those
andydude has quit [Quit: Leaving.]
andydude has joined #osdev
<heat> software has releases and features and bug fixes
<heat> i don't test for TLS every time I open up chrome
<psykose> that's runtime not build time
<psykose> which is even more useless from a macro perspective
<psykose> shrug
<Ermine> Then test for TLS
<Ermine> Then again, the problem is that TLS build time test won't be accepted upstream, do I understand correctly?
<heat> for chrome? probably
<psykose> do you mean tls the thread storage or tls the encryption
<sham1> Is TLS here Transport Layer Security or Thread Local State
<Ermine> second one I think
<sham1> I like how we thought of the same thing
<heat> no i meant transport layer security
<psykose> what's there to even test for that
<psykose> that's like not libc related at all
<Ermine> transport layer security is outside of scope of libc
<heat> it was just an example for "shit has features and normal people don't test if things are there after a certain version, you just Have It"
<psykose> well yeah
<psykose> it's one of those things you don't test at all
<Ermine> Or are there __OPENSSL__ / __LIBRESSL__ / __WHATEVERSSL__ macros?
<psykose> there are
<sham1> No, because those break C standard
<heat> WG14 is going to whoop their asses
<psykose> (they have no double underscore)
<sham1> Even a single underscore is reserved on the global scope
<sham1> WG14 will be very angry unless this clarification is made
<sham1> Can't just go around promoting incorrect C. Tis malpractice
<heat> i've just remembered how horrendous the openssl build system is
<heat> holy crap
<heat> i regret opening up that repo agin
<sham1> s/build system /
<heat> it's written in *PERL*
<heat> openssl is fine
<sham1> OpenSSL is a convoluted mess
<heat> BoringSSL is not really usable as a system SSL, LibreSSL is "security" through lack-of-use
<heat> all in all I prefer OpenSSL's convoluted mess
<psykose> it's the only one with a stable abi lol
<sham1> Gnutls
<heat> >Gnu
<heat> noooooooo
* Ermine crosses himself
<psykose> did gnutls have a libcrypto or was it just tls
<heat> hold on there jesus
<sham1> Anyway, OpenSSL certainly isn't [the worst API](https://caseymuratori.com/blog_0025) but it's convoluted
<bslsk05> ​caseymuratori.com: The Worst API Ever Made
<zid> openssl has fun bugs like "We disable strict aliasing", why is that a bug? Because the reason they disabled it is that it stops their code crashing because they're doing C badly wrong.
<zid> their source code is a fucking fever dream
<zid> it breaks every time gcc changes a default, naturally
<sham1> My heart is bleeding
<psykose> a large amount of C projects have -fno-strict-aliasing in default flags
<Ermine> I could talk about bearssl, but there's no tls 1.3 and author went on another things
<sham1> And I don't know why
<zid> a tiny amount*
<psykose> no, it's pretty big
<psykose> some distros even default flag that
<sham1> Ew
<psykose> which makes sense as it's a nonsensical part of c
dude12312414 has joined #osdev
<zid> Literally don't believe you
<heat> strict aliasing makes sense
<sham1> There are proper ways to alias things, gottverdamnt
<zid> also it being nonsensical is a total lie
<Ermine> oh fuck
<zid> It's trivial and obvious why it exists and how it works
<Ermine> Three discussions in row and none of them reached consensus
<sham1> I like to give gog fishy
<sham1> Fishy is good
<psykose> i like to give heat fishy
<heat> consensus is boring
<heat> hey i don't like fish sorry
<heat> i do not have cat vibes
<sham1> >:C
<heat> 🐱
* gog chomp fishy
<gog> speaking of cat vibes
<sham1> <C:
<nortti> heat: is cat vibes when the cat is purring?
<heat> yes
<sham1> Cat vibes for a successful caturday
<bslsk05> ​www.etsy.com: Circatboard Dress Cat Circuitboard Dress Sleeveless Black - Etsy.de
<Ermine> heat: lack of consensus is confusing
<heat> gog: hey that's cool
<gog> i can't wait it's the most excited i've been for a dress in a long time lol
<heat> Ermine: why?
<heat> lack of consensus usually means you can't express your opinion :v
<sham1> Ah yes, we usually agree on things here so often usually
<heat> sorry
<heat> s/lack of//
<Ermine> Everybody appears to have a point so idk who's right
<heat> everyone has a point and the truth lies somewhere in the middle
<zid> I am too toxically masculine to wear that dress
<psykose> poor ermine
<heat> sham1: that's not the worst API
<psykose> lost in the sauce of truth
<mjg> the truth always lies at 3/4th
<heat> i can certainly think of 10 worse APIs in linux
<Ermine> So someone will someday find that point in the middle and we'll have a good libc?
<psykose> good libcs don't exist
<heat> none of this was about libcs though?
<heat> except the __MUSL__ thing, but that's not strictly a libc thing
<zid> openssllibc
<Ermine> It's not the only point of argument in musl right?
<heat> of course not
<zid> I'd love to see a libc with the code quality of openss- wait we already have musl
SGautam has quit [Quit: Connection closed for inactivity]
<zid> heat post that fucking insane getaddrinfo thing again
<zid> or whatever that crazy shit was
<heat> __MUSL__, comments, error messages, ifunc, SIMD, string ops functions being too small or too big, malloc sucking by default
<heat> C23 patches
<psykose> ifunc is mostly just cringe
<heat> why cringe?
<bslsk05> ​github.com: musl/src/network/dns_parse.c at master · heatd/musl · GitHub
<zid> yessss
<zid> musssl
<zid> good job they made it CHECKABLE
<zid> it'd have been awful otherwise
<psykose> the glibc equivalent is probably behind 9 source files and 4 sysdep includes
<zid> but have variable names
<zid> so it's swings and roundabouts
<psykose> i don't even know how to code and i can read the variables fine
<psykose> u mite need sum glasses xD
<psykose> heat: mostly the api part of it, detection for libc is fine
<zid> Are you always an abusive troll, or is it just today?
<zid> like, when should I unignore you?
<psykose> is that what i am
<zid> never it is then
<heat> psykose: what API?
<heat> it's just reloc magic
<psykose> the part it's usable for any program
<heat> i think it should be usable for any program
<heat> you can argue that it's a bit error prone atm
<psykose> hmm
<heat> which it is, and maybe improvements could've been made to supply default functions before attempting to do the detection
<heat> I was reading about it the other day, the way they want you to relocate things is 1) relocate everything that's not an ifunc reference 2) resolve ifunc references and relocate those
<heat> which I assume means that e.g memcpy() points to jack shit when running ifunc resolution calls
<mjg> memcpy points to the resolver
<mjg> to memcpy
<heat> sure, if you make it, I guess
<heat> and that could work
<sham1> heat: I dunno, I suppose there are technically worse APIs out there than ETW, but ETW is pretty awful from the description
Matt|home has quit [Ping timeout: 240 seconds]
<bslsk05> ​'"What UNIX Cost Us" - Benno Rice (LCA 2020)' by linux.conf.au (00:34:14)
<heat> look at this beauty
<heat> https://i.imgur.com/bDGAOn3.png bye losers, im invincible now
<bslsk05> ​i.imgur.com <no title>
psykose has left #osdev [#osdev]
<Ermine> not going to open benno rice video
<mjg> :DD
<heat> :( benno is cool
<mjg> you salty bro
<zid> If you want to read more about benno, he's a pivotal character in Honzuki
dude12312414 has quit [Remote host closed the connection]
ajunior has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
ajunior has joined #osdev
[itchyjunk] has joined #osdev
hirigaray has joined #osdev
awita has quit [Remote host closed the connection]
vinc has quit [Read error: Connection reset by peer]
Turn_Left has quit [Read error: Connection reset by peer]
andydude has quit [Quit: Leaving.]
mavhq has quit [Ping timeout: 244 seconds]
nyah has quit [Ping timeout: 246 seconds]
m5zs7k has quit [Quit: m5zs7k]
Burgundy has quit [Ping timeout: 250 seconds]
mavhq has joined #osdev
nvmd has quit [Quit: WeeChat 3.8]
FreeFull has quit []