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
beit747 has joined #osdev
elastic_dog has quit [Ping timeout: 268 seconds]
tsraoien has quit [Ping timeout: 240 seconds]
<beit747> I am working on writing a kernel in c. I have successfully booted into the kernel and everything works fine. I have a print function and an itoa function that converts ints to chars. My problem is that when trying to create a grid I get the wrong data. I'm just trying to print a 5x5 matrix using array[5][5]. When I print either of the two ( one is chars other is ints converted to char ) I get wrong data.
<beit747> Can someone help me? I have pasted the kernel code along with the working code at the bottom of this paste: https://bpa.st/TBNQ
<bslsk05> ​bpa.st: View paste TBNQ
<zid> ooh cute
<zid> f is not initialized
<zid> your compiler will tell you as much
<zid> so I'm not sure how it 'works' :P
elastic_dog has joined #osdev
<beit747> smart compiler I presume
<zid> That's not how compilers work, if you do UB they aggressively make your code wronger on purpose for speeed :p
<zid> Are you going to be here in 5 minutes if I clean this up
<beit747> other than the semantics can you explain why arrray[5][5] cannot be populated correctly in my for loops within the kernel code?
<beit747> yes
<zid> I've already spotted several ways in which it very definitely doesn't even compile
<beit747> ill be here
<beit747> nevermind the 'working code' part it is the kernel part I need help with
<zid> *ptr++ = "zyxwvutsrqponmlkjihgfedcba9876543210123456789abcdefghijklmnopqrstuvwxyz"[35 + value % base];
<zid> what's the 35+ for?
<zid> oh god, you're indexing from the *center* in case it's negative?
<clever> zid: i'm guessing its an ascii code
<clever> or that
<beit747> Not exactly sure but it was directly pasted from osdev website
<zid> *fixes*
<zid> This is garbage and hard to read so it's literally easier for me to just rewrite it not to suck
<clever> yeah
<beit747> I apologize, but I am VERY new to this type of thing
<beit747> just trying to piece things together
<zid> This is just "I don't program much", rather than anything osdev related ngl
<zid> if you can't do it with an OS you can't do it without one
<beit747> well, I have written most of it using printf and it 'displays' properly, the inner workings are unknown to me but it will come with great help and support from people like youu
<zid> functions don't end in semicolons, fixed this a few times in here
<beit747> my question is why am I able to create a matrix of 5x5 and print the index properly using libc but it looks like the indexes dont even get populated correcttly in the kernel code
<zid> not far from done
<beit747> ok
Vercas has quit [Remote host closed the connection]
Vercas has joined #osdev
<bslsk05> ​gist.github.com: beit.c · GitHub
<zid> compile that one for me, with -O2 -W -Wall
<zid> at least
<zid> I think I murdered print's offset actually whoops
<beit747> main.c:78:6: error: conflicting types for 'print'
<zid> ah yea
<zid> refresh the gist
<zid> and now we get to the actual reason why it doesn't do what you probably expect it to be doing, the only value you ever assign to any element of layout2 is 'str'
<beit747> in vim I am getting ( on line 72 ) "Cannot assign to variable 'layoutt2' with const-qualified type 'const char [3][3]'
<zid> ah yea remove the const on line 7, *updates gist*
<zid> oh you're derefing the itoa nevermind that
<zid> I thought you were doing it on layout not layout2, got confused by the similar names
<beit747> it seems to compile correct, and load the kernel with just a black screen. I do not get anything printed though.
<zid> I expect this to at least do something
Vercas has quit [Remote host closed the connection]
<zid> looks like either I broke something, neato
Vercas has joined #osdev
<zid> I'm surprised it doesn't fill the screen with K and then die
<zid> because I forgot an s++
<zid> updated line 58 to *s++;
<beit747> compile window seems to have no errors or warnings but qemu is going crazy..
<zid> neat, where's it at?
<zid> but god knows what the compiler generated, because I spotted some nasty UB
<zid> you're writing outside of layout2 quite severely
<beit747> not exactly sure it just keeps printing my assembly MSG "successfully switched into 32-bit protected mode" and blinks with some other random stuff and back to the message. so it cannot load the kernel.
<zid> -no-reboot -no-shutdown ?
<zid> it's probably crashing
<beit747> yeah
<zid> anyway
<klange> Love a good triple fault in the morning. Really gets me going for the day.
<zid> for (int i = 0; i <= 5; i++ ){ for (int j = 0; j < 5; j++ ){ layout2[i][j] = ...
<zid> static const char *layout[3][3] = {
<zid> 6x5 != 3x3
<beit747> when I placed the char *layout[3][3] = { 1,2,3 }, {etc}; inside of the grid function it did the same thing
Vercas has quit [Remote host closed the connection]
Vercas has joined #osdev
<zid> https://gist.github.com/zid/ee3cd10d06ecb5b975b200740add7a0d That one at least compiles cleanly
<zid> color changed to char from int so that you can't accidentally pass invalid color values, and it stops trying to write to memory outside of the bounds of its array
<beit747> I actually had an array of [5][5] before but didnt update it.. originally it is suposto be [25][80] to account for each row and character on a line
<zid> It's simple enough code that you could probably just single-step this
<beit747> I just want to place each memory address into a matrix so I can print on screen using the array[index][index]
<zid> at least after the clear_screen
<beit747> well I changed the for ( int i=0; i<=5; i++ ) to i<3 but still cant load kernel
<zid> what's "can't load kernel" mean?
<zid> your bootloader gives an error message? qemu gives an error message?
<beit747> it means when I cannot execute this: m -rf rm -rf *.bin *.o
<beit747> /usr/local/i386elfgcc/bin/i386-elf-ld -Ttext 0x7e00 -o kernel.bin kernel.o --oformat binary -m elf_i386 -e main
<beit747> gcc --target=i386-jos-elf -ffreestanding -c main.c -o kernel.o
<beit747> #gcc -fno-lto -fno-pie -ffreestanding -c main.c -o kernel.o -m32
<beit747> #ld --nmagic --discard-all --strip-all -o kernel.bin -Ttext 0x7e00 kernel.o -m elf_i386 --oformat binary -e k_main
<beit747> nasm boot.asm -f bin -o boot.bin
<beit747> cat boot.bin kernel.bin > os_image.bin
<beit747> truncate os_image.bin -s 10240
<beit747> qemu-system-x86_64 os_image.bin
<zid> gist that next time please :(
<beit747> sorry
<zid> why can it "not execute it"
<zid> and what is the 'it'
<clever> beit747: i think you need -kernel
<beit747> it works but loads qemu with a line in my assembly saying switched to protected mode. the kernel will not load tthe c code will not run properly so it just stays trying to load that address -Ttext 0x7e00 but cannot
<zid> You're not being very helpful
<beit747> sorry, as I said Im new please bare with me
<zid> You just keep saying "it" over and over, and "won't"
<zid> "I ran qemu os_image.bin, I see the bootloader code I wrote running as usual, but then cheese comes out of my cd-rom drive"
<zid> ^ try something like that
<beit747> it being your code wont being wont run properly.
<zid> yes but I can't see it
<zid> nor have I *ever* seen it
<zid> so you saying "it says it can't load kernel" means *nothing*, because I don't know what the "it" is, or what the error message even looks like to guess if it came from qemu, your shell, space aliens, some code I haven't seen, some code I have seen, etc
<Mutabah> That `truncate` seems risky - what if the input image is larger?
<zid> I mean, this is totally not how you do any of this, tbh :p
<Mutabah> ^
<Mutabah> My usual suggestion is to use multiboot - qemu has built-in support for it via `-kernel`
<Mutabah> (it might not be the most feature-complete support, but it's present)
<zid> I have a makefile that spits out a cd-rom image with grub on it, bit more universal
<zid> it only needs a `grub.conf`, a `stage2_eltorito` file and mkisofs, then you can just -cdrom boot.iso it, the same as you would -kernel it
<zid> and you get bonuses like being able to use grub :p
<beit747> this line keeps being printed over and over when I compile and run in qemu MSG_PROT_MODE db here is the paste of the asm: https://l.perl.bot/p/z3wog7
<bslsk05> ​l.perl.bot: Perlbot Pastebin
<klange> ... you're manually building a grub ISO? Grub comes with tools for that...
<clever> zid: and you have a filesystem, so the kernel can read other files!
<zid> klange: so does mkisofs
<clever> el torito!
<beit747> I am not using grub I have my own boot code
<bslsk05> ​github.com: bootstrap/Makefile at master · zid/bootstrap · GitHub
<zid> doesn't even need grub installed, the el_torito file is in the repo
<klange> Grub _calls mkisofs_ (or rather it calls `xorriso -as mkisofs`)
<klange> You commited a binary?!?
<beit747> the point of this project is NOT to use anything
<zid> Given the project spits out a binary iso regardless, yes, yes I did
<zid> I'm not shipping grub's source tree and a compiler for it
<klange> But you don't commit the ISO...
<zid> grub doesn't even build anymore :P
<zid> you have to use an old version of gcc and build it with archaic specs like no-PIE
<zid> beit747: yea we're just having a chat
<klange> You don't appear to be shipping mkisofs.
<klange> So what's different about it then expecting the grub tools?
<zid> beit747: your bootloader seems to assume that k_main will end up at exactly 7e00, how are you enforcing this?
<klange> You boggle my mind, zid.
<zid> grub isn't installable
<zid> on a modern machine
<zid> grub2 is
<beit747> zid: usr/local/i386elfgcc/bin/i386-elf-ld -Ttext 0x7e00 -o kernel.bin kernel.o --oformat binary -m elf_i386 -e main
<zid> That puts the *code* there
<klange> When I say grub I obviously mean the current version of grub and not the decade+ old one.
<zid> it does not put k_main there
<zid> You'll need a special linker script if you want to ensure k_main ends up first
<klange> If you're using GRUB Legacy / 0.97, I am _even more boggled_.
<zid> klange: yea, this is 0.97, it's just a tiny MBR virus I can use to boot ELFs
<zid> it is apparently 123KB according to github, I should go make a custom build in a time machine that only knows multiboot
<klange> My BIOS loader is 25K.
<klange> If you want something smaller that does multiboot.
<zid> does it support modules?
<klange> Yes. How many do you want? I retooled it to only do one for a ramdisk, but the old version loaded a dozen.
<beit747> zid: doesnt the -Ttext 0x7e00 say -e k_main will be at that loocation then I jump to it from the bootloader?
<gog> no
<zid> no it says in the ELF (which you don't make) set the e->e_entry field to "k_main"
<zid> and that the address the code expects to run from is 7e00
<gog> ^
<zid> k_main could be literally anywhere within your .text section (which you don't make, and instead dump to a flat binary, losing the ELF header containing the e_entry field in the process)
<zid> klange: Just the one is what I use, I have a bootstrap that sets up a 64bit env for my module kernel
pretty_dumm_guy has quit [Quit: WeeChat 3.5]
<clever> that and more, is why i prefer to link to .elf, then objcopy to .bin
<zid> kernel /boot.bin; module /kernel.bin
<clever> and use a linker script to set the addresses
<beit747> zid: this one makes an elf rright? ld --nmagic --discard-all --strip-all -o kernel.bin -Ttext 0x7e00 kernel.o -m elf_i386 --oformat binary -e k_main
<zid> no, --oformat binary
<zid> it makes a flat binary
<beit747> zid: I see
<zid> you could make a flat binary where k_main was definitely first, but you'd need to write a linker script
<beit747> zid: well I am running this on macos..
<klange> I probably have even more features that you don't want and can remove, like a command line editor, and menu support... If you just want multiboot + one module, the necessary ELF parsing is microscopic.
<zid> beit747: which is why step 1 on the osdev wiki is to make an i686 cross compiler :P
<zid> i686-elf*
<beit747> zid: which I did: usr/local/i386elfgcc/bin/i386-elf-ld
<zid> great, then you being on macos is irrelevent
<beit747> zid: yeah
<zid> I thought you said it because you knew it was about to be a problem
<gog> i'm about to be a problem
<beit747> zid: just wanted some feedbaack
<zid> klange: I basically just use it so that I don't have to write iso9660 and deal with the disk emulation bios routine crap and writing real mode code and stuff, it's not.. hard just boring
<zid> gog: You're already a problem babe
<gog> :D
<zid> don't sell yourself short
<gog> thanks love
<klange> zid: it is, but you do it once and then you have it and can check more boxes in the 'not shipping third-party code' department ;)
<gog> beit747: ok so you'll need a linker script
<zid> shipping a tiny grub binary's not really bothering me, it ends up relying on my bios anyway afterall ;)
<klange> Though I am still using xorriso to build my CDs... I _have_ an ISO9660 builder tool, written in Kuroko(/originally Python), but it hasn't quite made its way into the core build...
<beit747> gog: any direction would be helpful
<bslsk05> ​forum.osdev.org: OSDev.org • View topic - Using LD to output a flat binary?
<beit747> gog: thanks
<zid> I mean, there's always LD's manual :P
<gog> and in addition to that
<gog> you'll need to make k_main be in its own section
<zid> tbh, it'd probably be *far* easier, to just make a flat elf
<zid> and read e_entry
<gog> be it with .section directives for asm or __attribute__((section)) for c
<zid> mov eax, [0x7e00+48]; jmp eax or whatever the offset is
<gog> zid: yeh but then you're asking a newbie to try to grok ELF
<gog> and understand why
<zid> not really, the elf header is first, and that field's in it
<gog> although the linker script concept is the same
<gog> hm
<zid> offset 0x18
<zid> so it'd literally be mov eax, dword [0x7E18]; jmp eax
<gog> anyhow, then when k_main is in its own input section you need to include that section first in the .text output section
<bslsk05> ​github.com: boros/linker.ld at master · zid/boros · GitHub
<zid> You can delete half of that for this though
<bslsk05> ​gist.github.com: _.md · GitHub
<gog> imagine not using uefi
<zid> what's the emulation for doing binary + arch? binary-i386?
<gog> i think it's just binary because it spits out whatever the input sections are
<bslsk05> ​gist.github.com: gist:86fc880c66e10a4aa560002fa4e03b63 · GitHub
<zid> err fuck forgot the symbol *fixes*
<zid> Okay refresh if you opened it already :p
<beit747> thanks
<zid> link with ld -T thisfile.ld and make that boot.asm and add it to your build and it might just work
<beit747> I should remove the --oformat binary part from ld?
<zid> yea it's already specified by the script so you can toss it
<gog> yeah
<zid> and the text=7e00 thing
<zid> and the -e thing
<gog> since that is also specified
<zid> This makes sure that "jmp k_main" is the first bytes of .text, if you hadn't figured out what it was doing, btw
<zid> I forgot .bss actually
<zid> it'll run and work though :D
<beit747> /usr/local/i386elfgcc/bin/i386-elf-ld doesn't seem to have a -T option
<zid> okay and what does it actually say
<beit747> /usr/local/i386elfgcc/bin/i386-elf-ld -T linkerscript.txt -o kernel.bin kernel.o -m elf_i386
<beit747> /usr/local/i386elfgcc/bin/i386-elf-ld:linkerscript.txt:19: syntax error
<zid> how do you get "it doesn't have a -T" option from that? O_o
<beit747> or the linkerscript doesnt link
<zid> it opened it, parsed it, and encountered an error on line 19
<zid> you pasted both files in
<beit747> it seemed to err on global start
<klange> ld is very unhelpful with syntax errors in link scripts
<zid> delete the assembly source from the bottom
<klange> they are not meant to be written by ~~mere mortals~~ literally anyone, apparently
<zid> and put it into boot.asm and add it to your build like you should have
<gog> i mean true
<gog> linker scripts mean you're doing something specific an probably unauthorized
<zid> That's why I have ops in ##binutils, I once saw a picture of alinker script
<zid> like a victorian ankle
<gog> can i get ops there too
<zid> I'm now part of the club
<gog> i've wrote some wacky linker scripts in my various experiments
<klange> I should restart my project to build a BIOS loader with Kuroko.
<zid> no idea how chanserv works
<gog> dang :(
<zid> maybe? or maybe it'll ban you and me?
<gog> i like those odds
<CompanionCube> there's always just plain /op lol
<zid> I'd have to *be* opped for that
<gog> zid would never op me
<zid> You're not even in there
<gog> excuses
<zid> oh I think my flag is gone, or I'm not logged into the right nickserv, idk
<gog> :D
<zid> too lazy to ask boru
<clever> zid: you are signed into nickserv
<zid> 'the right nickserv'
<clever> there is only one nickserv + chanserv on the network
<zid> maybe I have three, who knows, I don't keep track of it
<zid> I might have zid zid` and zid_ all separate for when I've variously needed to join an identified only channel, maybe some got carried over from freenode
<zid> I've literally not spent a single second thinking about it
<clever> ah, nothing got carried over from freenode
<clever> the db was nuked
<gog> yes
<gog> and rightly so
<zid> dw I still have the copy of #nethack's db that I pinched
<CompanionCube> yeah, cs flags only shows boru
<CompanionCube> why did you pinch it
<zid> so we can log into a bunch of people's nethack.alt.org accounts and die with silly quit messages
<clever> the new ownership was so incompetent, they couldnt maintain the network, and just nuked it from orbit, and spawned a zombie within the corpse of a domain :P
<zid> because I needed to troll kerio
<zid> I set his fruit name to something rude
<gog> fruit name?
<zid> nethack thing, one of the items gets its name from your config file, it's supposed to be your favourite fruit
<gog> ohhh
<zid> I dumped the pw db, cracked his pw, set his fruit name to I suck dogs or something
<zid> then told paxed how to fix his remote code execution bug :P
<zid> his password was blackbear, fwiw
<gog> that's a terrible password
<klange> hunter2
<klange> wait shit
<gog> lmao
<gog> pretty sure i typed a password here once
<bslsk05> ​nhqdb.alt.org: nhqdb: Quote #180
<klange> The password to my router is hats1234.
vdamewood has joined #osdev
<zid> The password to mine is kittens123
<mrvn> my password is secret
<gog> haaa
<klange> I got "
<clever> mine is `pwgen` :P
<klange> h...ewakjglkewjhgewa fu
<zid> I'm not telling people some 40 character string of garbage, or setting up one the silly pin number auth shit or whatever
<klange> I got "hats1234" from a friend in uni.
* vdamewood gives gog a password fishy
<zid> I just set it to something you can say aloud
<mrvn> klange: no no, that's the user name.
<klange> It's what we set the password to for a bunch of unprotected stuff.
* gog encrypts fishy
<klange> "This needs a password for technical reasons, but it's actually public access."
<klange> It's simple, easy to remember, and 8 characters so it works for most things that have minimums.
<bslsk05> ​www.reddit.com: Set your WiFi password to "fourwordsalluppercase"... : cleanjokes
<clever> zid: i solve that problem by using QR codes to encode both the ssid and pw
<vdamewood> I think I once set my password to AllLowerCaseNospaces
<klange> That doesn't make sense. It should bee AllLowerCasesWithSpaces
<clever> echo 'WIFI:S:name;T:WPA;P:password;;' | qrencode -o wifi-test.png
<vdamewood> klange: That's the perfect part
<bslsk05> ​en.wikipedia.org: Wi-Fi - Wikipedia
<klange> This reminds me of my pointer star positioning style, which was chosen to anger everyone.
<zid> clever: I both cannot be bothered to set that up, nor can I be bothered to teach people how to use it once I have
<klange> (Spaces on both sides, so it's ambiguous with typical multiplication!)
<klange> I started doing that as a joke, and now it's just how I do it.
<zid> typical android or iphone from parents or whatever will just straight ask for a password
<vdamewood> klange: I bet you write three-star code.
<clever> zid: the only thing you really have to do, is punch your ssid/pw into that echo, print it out on paper, and point to it when people ask for the pw
<klange> Like how I started using my editor for the lulz and now using vim feels weird.
<zid> if I have to start telling them to install a QR code app we're already wasting 3 hours
<klange> I'm sure I have some three-star code.
<klange> src/os.c:static int makeArgs(int count, const KrkValue * values, char *** argsOut, const char * _method_name) {
<clever> zid: iphone detects it directly in the default camera app, android i think needs a qr code scanner app, at least on mine
<klange> Okay that's cheating.
<zid> I have eight star code as long as you allow -> to decompose to *(.)
<zid> clever: see
<vdamewood> klange: Got any four-star code?
<clever> zid: but i would assume that people are smart enough to know its a qrcode, and open the right app
gog has quit [Quit: byee]
<zid> hahahahahaha
<zid> like hell that'd ever happen
<zid> my mother can still barely answer a telephone call or use the touch screen
<zid> she stabs at it like it's made of hot coals
<clever> lol
<beit747> So in the asm file I pasted I replaced jmp kernel_entry with the 3 lines of assembly at the bottom of the linker scrirpt you pasted. does section .text need to be somewhere specific in my bootloader code?
<klange> vdamewood: Doesn't even seem either my big projects have real 3-star code, since I consider double pointers to (char*) cheating.
<zid> beit747: just put everything below boot.asm: into boot.asm
<beit747> zid: everything meaning the entire script and not use ld to link it?
<zid> no
<zid> I mean
<zid> from the line that says boot.asm: in the paste
<zid> select *all* of the text until the end of the file, and hit 'cut'
<zid> paste this into a new text editor window, and hit 'save', and name the file 'boot.asm'
<mrvn> klange: My list has `Node **tail = &head;` but then I had a function needing to modify the tail: Node **&tail. feels really bad.
<zid> (or whatever you like)
<zid> The final line in your linker script should be }
<zid> the first line in boot.asm should be.. global start
<zid> why did gog run away :(
<beit747> here is the new boot.asm, linkerscript and ld command: https://l.perl.bot/p/6nb245
<bslsk05> ​l.perl.bot: Perlbot Pastebin
<beit747> qemu doesnt even boot now
<zid> no dear
<klange> no deer?
<zid> you followed precisely like 0 of those instructions
<zid> revert whatever that top code is back to how it was
<zid> and *open your text editor* *paste the lines starting global main in* *save them to a file*
<zid> *include that file in your build* (for example: nasm -felf32 the_scary_new_code.o) and link against it (ld the_scary_new_code.o kernel.o -T linker_script_zid_wrote.ld -o kernel.bin)
<zid> but, the linker script expects the scary new code to be called boot, so change it to match, or name the scary new file boot.asm
<zid> either is fine
<zid> I'm not sure where "copy paste all of your old bootloader code into the same file with the code at the bottom of the gist" came from
<klange> ugh my stripped so is up to 585K, that's way too big... gotta optimize error strings again...
<zid> what's your so for? klanudoku?
<klange> it's _kuroko_, or if that's too hard for you, krk
<klange> Sometimes I even read it as 'kirk'.
<zid> doesn't that mean "black girl"
<klange> In the same way step stool means feces that adopted you.
<zid> it's not my fault it doesn't have kanji
<zid> oh it does mean black girl, but it's metaphorical and means invisible black-screen stagehand girl
<zid> There's probably some way to tell it apart with pitch but my dictionary doesn't say
<klange> The kabuki stagehands were generally young boys. 子 is ambiguous and really just means _child_ in that context.
<zid> yea that seems very reasonable
<zid> I guess I just figure ko for girls because of girl-names liking to end in it
<zid> Sorta like "baby" in english actually, means baby, but also means grown ass woman :P
<klange> The name is a pun, of sorts. It's both very appropriate for a VM language due to the kabuki term, and it's also the name of a character in the Raildex franchise so it is very appropriate for a component in ToaruOS.
<zid> no no it's the name of a character in a baseketball anime
<zid> not a tsun girl with a nasal voice
<kingoffrance> baseketball anime?
<kingoffrance> ill pretend that is not a typo
<klange> Unfortunately, I must dash your hopes and note that zid means basketball.
<zid> I heard zid means 'wall' in some eastern european language
<klange> Albanian, Romanian, Serbo-Croatian, Slovene...
<zid> romanian is romance!
<zid> they've been stealing words from the croats!
<zid> wall's a pretty good name anyway, I'm thick as one
<beit747> zid: sorry for being totally confused but are you saying not to use my boot loader: boot.asm and create a new asm file? So to boot all I need is section .text, start: jmp k_main and the linker script? My boot.asm file switches into 32 bit mode does some disk things and sets up the stack..
<zid> no
<zid> this is absolutely nothing to do with your boot loader
<kingoffrance> "gotta optimize error strings again" inquiring kofs want to know. error codes? errno type thing? read from external file? dedupe? compression?
<zid> don't make any changes to it
<beit747> ok
<zid> I didn't even know you *had* a file called boot.asm
<zid> because I've never seen your project or your code before
<klange> The compiler error messages use a lot of bytes because they are repetetive but not exact matches.
<zid> klange: time to zlib them
<zid> the impl is way smaller than the space it'll save zipping your rodata
<beit747> yes my actual main file is called boot.asm here is the exact 'make' instructions to compile and link and run in qemu: https://l.perl.bot/p/3213j3
<bslsk05> ​l.perl.bot: Perlbot Pastebin
<zid> well, pick one to rename, I don't care which
<klange> I can build a version of the full interpreter binary with the right flags and UPX thrown in and get a 116K kuroko.
<zid> upx is illegal though
<zid> you have to write it all yourself
<klange> The pre-upx build is 299K.
<beit747> Im guessing in my make script the cat boot.bin kernel.bin > os_image.bin will be a problem
<zid> nope
<zid> Infact, it's required, how you built your thing
<zid> the only thing we're doing is making "jmp k_main" the first 3 bytes of kernel.bin
<zid> we're adding a *single line* of assembly to your project
<zid> you just got into a huge mess
<beit747> ok so I created a new file called bootscript.asm with the 6 lines of asm at the bottom of the linker script
<zid> linker script needs updating with the matching name now
<zid> boot.o -> bootscript.o
<beit747> but if I pass -o boot.o to nasm it doesnt need chaning right?
<zid> I thought your entire problem was that you already had a boot.o
<zid> because it was the same name as your bootloader by happenstance
<beit747> no I have a boot.asm which is my main boot file
<zid> you can't link .asm files
<beit747> right so I have to nasm it to create a bin file
<zid> okay so technically possible but erm, gross
<beit747> so it would be nasm bootscript.asm -o boot.o
<klange> If you want to link them, you need to assemble them into object files, not "bin files".
<zid> don't do that
<zid> it's *really* confusing
<beit747> so it would be nasm bootscript.asm -f bin -o boot.o
<zid> no it definitely would not be
<zid> it would be nasm bootscript.asm -o bootscript.o
<zid> possibly -felf32 but I believe that is the default default
<zid> *input files* all need to be elf, to your i386-elf linker
<klange> Trying to control the format for object files is generally a no-no, final link format is all that really matters.
<klange> (If you find yourself in a position where you have multiple tools and they are producing different object file formats... get better tools.)
<zid> I was supposed to go to bed 3 hours ago
<zid> this is just barely plodding along enough that I don't get bored of waiting and go to sleep
<klange> Go to bed, zid. Or go to bid, zed.
<zid> I wish I had named it start.o 2 hours ago
<beit747> bootscript.asm:7: error: binary output format does not support external references
<zid> correct, because you did the thing I told you not to do
<zid> and did -f bin
<beit747> nasm bootscript.asm -o bootscript.o
<zid> okay your nasm is configured weirdly, -felf32
<zid> maybe because it's macos built
<beit747> that worked
<zid> okay so now link against it when you build your kernel, and get rid of all the shitty options that the linker script replaces
<klange> Rewrite everything in gas, use the as that came with your gcc/binutils toolchain, and keep zid up for another three hours.
<beit747> and then to link it I just update my current ld line: /usr/local/i386elfgcc/bin/i386-elf-ld -T linkerscript.txt -o kernel.bin kernel.o -m elf_i386
<zid> ld -Tlinkerscript.ld boot.o kernel.o -o kernel.bin
<zid> err bootscript.o
<zid> whatever name you gave it
<zid> helps if you actually link the code we wrote into the output
<zid> all 1 line of it
dude12312414 has joined #osdev
vdamewood has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<beit747> okay, thanks, it loads now.
<zid> magic
<zid> i386-elf-objdump -d bootscript.o should be funny
<beit747> almost with some spells
<beit747> so now can you explain why the array[3][3] wasnt working?
<zid> because you wrote past the end
<beit747> ahh
<zid> writing past the end is UB
<beit747> UB?
<zid> undefined behavior
<beit747> not hip on the irc chat
<beit747> oh gotcha
<zid> it's nothing to do with IRC
<beit747> seems like it was a huge mess for me but you seemd to know exactly. thanks for the help
<zid> The compiler told me, but I enjoyed the 5 minutes I spent cleaning it up
<beit747> I have never delt with the .text .data .rodata stuff before
<beit747> you did more than clean it you modified it
<zid> .text is code, .data is mutable initialized data, like arrays of numbers and stuff
<zid> rodata is read only data like strings
<beit747> shouldnt there be a .code section?
dormito has quit [Ping timeout: 240 seconds]
<klange> No.
<zid> .text is code
<zid> you're technically missing a * (.bss) line from the bottom
dude12312414 has quit [Remote host closed the connection]
<mjg_> btw why is text named text?
<zid> I added it in one of the repastes, not sure you caught it
<zid> It's the text of the program :P
<zid> text as in content
<mjg_> OK
<zid> it's just some weird decision some random unix nut made in the 60s that stuck
<zid> like everything else
<mjg_> i suspect the answer involves lsd or weed
<zid> exactly
dude12312414 has joined #osdev
<beit747> I was actually using someone elses linkerscript
<zid> So this linker script basically just makes an ELF in memory which has all of the input data (the input .text, .data, .rodata etc) stuffed into its .text section, then it writes it out as a flat binary
<beit747> yours looks much more confusuingg
<zid> but because we had the intermediate ELF, we could resolve the globals and externs and get the address of k_main and write it to that jmp
<zid> we also instruct it to put the .text from bootscript.o as the first thing in that intermediate .text
<zid> so that your braindead bootloader that just dribbles off the end of itself encounters the jmp k_main
<beit747> well the bootloader is about 1 years old and still drinking from a teet
<beit747> your assistance is greatly appreciated althouogh your not the nicest
<zid> fuck you too
<beit747> :)
<zid> You took 3 hours of my time to make one new file and change one command line option
<zid> then call me out for getting curt by the end
<beit747> its all new to me, tell a baby hes an idiot for not being able to fly a jet
<zid> I didn't call you anything
<beit747> no, but you assumed I should know
<zid> I called you *out* for being upset that I wasted my time helping you, clearly a poor idea
<zid> I won't bother again
<beit747> you didnt waste your time, it was much helpful and you have credit in my books
<beit747> I am saying thanks again.
\Test_User has quit [Ping timeout: 240 seconds]
dude12312414 has quit [Remote host closed the connection]
heat has quit [Ping timeout: 268 seconds]
beit747 has quit [Quit: leaving]
\Test_User has joined #osdev
X-Scale` has joined #osdev
X-Scale has quit [Ping timeout: 240 seconds]
X-Scale` is now known as X-Scale
cheapie has quit [Quit: Local host tripped over the cable]
cheapie has joined #osdev
Vercas has quit [Read error: Connection reset by peer]
Vercas has joined #osdev
Reinhilde has quit [*.net *.split]
dayimproper has quit [*.net *.split]
snickerbockers has quit [*.net *.split]
basil has quit [*.net *.split]
JerryXiao has quit [*.net *.split]
snickerbockers has joined #osdev
basil has joined #osdev
JerryXiao has joined #osdev
Ellenor has joined #osdev
nohit has quit [*.net *.split]
fkrauthan has quit [*.net *.split]
ids1024 has quit [*.net *.split]
PotatoGim has quit [*.net *.split]
paulbarker has quit [*.net *.split]
froggey has quit [*.net *.split]
Piraty has quit [*.net *.split]
cln has quit [*.net *.split]
afarrag has quit [*.net *.split]
stux has quit [*.net *.split]
teroshan has quit [*.net *.split]
Piraty has joined #osdev
froggey has joined #osdev
cln has joined #osdev
teroshan has joined #osdev
paulbarker has joined #osdev
PotatoGim has joined #osdev
afarrag has joined #osdev
fkrauthan has joined #osdev
nohit has joined #osdev
X-Scale` has joined #osdev
X-Scale has quit [Ping timeout: 246 seconds]
X-Scale` is now known as X-Scale
dude12312414 has joined #osdev
dude12312414 has quit [Remote host closed the connection]
<geist> mjg_: i think i had read this before, but so the internet seems to go, the GE-625 manual in 1964 was already referring to code as a text segment
<geist> so i think it may have been at least just what GE was using, but may go back farther than that
<geist> ie: http://ed-thelen.org/comp-hist/GE-635.html has a bunch of references to it
<bslsk05> ​ed-thelen.org <no title>
SGautam has joined #osdev
the_lanetly_052 has joined #osdev
MiningMarsh has quit [Quit: ZNC 1.8.2 - https://znc.in]
MiningMarsh has joined #osdev
FatAlbert has joined #osdev
the_lanetly_052_ has joined #osdev
the_lanetly_052 has quit [Ping timeout: 246 seconds]
the_lanetly_052 has joined #osdev
the_lanetly_052_ has quit [Ping timeout: 240 seconds]
elastic_dog has quit [Ping timeout: 264 seconds]
elastic_dog has joined #osdev
arch-angel has joined #osdev
pretty_dumm_guy has joined #osdev
the_lanetly_052 has quit [Ping timeout: 240 seconds]
gog has joined #osdev
the_lanetly_052 has joined #osdev
bauen1 has quit [Ping timeout: 268 seconds]
arch-angel has quit [Ping timeout: 240 seconds]
eroux has quit [Ping timeout: 256 seconds]
eroux has joined #osdev
the_lanetly_052 has quit [Ping timeout: 256 seconds]
bauen1 has joined #osdev
GeDaMo has joined #osdev
FatAlbert has quit [Ping timeout: 240 seconds]
FatAlbert has joined #osdev
arch-angel has joined #osdev
pretty_dumm_guy has quit [Quit: WeeChat 3.5]
<mjg_> geist: huh, interesting
<FatAlbert> mjg_: yeah he's an interesting guy
<mjg_> i just remembered that supposedly there was an early programming language with a keyword: OBEY
<FatAlbert> are you ugys lubing your switches ?
<FatAlbert> guys/girls
pretty_dumm_guy has joined #osdev
<FatAlbert> are you lubing your keyboard swithce ?
<FatAlbert> s
fwg has joined #osdev
SGautam has quit [Quit: Connection closed for inactivity]
Celelibi has quit [Ping timeout: 246 seconds]
gildasio has joined #osdev
toluene0 has quit [Quit: Ping timeout (120 seconds)]
toluene has joined #osdev
[itchyjunk] has joined #osdev
<[itchyjunk]> Hi, is it that containers don't use the type of OS resources that can lock it?
<[itchyjunk]> I was imagining two containers wanting something from the OS at the same time. What happens then?
<Mutabah> Containers are usually just collections of processes, with a different namespace for global resources (PIDs, filesystems, network, ...)
<[itchyjunk]> hmm
<mrvn> [itchyjunk]: the two virtual machines ask the hypervisor on the different cores to instruct the networkd machine holding the things to send it to the containers virtual nic. Obviously.
<mrvn> 8-P
gxt_ has quit [Remote host closed the connection]
gxt_ has joined #osdev
bauen1 has quit [Ping timeout: 240 seconds]
gildasio has quit [Remote host closed the connection]
gildasio has joined #osdev
gxt_ has quit [Remote host closed the connection]
gxt_ has joined #osdev
FatAlbert is now known as chad
heat has joined #osdev
vdamewood has joined #osdev
vinleod has joined #osdev
vdamewood has quit [Killed (mercury.libera.chat (Nickname regained by services))]
vinleod is now known as vdamewood
dennis95 has joined #osdev
gxt_ has quit [Remote host closed the connection]
mzxtuelkl has joined #osdev
gxt_ has joined #osdev
dormito has joined #osdev
stux has joined #osdev
gog has quit [Ping timeout: 256 seconds]
srjek|home has joined #osdev
fxttr has joined #osdev
<fxttr> Hey, I have a little question. I do much work in C and I like using Rust in my hobby projects. Rust provides some memory safety, and I like to play around with a hobby-OS written in Rust. I just don't like the extra complexity rust brings into the development. Do you think Rust is a good choice for OS development? I could probably prevent many critical vulnerabilities, but more complexity also means
<fxttr> more bugs. What do you think as experienced OS developers?
<Mutabah> I dunno...
<bslsk05> ​thepowersgang/rust_os - An OS kernel written in rust. Non POSIX (41 forks/565 stargazers/NOASSERTION)
<Mutabah> yes.
<zid> Rust works, but you'll just trade the issues for different sets of issues
<zid> same with anything else
<Mutabah> True, true.
<Mutabah> Rust's safety rules take extra effort to follow
<zid> It's still not great freestanding and you won't be able to do dynamic linking for shit etc
<Mutabah> But, you end up with code that is really hard to break.
<zid> but you get.. automatic bounds checks!
<fxttr> Mutabah: Is that also true for kernels?
<Mutabah> Yep.
<fxttr> Ah I see :)
<Mutabah> It applies to everything written in rust
<Mutabah> You _can_ just yolo and use raw pointers everywhere
<Mutabah> but, the language design and conventions push you towards making safe abstractions
<Mutabah> and whenever you reach for unsafe, you ask yourself "what could go wrong here, and how have I prevented that?"
<mrvn> You can avoid a lot of the common pitfals with C++ and coding style
<Mutabah> You can
<psykose> the mythical 'coding style'
<Mutabah> although, even then, there are hidden footguns in even modern C++ (e.g. automatic conversions and reference lifetimes)
<mrvn> Mutabah: uint16_t a, b; ... a * b; ==> UB
<Mutabah> fxttr: If you're interested, give it a try - it's very much doable - just will add extra effort atop the normal osdev learning curve
<mrvn> integer promotion is realy bad in C/C++
<Mutabah> mrvn: Iirc, unsigned overflow is definde ... signed is not
<mrvn> Mutabah: but it's a signed overflow
<Mutabah> oooh, yeah, promoted to int?
<mrvn> yep.
<Mutabah> I was thinking e.g. `const bar& get_bar(const foo& );` and `get_bar(type_convertable_to_foo)`
<mrvn> Mutabah: why isn't that const?
<Mutabah> That has bit me before - it's a silent construction of a new object, which is dropped after that statement - leading to the returned reference being invalid
<mrvn> Mutabah: assuming bar is a reference to foo
<Mutabah> mrvn: free function, not a method
<Mutabah> and yes, `bar` was a member of `foo`
<mrvn> Mutabah: then why isn't it a method?
<Mutabah> (actual code was a bit of checked `boost::json` access)
<mrvn> type_convertable_to_foo.get_bar() doesn't have that problem.
<Mutabah> iirc it was `const boost::json::object& check_object(const boost::json::value& val, const char* key_name);` - threw with the key if the value wasn't an object
<Mutabah> Can't add methods to existing types in C++ :)
<Mutabah> If it was rust, I'd grab a trait
<mrvn> It's a problem caused by writing C code disguised as C++ with global function instead of member functions.-
<Mutabah> mrvn: It was adding new behaviours to a scattering of library types
<mrvn> Mutabah: then in the OO world you should have derived the class.
<Mutabah> So, can't have added them as methods (becuase not my type), and would be too much overhead to have wrapped them in new types (also, wouldn't work for the references?)
<mrvn> Most libs aren't written to derive their types though.
<Mutabah> no, they're not
<Mutabah> Anyway - it was a real-world example of C++'s features interacting to make what seemed to be defensive code explode
<mrvn> Mutabah: be happy that `U foo(T &t)` at least refuses to take temporfaries.
<Mutabah> Semi happy...
<Mutabah> I sometimes wish it would
* Mutabah vanishes to the bed
<chad> Mutabah: the powers gang it's yoru github ?
* Mutabah is away (Sleep)
<j`ey> chad: it is
<chad> j`ey: hi :)
<j`ey> hi
<chad> `not everything needs to be optimized` -- by j`ey
<chad> roger that sir
gwizon has joined #osdev
gwizon has quit [Client Quit]
<chad> j`ey: im just bored i swear
<j`ey> lol
janemba has quit [Ping timeout: 268 seconds]
<mrvn> chad: everything needs to be pessimized.
<chad> it's highly possible that tomorrow i will sign to my first Uni course
<chad> which is not even CS it's math
<chad> :)
<chad> i guess it's CS but it's not the good stuff
<chad> it's a rite of passage i guess
<geist> math is good to know
<zid> I skirt along only knowing how to add
bauen1 has joined #osdev
fxttr has quit [Quit: WeeChat 3.5]
<mrvn> zid: lucky you, I only know how to increment/decrement.
bauen1 has quit [Ping timeout: 276 seconds]
bauen1 has joined #osdev
<heat> el torito
<heat> that's the only thing I know
<j`ey> exception level torito
<zid> Are we really going to level torito? It will mean changing the bulb.
<chad> thanks for all of your opinions .. i still go to Uni
<chad> :)
<chad> maybe i
<chad> i'll even find friends who know
<heat> chads have friends
<chad> it's like being in a new school ... everyone is new and clueless
<heat> sigmas don't
<chad> i might blend in
<heat> has anyone played around with Cache-as-ram in x86?
<chad> you are in #osdev my bet is
<heat> I'm thinking that it's as easy as setting up no-fill mode and an mtrr entry as writeback
<chad> YES
<heat> my bet is no because this is a super niche
<heat> and more firmware than kernel
<chad> heat: you are underestimating #osdev
<chad> i don't like it
<heat> im not
<chad> i have a feeling Mutabah have something to say about it but he's gone to sleep
<chad> or even j`ey
<j`ey> no i dont do x86
<chad> x86 is the easiest !
<chad> x86/64
<chad> believe it or not i have leraned back in the days x86/64 .. test me
<chad> assembly
<CompanionCube> not sure about x86, but clever has done cache-as-ram as part of booting the pi
<mrvn> somebody in here likely has worked on coreboot or other bios.
<zid> yea as far as I know you just disable the cache bit
<zid> and maybe play with the mtrrs
<mrvn> I want to learn how to do cache-as-ram on ARM/ARM64.
<chad> wow .. mtrrs
<mrvn> Specifcally how to get back to it after the firmware has enabled ram.
chad is now known as FatAlbert
<FatAlbert> i just learned another term
<FatAlbert> mtrrs
<FatAlbert> mrvn: it's a piece of cake for you
<FatAlbert> i have to contribute somehow ...
<mrvn> chocolate please
<FatAlbert> mrvn: YOU GOT THIS !
<mrvn> I want to have my cacke and eat it too
<FatAlbert> on it's way
<FatAlbert> there are some people in ##C that i think could be very helpful here
<FatAlbert> not that you guys need help but still they smart as ****
<FatAlbert> ill try to #include them
<mrvn> * is normal, ** is smart, *** less so. what does that make ****?
<PapaFrog> Less normal?
<FatAlbert> normal
dude12312414 has joined #osdev
<FatAlbert> you guys are using vscode/vim ?
<FatAlbert> im just curious
<mrvn> FatAlbert: https://xkcd.com/378/
<bslsk05> ​xkcd - Real Programmers
<FatAlbert> :)
zaquest has quit [Read error: Connection reset by peer]
dennis95 has quit [Quit: Leaving]
zaquest has joined #osdev
<FatAlbert> i have a thing of starting a project and then leaving him for getting bored .. is this something normal or im at the wrong profession ?
janemba has joined #osdev
<FatAlbert> ? . ?
dude12312414 has quit [Quit: THE RAM IS TOO DAMN HIGH]
nyah has joined #osdev
papertigers has quit [Remote host closed the connection]
psykose has quit [Remote host closed the connection]
psykose has joined #osdev
antranigv has quit [Quit: ZNC 1.8.2 - https://znc.in]
antranigv has joined #osdev
Vercas has quit [Quit: Ping timeout (120 seconds)]
FatAlbert is now known as daddycated
Vercas has joined #osdev
<daddycated> what are you saying on my new nick
<daddycated> ?
Raito_Bezarius has quit [Ping timeout: 244 seconds]
Raito_Bezarius has joined #osdev
Brnocrist has quit [Ping timeout: 246 seconds]
mzxtuelkl has quit [Quit: Leaving]
jjuran has quit [Quit: Killing Colloquy first, before it kills me…]
jjuran has joined #osdev
witcher has joined #osdev
gildasio has quit [Quit: WeeChat 3.5]
<heat> j`ey, do you work for sifive
<heat> since you don't do x86
<heat> you sound like a riscv fan to me
<j`ey> heat: i will talk to a moderator and have you banned
<heat> noo
<heat> why
<heat> iz just question
<zid> heat: you are now banned
<zid> j`ey: you are now double banned for liking riscv
<heat> damn right baby riscv is a stupid arch
<j`ey> double banned D:
<zid> It's like a regular ban, but every message is ban evasion and carries a $1 fine, payable directly to me
<mrvn> that's the riscv you take.
<j`ey> ban mrvn for the terrible pun
<heat> h`ey j`ey, c`hill
fxttr has joined #osdev
<jjuran> They ban you when you hate x86
<jjuran> They ban you when you advocate for riscv
<jjuran> They ban you when you're blabbing like a dunce
<jjuran> They ban you when you're making awful puns
<zid> j`ey: You're up to $2
<jjuran> I would not try to understand
<jjuran> /Everybody/ must get banned!
<j`ey> zid: give me your address, I'll pop it in a letter through the door
<bauen1> imagine how much riscv research you could fund with all these ban dollars
<zid> pm'd him my address, let's see what shows up :P
<heat> maybe the cpu will be faster than a pentium 4 now
<jjuran> If it's a severed head, you'll be very upset
<heat> _maybe_
<heat> will he?
<zid> depends what it's the severed head of
<bauen1> heat: i'd be quite disappointed if it doesn't get warm enough to cook eggs on, I literally use Intel CPUs to heat my room, so that's a requirement for me
<zid> pentium 4s weren't even that amazing, 90W or something, people just hadn't evolved to real coolers yet
gxt_ has quit [Remote host closed the connection]
<zid> we were still using tiny aluminium blocks with 90mm fans
<zid> and that 90W was the 3.0GHz Prescott one
gxt_ has joined #osdev
<zid> pretty much every normal desktop cpu these days is 130W, 50% more
<heat> the 12900k is a way better heater than that
<zid> 241W, nice
<zid> it's a fancy i9 though
<heat> holy shit wtf
<heat> 241
<heat> really
<zid> that's what ark says
<heat> why not 240
<heat> I know
<heat> but what the fucc
<zid> Maybe they measured it, but aimed for 240
<zid> but at that point your 1% margin of error is 2.4W
<heat> so write 240 and be done with it
<zid> ehh but once you measure it you know it's a lieee
<zid> Solution: never measure
<heat> lying is good
<heat> 241 seems like they were tryharding
<zid> j`ey: did you pick me a birthday present yet?
<heat> 240 is a chill number
<zid> I'd still love to know why my cpu supports an odd number of gigabytes of ram
<mrvn> zid: 3 ram controlers?
<heat> can you have more than 1?
<zid> Yes, 375 of them
<zid> the bit pattern for which makes no fucking sense
<zid> might as well be noise
<j`ey> zid: a horses head
<zid> is it one of those magazine subscriptions where you build an entire horse? cool
<heat> pig head >>
<zid> racists?
<heat> no
<GeDaMo> Subterranean pigs? :|
<heat> i mean, i don't know if the pig was racist
<heat> maybe?
<zid> pigs are pretty racist
<mrvn> My CPU has like 3W
<zid> j`ey: https://www.pieandbovril.com/forum/uploads/monthly_01_2016/post-35456-14522440169136.jpg I'm assuming it's like this, and you send me a bone per week?
<heat> it's a real horse
<heat> you can still assemble it
<zid> heat: bone with flesh, I just meant the subdivision
<zid> skullbone first
<j`ey> zid: those magazines were such a scam
<zid> correct
<zid> but £5/wk to some parents to buy a crappy paleontology magazine or whatever for their kid is nothing
<zid> was a fortune for mine though so I never got stuff like that
<mrvn> Mine took me into the woods and made me dig up my own bones.
<j`ey> D:
<klys> so that dual socket xeon + itanium system, had we decided it didn't exist?
<heat> no
<heat> why
<heat> did you find one
<klys> naw just a bit curious today
<heat> it was a thing but only internally as far as geist could tell
<heat> theoretically there's full support for it
<klys> which socket?
<heat> the firmware is backwards compatible
<heat> i dunno
<zid> j`ey: https://www.amazon.co.uk/dp/B07GYS2879 Okay how about this, it's like a horse's head and probably better, and maybe even cheaper
<bslsk05> ​www.amazon.co.uk: Neon Genesis Evangelion EVA-01 Test Type, Bandai Metal Build : Amazon.co.uk: Toys & Games
<zid> way to spoil it bslsk05
<bslsk05> ​www.amazon.co.uk: Aneco 4 Pairs Over Knee High Stripe Socks Stripe Thigh High Socks Cosplay Accessories for Woman Girls : Amazon.co.uk: Clothing
<heat> perfect for programming
<j`ey> thats kinda cool actually might but it for myself
<j`ey> *buy
<zid> die
<zid> cast models are cool
<zid> also die
<j`ey> oh, its not like a gundam that you make?
<zid> garage kit? nah, they exist though but they tend to be less official
GeDaMo has quit [Quit: There is as yet insufficient data for a meaningful answer.]
fxttr has quit [Quit: WeeChat 3.5]
<heat> do you want a copy of beyond the bios
<zid> does it come with a cool dinosaur skeleton
<zid> I only consume things that have free gifts, cereal, magazines, etc
<heat> there's a job offer from intel in 1 out of each 10000 books
<zid> I can't risk that
dude12312414 has joined #osdev
Matt|home has quit [Quit: Leaving]
<heat> i've just noticed my amazon link leaked my original search for gifts for zid
<heat> and you know what
<heat> i'll own up to it
<clever> lol
<clever> i often trim url's like that, just because the tracking data becomes spam in irc
<heat> now my amazon is full of suggestions for programming socks
<mrvn> If enough people open your link your credit card will get blocked because you come from too many countries.
<heat> really?
<heat> that seems stupid
<zid> heat: I like how because they come in big sizes the majority of the comments are from trans women
<zid> "5/5 I used to be a 6'8 lumberjack and these fit beautifully"
<zid> like we accidentally stumbled into some secret clothing shop
<heat> "Bought these for my daughter." hold up
<mrvn> buttplugs?
<heat> no, programming socks
<heat> sadly no one's reviewing buttplugs
<heat> *why do people insist on posting reviews with pics*
<zid> with no pics*
<mrvn> .oO(of buttplugs? :)
<zid> buying highschool girl socks and not showing me is not on
<heat> no because no one's reviewing those
<mrvn> amazon filters out goats.
danlarkin has joined #osdev
<heat> amazon knows how to pair them with lube btw
pretty_dumm_guy has quit [Quit: WeeChat 3.5]
<heat> late stage machine learning
<zid> I mean, that's pretty much early stage
<zid> "customers who bought this also bought"
<zid> is a trivial feature
<mrvn> and please do skip items I already own
<heat> i prefer to assume machine learning is familiar with the details of the human bowels
<zid> No but my search history is
<bslsk05> ​www.amazon.com: Sorry! Something went wrong!
<heat> these kind of books make me want to write a book
<zid> nice, the bot fucked it
<zid> ikr?
<klange> I keep thinking I should write a book.
<zid> C books make me want to write a C book
<heat> i could not do a worse job
<zid> I could literally not do a worse job than every existing C book other than K&R2
<klange> My book would just end up being an autobiography.
<zid> klange: can I just have the sex scenes as an email?
<heat> you'll get them as a DVD bundled with the book and you'll like it
<zid> I'll only like it if I have to buy 14 books over 28 weeks and assemble the DVD
<zid> one VOB at a time
<heat> you should totally write a book, klange
<heat> also geist
<heat> Practical OS design with BeOS
<heat> i should also write a book
<heat> "Writing a shittier, trashier Linux with Onyx"
<klange> "Wasting a decade of your life: The ToaruOS story"
<heat> hey don't steal my story
<klange> Every chapter will just digress into anecdotes about my personal life.
<zid> ooh like that photoshop tutorial?
<heat> that seems riveting
<zid> I wonder if that's still on youtube
<zid> It's presented as a youtube tutorial but he's teaching you how to photoshop blood out of a carpet, while his marriage is obviously breaking down in the bg with his wife screaming at him
<heat> "Learn Multiplatform Assembly Programming with ChibiAkumas!"
<klange> zid will get his sex scenes, but be forewarned: they'll be gay and incredibly awkward, as this is _my_ life after all
<heat> multiplatform asm is a new one
<zid> klange: If you change it all to 'her' I will love it
<heat> the whole book?
<zid> absolutely, especially when she asks you to inspect the rash on her balls
<heat> but then all you read is "her her her her her her her her her her her"
<heat> which is fine storytelling but not as riveting as the original content
<zid> Just make the main character a man named Buffalo from Buffalo who likes to confuse people
<zid> much better read
<klange> That's not how autobiographies work.
<zid> it is
<zid> ask literally any autobiography
<zid> Unless you think kim jong-un really did hit 14 under par
<zid> heat: how do I make my sausage rolls go soft quicker
<heat> soak them with water
<zid> I don't think I want that
<heat> damn, picky
mrvn has quit [Ping timeout: 240 seconds]
<zid> (sausage rolls go stale and hard as they cool down, but then go soft again as they absorb the humidity)
<heat> here's a fun stat: 17% of bell labs' 1127 / Computing Sciences Research center works or worked at google
mrvn has joined #osdev
daddycated has quit [Ping timeout: 276 seconds]
<zid> 100% of the people who work at google today are going to die
<mrvn> zid: are you that sure?
<mrvn> they might have an AI that will outlive us all
<mrvn> .oO(Theymight have the AI that will kill us all)
<heat> that's not true
<heat> mortality isn't googly
<zid> mortality is for chumps anyway, that's why they work at google
<zid> and not my secret underground organization
<bslsk05> ​developer.mozilla.org: HTMLMediaElement.canPlayType() - Web APIs | MDN
<heat> wtf kind of api is this
<mrvn> amazing that they have such a string negative.
<mrvn> strong even
<heat> i'm adding EMAYBE and EIDUNNO to errno.h
<klange> EPERHAPS
<heat> E
<zid> E"E"
<heat> EERCH64
k0valski1889 has quit [Ping timeout: 240 seconds]
<bslsk05> ​github.com: is it safe to use __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED ? · Issue #3896 · reactjs/reactjs.org · GitHub
<zid> Wouldn't have that issue if it were C :P
[itchyjunk] has quit [Ping timeout: 255 seconds]
[itchyjunk] has joined #osdev
nyah has quit [Ping timeout: 240 seconds]