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
<NieDzejkob> Does the BIOS have any interrupts calls I could use to control the state of the caps lock?
Sos has joined #osdev
tacco has quit []
zoey has quit [Quit: Leaving]
dude12312414 has joined #osdev
<doug16k> NieDzejkob, you can hack it in seabios by clearing bit 6 at 0x417, then invoke any int 0x16 thing
<NieDzejkob> I don't think my machine runs seabios :P
<doug16k> yes it does
<doug16k> it runs a compatible thing
<doug16k> you have a bios data area
<doug16k> but ok, sorry I even mentioned it
<doug16k> you can't
<NieDzejkob> ah, so the bda is standardized?
<doug16k> yes
<doug16k> everyone copies what IBM did
<doug16k> because people did stuff like what I said
<doug16k> 0x417 is the "keyboard flags"
jjuran has quit [Ping timeout: 272 seconds]
<doug16k> when or whether it updates the light is uncertain, but clearing that should disable caps lock behaviour at least
<NieDzejkob> okay, just tested it and it does indeed work
<NieDzejkob> the light even goes off
<NieDzejkob> thanks
<doug16k> seabios does a good approximation of what real bioses do
flx has quit [Quit: Leaving]
radens has joined #osdev
flx has joined #osdev
<doug16k> IBM releasing the source for their roms made it easy for everyone to keep that stuff working forever
<doug16k> bios data area hacking stuff
<geist> oh they did that?
<geist> you mean initially? i thought it took a lot of clean rooming for other companies to come up with a nother one?
<geist> or was it because they couldn't look at the source
<doug16k> oh I'm not sure exactly when it leaked or what
<doug16k> they welcomed clones with open arms though
<doug16k> they published everything didn't they?
<geist> schematics, but i think reverse engineering the bios was a hurdle that clones had to get through
<doug16k> and that's how they were almost all 100% compatible? just so good at reverse engineering?
<doug16k> they thought of everything
<doug16k> there were even machines with byte-for-byte identical roms. those must have licensed it though
<bslsk05> ​retrocomputing.stackexchange.com: history - Why did IBM make the PC BIOS source code public? - Retrocomputing Stack Exchange
<doug16k> yeah it is more complicated than I implied
<doug16k> at the end of the day, everyone could see it though, so compatibility was not too hard, especially for stuff like that caps lock flag, which don't have a proper way to control it
mctpyt has quit [Ping timeout: 258 seconds]
mctpyt has joined #osdev
mahmutov has quit [Ping timeout: 258 seconds]
iorem has joined #osdev
<doug16k> it blows me away how wrong TCG is
<doug16k> it's not a fault to jump to a "128-bit" code segment
<doug16k> where 128 bit is when L and D bit are 1. it's a reserved now
<doug16k> seems to get an extremely large amount of stuff wrong in cpl0
<doug16k> I am starting to wonder if anything ever faults. seriously
<doug16k> I know push with sp=1 works. that's one
<doug16k> I got a whole bunch of stuff wrong in my rom. happily works fine in TCG
<doug16k> bochs laughed
<doug16k> not even close to right
sts-q has quit [Ping timeout: 244 seconds]
<warlock> is risc-v the only 128bit cpu?
<doug16k> I blew segment limit violation at the 5th instruction, tried to lgdt a nearly 4GB offset with 64KB segment limit. works fine in TCG
<moon-child> riscv specced a 128-bit version, but I don't think anyone implemented
<warlock> oh ok
<moon-child> it
<moon-child> and I'm not sure why they made it in the first place
<warlock> yea I see it was specced in 2016
<warlock> just didn't know if that's actually a thing
<warlock> and if it was, or if their was others
<doug16k> I read somewhere that there are some scientific applications that benefit a lot from ridiculously large sparse arrays, might be a reaction to that
<moon-child> if you implement your sparse array using the mmu, and you have a lone element, you have to spend an entire page on it
<warlock> pretty much I been learning just asm, and x64 should I know or be playing with anything or are those the 2 main consumer device chips
<warlock> s/asm/arm/
<doug16k> you could have a byte for every particle in the observable universe, 2.8e+14 times over
<doug16k> of address space
<doug16k> wait, I think that's off
<warlock> I never really comprehend big big numbers, cause it just seems unlikely, but it might be true
<doug16k> ah you need 267 bits for every particle
<warlock> but aren't we basicly 32-bit
<doug16k> ~sqrt(every_particle_in_the_universe) then :P
<warlock> just saying, we're built like 4billion particles a person right
<doug16k> 4 billion particle amoeba you mean?
<doug16k> that's way low actually
<doug16k> more like 4 billion particle amoeba cell wall
<warlock> I meant atoms
<warlock> not particles
isaacwoods has quit [Quit: WeeChat 3.2]
<warlock> I typed it in, 7^27 is how many atoms a 150lb person is
<doug16k> people are ugly bags of mostly water. so you are about 10^25 atoms per kg
<warlock> just saying, would a person, that was simulated, basicly be one 64bit cpu you think
<doug16k> that raised to the power of four maybe
<doug16k> the power you would need to simulate a whole person in realtime would probably cause a nuclear explosion
<doug16k> once you had converted enough of the atmosphere around the machine to plasma
<doug16k> from the heat
<warlock> yea
<doug16k> when you hold cpu dies in a magnetic containment bubble at 500bar and 33.5 million C, then yeah, you can handle the power of simulating a person :D
<doug16k> the universe doesn't even fully simulate the universe
<doug16k> see wave/particle duality
<CompanionCube> the other thing that comes to mind is IBM TIMI having 128-bit pointers
dude12312414 has quit [Quit: THE RAM IS TOO DAMN HIGH]
<doug16k> on the bright side, bochs found all my bugs and enable-kvm works
aquijoule_ has joined #osdev
richbridger has quit [Ping timeout: 264 seconds]
<warlock> doug16k: hey, have you played with quantum programming yet?
<doug16k> no I am not a physics researcher
<warlock> oh, I have, but I honestly don't get the point
<moon-child> quantum computers are a way to get the universe to multiply big matrices for you
<doug16k> it's not a computer
<warlock> well, I was looking at it and trying different code, but basicly you set it to the half way point, between 0 and 1 and then start doing stuff with a qbit, then eventually you measure it and it's either a 1 or 0, when that happens, but you basicly got to run it multiple times, to valid the results
<warlock> anyway, I'm just not sure how it's useful or any real stuff could get done with it
<doug16k> can you make an array and fill it with 10-19? no? it's not a computer
<doug16k> it's more to bullshit investors than anything
<bslsk05> ​'Quantum Computing for Computer Scientists' by Microsoft Research (01:28:22)
<warlock> you can place a qbit in a 1 or 0 state, but not really
<doug16k> trick them into blowing money on it so we can learn some physics
<warlock> yea that's what it seems like
<warlock> just one big scam
<moon-child> warlock: a qubit is a complex number aka column vector with a magnitude of 1. (0 1) is 1, (1 0) is 0
<moon-child> s/aka//. Both representations are useful
<doug16k> show me a quantum program that initializes a multiboot header struct
<moon-child> doug16k: you don't have to call it a computer if you don't want to. It's a tool that can perform certain computations faster than would otherwise be possible. Accessory to a CPU. Like a gpu
<doug16k> exactly, it's more of a specialized accelerator
<moon-child> notably the nsa is going to use it to read all your emails unless djb saves us first
<warlock> it seems you have to run it multiple times to figure out if the results are correct
<warlock> anyway, I was just curious, thinking you might of had some actual experience with it and shed some light on something I didn't know
<doug16k> the whole machine is based on probabilities
<doug16k> of course there is a probability that it told you a pile of nonsense
<moon-child> it's not based on probabilities. It's just that the measurement error rate is really high
<moon-child> like dram will tell you nonsense sometimes too
<moon-child> (just not that frequently)
<doug16k> no wave functions
<warlock> yea that's the part I don't get, if everytime you run it, you get multiple different answers, and you're just taking the answer you get the most to be the correct
<warlock> just seems quite silly or stupid to me
<doug16k> moon-child, so it's not based on probability distributions
<doug16k> and wave functions
<doug16k> my understanding is, that matter is free to spontaneously do whatever it likes, as long as everything sums to 0
<doug16k> that space I should say
<warlock> basicly, I'm just thinking we might not be in any real danger because of it, think about it, to do something like crack 1024bit encryption
<doug16k> particles and antiparticles aren't randomly popping in and out of existence screwing up the measurements?
<moon-child> doug16k: if you have a qubit with a value of (say) (0.707 0.707), you'll have a 50% chance of measuring it as a 0 and a 50% chance of measuring it as a 1. That's not very useful. If your qubit has a value of (1 0), you'll always measure it as a 0 (assuming your measurement apparatus is perfect). So you can't measure a (0.707 0.707) directly, because measurement is destructive, so you can only do
<moon-child> it once. But you can do computation on the (.707 .707) value, which is completely deterministic, and will eventually lead you to a (1 0) or (0 1) that you can measure
<warlock> just saying, it has to preform multiple equations, and there's a possible wrong qbit being 1 in every answer, which they use to caculate then next
<moon-child> (completely deterministic--again, assuming perfect hardware, cooling, etc.)
<moon-child> but assuming your hardware is correct and your program is correct, the output is deterministic
<warlock> yea but that's basicly the random code there
<warlock> that's what they set it to, before reading it, and about 50/50 it's either 1 or 0
<warlock> alrighty though
<warlock> obviously moon-child has used it, I'm guessing
<warlock> or do you just know the math, and stuff behind it?
<bslsk05> ​en.wikipedia.org: Quantum decoherence - Wikipedia
radens has quit [Quit: Connection closed for inactivity]
<warlock> who knows, maybe it is faster, getting a bunch of answers, that have it mostly correct, or something and just using that to come up with the correct one, but it doesn't seem reliable, that you could really use it for a one shot answer
<warlock> cause chances are it's wrong
<doug16k> answers for what?
<kingoffrance> "measurement is destructive, so you can only do it once." thats supposedly useful to know if someone is eavesdropping
<doug16k> factors of a giant integer?
<warlock> doug16k: wanted to ask, if you had an os you've made?
<bslsk05> ​doug65536/dgos - Operating System (12 forks/99 stargazers/GPL-3.0)
<warlock> was about to ask where the name comes from but I get it now
<doug16k> it's fun when people go, oh hey that's two to the power of 16. I can check the smart checkbox in their record in my head :P
<warlock> at first was thinking it might stand for like digital gangster os or something
<doug16k> na, it's a lame way to make my username always available :P
<warlock> I'm wondering, since you got 2 names that are different
<kingoffrance> you sure it isnt the shades :)
<warlock> why didn't you make your name on here, that same
<warlock> or vice versa, or make it like doug64k
<doug16k> isn't its base 2 logarithm more fun though?
<warlock> yea
<doug16k> then to throw some nonsense in, k
<warlock> I'm haven't to check the math on that
<doug16k> which could mean 2^10
<doug16k> or 10^3
<doug16k> all mysteriously
<warlock> yea
<doug16k> na it's almost completely arbitrary suffix thrown on to make it unique enough to not exist already everywhere
<warlock> yea
<warlock> really I got another name, but this has been my handle for the longest, but it's usually taken before I get to it
<warlock> but my other one, seems to not be taken at all, I'm usually able to grab it on everything, except twitter
<warlock> you seem to be really active
<doug16k> this room has a lot of traffic for being so technical. most chat rooms with a topic this technical are crickets.wav
bradd has quit [Remote host closed the connection]
<warlock> yea I talk quite a bit myself, but I'm pretty new around here, I guess, like I use to do osdev a long time ago, like between 2002 and 2006
<warlock> anyway what got me back into it, was I was searching through an old external, and ran accross an old boot loader to an os I made
<warlock> couldn't find the os code, but it had the boot code
<doug16k> yeah I had a 32 bit kernel project back then. I actually started up my project to learn the x86_64 stuff, how exceptions and stack traces work with no frame pointer, PCI and PCIe, and SMP
<warlock> yea, there use to be a lot of good sites too
<warlock> it's a shame they all seem to be gone now, except this
freakazoid333 has quit [Read error: Connection reset by peer]
bradd has joined #osdev
GeDaMo has joined #osdev
jjuran has joined #osdev
jeaye has quit [Quit: WeeChat 2.9]
jeaye has joined #osdev
<moon-child> http://ix.io/3qw2 what now
<doug16k> how is their time_t 32 bit?
<doug16k> filesystem specific you mean?
<doug16k> the most sensible thing would be to have a pivot year
<moon-child> I recall a scheme for implementing unix permissions on filesystems that lack them. Basically you just have an extra metadata file
<doug16k> so zero thru something is after 2038
<moon-child> if you were really tied to an fs format stuck with 32 bit times, I think that would be the thing to do
<moon-child> (extra metadata file for each file)
<doug16k> rockridge?
<doug16k> rock ridge
<geist> umsdos i think did soemthing like that
<geist> put a metadata file in the same dir
janemba has joined #osdev
jeaye has quit [Quit: WeeChat 3.1]
kingoffrance has quit [Ping timeout: 264 seconds]
safe has joined #osdev
doug16k has quit [Quit: Leaving]
chartreuse has quit [Remote host closed the connection]
safe has quit [Quit: Leaving]
janemba has quit [Ping timeout: 258 seconds]
kingoffrance has joined #osdev
dennis95 has joined #osdev
sortie has joined #osdev
sortie has quit [Ping timeout: 252 seconds]
mahmutov has joined #osdev
sortie has joined #osdev
Burgundy has joined #osdev
tacco has joined #osdev
janemba has joined #osdev
Arthuria has joined #osdev
<sortie> Today in osdev: I'm trying to finish up my true thread sleep (futex) support. There's a bunch of timeout logic in there. As I review it, I start poking at the timer API and I find a bunch of edge cases that's.. not quite handled properly and potential overflow bugs.
<sortie> So now I'm securing my struct timespec handling APIs to ensure all representations are canonical (0 <= tv_nsec && tv_nsec < 1000000000)
<sortie> And to saturate values on overflow/underflow and APIs to check for overflow and making system calls fail with EINVAL on bad input etc.
<klange> This evening in osdev... I'm thinking time to do some package manager cleanup.
Vercas has quit [*.net *.split]
<clever> ive been doing boring stuff, getting my CI system building everything
Vercas has joined #osdev
pretty_dumm_guy has joined #osdev
Arthuria has quit [Read error: Connection reset by peer]
Arthuria has joined #osdev
doug16k has joined #osdev
Vercas has quit [Quit: Ping timeout (120 seconds)]
Vercas has joined #osdev
<klange> Hm, the old version of this did some fancy thing where it piped a machine-readable progress output from the 'fetch' tool (because that was the sanest way to download anything without a socket API) into it to draw a progress bar... I don't have that progess bar anymore (it was a bunch of cairo) but it's not hard to recreate...
<klange> The current version is such a hack. The GUI is just a package browser, and when you double click a package it opens a terminal to run the actual package manager.
Vercas has quit [Quit: Ping timeout (120 seconds)]
Arthuria has quit [Read error: Connection reset by peer]
Vercas has joined #osdev
Arthuria has joined #osdev
Retr0id has quit [Quit: Ping timeout (120 seconds)]
Retr0id has joined #osdev
<doug16k> wow, a 16 bit relocation can't have a 32 bit offset on i386
<doug16k> at the entry point, I have jmp _start-0xFFFF0000 which means actually jmp 0, but cs base is 0xFFFF0000, so it actually jumps to _start, because _start is guaranteed to be after 0xFFFF0000
<doug16k> the result would be 0, no relocation is going to truncate. it just insists on truncating the offset to 16 bits
<doug16k> but x86_64 is ok with it
<doug16k> x86_64 toolchain
<warlock> ummm are you in 16bit at the time?
<doug16k> this is the very first instruction that executes at power up, at 0xfffffff0
<warlock> oh
Arthuria has quit [Read error: Connection reset by peer]
Arthuria has joined #osdev
<warlock> talking about bios then right
<doug16k> yeah
<warlock> ok
<doug16k> x86 starts you 16 bytes away from the top of bottom 4GB
<doug16k> first thing you do is jump usually
<warlock> so at that location, is a jump to the bios code?
<doug16k> but cs limits are 64KB, only cs base is unreal
<doug16k> yes, it is the last 16 bytes of the rom
<warlock> ok and a20 is obviously enabled at startup
<doug16k> entry point is end_of_rom-16
<doug16k> oh this wouldn't work on a real machine
<doug16k> this only works in vm
<warlock> oh ok
Vercas1 has joined #osdev
Vercas has quit [Remote host closed the connection]
Vercas1 is now known as Vercas
<doug16k> real machine needs really nasty memory controller and pcie training and calibration
<doug16k> ram works at power up in a vm
<warlock> to be honest, I know know exactly how bios works all the way, I just know how it sets me up when it jumps to me
<warlock> don't know
<doug16k> nothing special
<doug16k> SMP MTRR init is pretty elaborate
<doug16k> other than that it is pretty straightforward
<warlock> well, I thought before it would be cool to flash the bios with my own code, provided I knew how it all worked
<doug16k> at the very beginning, it would do cache-as-ram and use that to initialize the memory controller
<doug16k> possibly even another processor on the motherboard starts the main cpu
<doug16k> or another processor on the processor
<warlock> yea, I believe with arm for example, it actually uses the gpu to setup the cpu
<warlock> well the raspberry pi does right
<doug16k> yes
<warlock> I'm not sure about all implementations
<warlock> I did want to figure out that process
<doug16k> rpi3 at least
<clever> doug16k: the whole rpi line has the gpu bootstrap the arm core
<warlock> I was doing the windows on arm stuff, and it had slow sdcard reading which made it take like 5-10min to boot into the os
<doug16k> this rom project is more a lesson in linking than anything
<clever> doug16k: the rpi does boot in a cache-as-ram mode, but the official firmware hides all of that, and the ram is fully working by the time the arm core begins
<doug16k> yeah, I believe the use of the security processor for platform initialization is the reason there is no BKDG for zen
<bslsk05> ​doc.coreboot.org: AMD Family 17h in coreboot — coreboot 4.14-662-g621ed4c06c documentation
<doug16k> they can't tell you, because then they'd have to kill you
Vercas has quit [Quit: Ping timeout (120 seconds)]
<clever> an AMD cpu with a similar style of startup
Vercas has joined #osdev
<clever> bbl
<doug16k> ok lol. yeah my project would work with real zen machine then
<doug16k> just need to know where to put the entry point code and I'm set
<warlock> sweet
<warlock> you're using qemu right?
<doug16k> yes
<doug16k> oh I see! it's genius how it works
<warlock> just wondering, have you played with the fpga stuff on qemu?
<doug16k> they slap your rom in ram somewhere carelessly, then jump into last 16 bytes
<doug16k> you just have to be position independent
<warlock> pic code, shouldn't be too hard
brynet has quit [Ping timeout: 265 seconds]
<doug16k> what that page is so confusing. it seems to contradict itself
<doug16k> ok I see. yeah they put you in ram and load cs funny, and set cs base funny, and jump into last 16 bytes of your thing
<doug16k> it
<doug16k> is really close to a normal rom
<warlock> is this basicly, just unreal mode?
<doug16k> hardly
<doug16k> only cs base is funny, and cs is loaded funny
<doug16k> everything is 64KB limit
woky has joined #osdev
<doug16k> at entry, cs is 0xF000 and ip=0x0000FFF0 and cs.base=0xFFFF0000
<warlock> well I ask because it looks like 32bit addressing, but yea cs:ip is 16bit
<doug16k> 1st instruction is fetched from 0xFFFF_FFF0
<doug16k> when you jmp, you can't quite touch cs yet, because you need the weird cs base to reach the rom
<warlock> alright I read the bottom of it now, I was just going through it
<doug16k> so you have to near jump. but cs base is 0xFFFF0000, so you have to jump to something in the top 64KB
aejsmith has quit [Remote host closed the connection]
<warlock> so anyway just put code 0x9b00000 and 0x9dffff
<warlock> in that area
<doug16k> yeah it is just 2MB there instead of top of low 4GB
<doug16k> if you set your table thing appropriately
<doug16k> "bios directory table"
aejsmith has joined #osdev
<doug16k> warlock, technically, it is unreal mode at entry, but only in the slightest. not 4GB limit everything, the way most people would imagine unreal mode
brynet has joined #osdev
<warlock> I still don't see where they talk about which compression is actually used that it decompresses to dram
Arthuria has quit [Read error: Connection reset by peer]
Arthuria has joined #osdev
<warlock> just wondering how I would know what to flash dram with so it's uncompressed right
sm2n has quit [Quit: Leaving]
<warlock> that is so cool
sm2n has joined #osdev
<warlock> I could basicly, take over the complete system
<warlock> it uses zlib compression
<doug16k> deflate is good
<warlock> very interesting, your project opened a bunch of questions for me
<warlock> I'm just wondering, can you now, connect to the spi flash storage that psp uses, I would think you have to right
<warlock> just wondering, I would love to modify this embedded frimware stuct
<klange> kinda random, but would anyone happen to know of some solid resources for various vector/polygon rasterization approaches?
<klange> just sort of running through a list of things I've been wanting to look at, and that's been on my list for a looong time...
wootehfoot has joined #osdev
<warlock> do you already know vectors and stuff, or what?
<warlock> klange: if you already know how to use em, then it might not be useful, but otherwise, https://www.youtube.com/watch?v=DPfxjQ6sqrc
<bslsk05> ​'Essential Mathematics For Aspiring Game Developers' by javidx9 (00:47:06)
<klange> Do I know vectors, as in the mathematical concept that somehow has very little to do with vector graphics? Yes, and all of the matrix multiplication go along with them.
<doug16k> homogeneous coordinates?
<doug16k> as in, how w is used to do perspective projection
<warlock> ok then it might not be useful, if you already know how todo it
<froggey> you're talking about rasterization for 2D vector grapghics like cairo right, not 3D?
<warlock> that is, but the same concepts apply to 3d too
<klange> I am specifically hoping to find something to uncloud my head on scanline rasterization techniques. I have been routinely disappointed by a seemingly-endless supply of "graphics libraries" that got all the way down to the bottom only to shell out to... a TrueType implementation.
<doug16k> the clipping is the interesting stage of rasterization
<klange> (No joke, I've found no less than 3 'vector graphics' libraries that were just stb_truetype at the bottom)
<doug16k> once you have it clipped, you breesenham down the edges and fill the scanlines, interpolating between them
<warlock> to be honest, I seem to always go about doing stuff the hard way and just write my own
<doug16k> after clipping, you have a good W guaranteed, so you can replace W with 1/X and multiply X,Y,Z by W to project it to the display plane
<doug16k> now x,y is good, do edge scanning and interpolation
<doug16k> then scan down the edges to fill
<warlock> yeah, really the w plane is just added so you do 2 operations on a plane
<klange> I feel like I'm XY-ing, here, appropriately enough.
<klange> Let me start over:
<warlock> k, sorry probably messed you up
<warlock> I'm all over the place
<klange> I want to build a general purpose 2D-graphics library, like Cairo. I know how to do texture mapping in 3D spaces, I know how to draw lines, I know all the mathematics of dot products and matrices and so on and so forth, I just want to draw some damn text in the same way everyone else has been doing it for the last three decades instead of the cumbersome way I stole from Valve.
<warlock> talking about vector fonts or what?
<warlock> or like standard 8x16 fonts
<klange> I get the general concept of "for each scancline, find the line intersections", but understanding that in itself helps very little when dealing with those pesky glyphs built from myriad bezier curves. They present obvious problems like corners that will trip up naive approaches...
<doug16k> ah you mean arbitrary self intersecting polygon render
<klange> Aye, I believe I do.
<warlock> wish I could help, but to be honest I haven't played with vector fonts
<doug16k> I would be afraid of the hinting. how does that work?
<klange> Little bytecode programs perturb the vertices of the glyphs.
<doug16k> ah
<klange> (It's not as bad as AML)
<klange> (Though it has been the source of _many_ fun exploits, including multiple iOS jailbreaks, and the original Xbox softmod)
<doug16k> yeah I see what you mean. you have to find intersections with bezier curves. you might intersect the same curve more than one time
<doug16k> thinking about it
<klange> For reference, ToaruOS's current text renderer uses a single signed distance field approach, with the fields prebaked elsewhere (with FreeType), and as much as I would love to invest a bunch of time into turning it into something can handle more than the basic character set I built for it three years ago, I'd much rather just bite the bullet and get a real TrueType library into our collection.
<klange> https://klange.dev/s/Screenshot%20from%202021-06-20%2020-56-01.png ← It handles text scaling nicely, and the resulting rasterization isn't too bad even at some smaller sizes. AA basically comes for free, though the approach can get blurry if you're not careful.
<doug16k> do you have a kerning table?
<klange> yeah, uh, one that was populated by hand over time rather than generated from the source typeface...
<doug16k> that explains how the kerning is mostly pretty good
<doug16k> just the W and T are not perfect imho
<klange> Anyhow... what spurred this path [heh] is that I was looking to bring back muPDF which I had a port of way back in the day when I was using newlib, and oh boy muPDF has grown and I really don't want to just rebuild an ancient version, plus it's AGPL so it's problematic in ways even regular GPL doesn't manage...
<doug16k> ah, To looks pretty good in the smaller text
<klange> There's two tables, one for book and one for bold, the book one has more polish.
<klange> So I was thinking I might want to take a stab at writing a rudimentary PDF renderer. I know a thing or two about the format, but... even if I wanted to ignore embedded fonts and shell out to my SDF renderer (which presents all sorts of issues with font metrics...), there's still the matter of all the rest of the vector graphics stuff in the format...
dude12312414 has joined #osdev
<sortie> klange is trying to do raster graphics and I'm (checks notes) trying to figure out how to subtract struct timespecs in all cases with overflow detection
<klange> time is hard
<klange> i should absolutely not be thinking about pdfs... so many other more important things to do
<sortie> Subtracting numbers are funky
<sortie> They can be larger afterwards wtf
<immibis> the nanosecond part should always be in the range where you can add two of them and still fit in 31 bits
<sortie> exists b: a - b > a.
<sortie> wtf
<immibis> yes b is -1
* sortie smokes crystal math
<immibis> crystalmath is the name of one of those crazy freenode guys
<froggey> __builtin_sub_overflow, have someone else do the hard bit for you
<sortie> froggey: I'm building a timespec_sub_overflow :)
<sortie> The tricky part is that e.g. whether you do the seconds first, or nanoseconds first, it might overflow that domain (e.g. above one billion nanoseconds needs a carry that may overflow/underflow)
<sortie> immibis: Yeah they used to hang in #osdev
Sos has quit [Ping timeout: 265 seconds]
Ar0n has joined #osdev
<immibis> probably still hangs in #osdev on freenode because lee is the greatest or whatever
Oli has quit [Ping timeout: 258 seconds]
<GeDaMo> They were adamant that they weren't going to move to Libera ... and they didn't! :P
Oli has joined #osdev
<GeDaMo> Although there is a CrystalMath account registered :|
ElectronApps has joined #osdev
ElectronApps has quit [Client Quit]
ElectronApps has joined #osdev
piotr_ has quit [Ping timeout: 265 seconds]
dude12312414 has quit [Quit: THE RAM IS TOO DAMN HIGH]
gareppa has joined #osdev
gareppa has quit [Remote host closed the connection]
Arthuria has quit [Read error: Connection reset by peer]
Arthuria has joined #osdev
Arthuria has quit [Read error: Connection reset by peer]
Arthuria has joined #osdev
isaacwoods has joined #osdev
wootehfoot has quit [Read error: Connection reset by peer]
ElectronApps has quit [Read error: Connection reset by peer]
IRCMonkey has joined #osdev
Arthuria has quit [Read error: Connection reset by peer]
Arthuria has joined #osdev
freakazoid334 has joined #osdev
Arthuria has quit [Read error: Connection reset by peer]
Arthuria has joined #osdev
freakazoid334 has quit [Read error: Connection reset by peer]
mahmutov has quit [Ping timeout: 265 seconds]
Arthuria has quit [Read error: Connection reset by peer]
Arthuria has joined #osdev
f4t4l_3rr0r has joined #osdev
IRCMonkey has quit [Ping timeout: 244 seconds]
f4t4l_3rr0r is now known as IRCMonkey
freakazoid334 has joined #osdev
Arthuria has quit [Read error: Connection reset by peer]
Arthuria has joined #osdev
flx has quit [Ping timeout: 258 seconds]
gareppa has joined #osdev
pretty_dumm_guy has quit [Quit: WeeChat 3.3-dev]
iorem has quit [Quit: Connection closed]
mahmutov has joined #osdev
flx has joined #osdev
gareppa has quit [Quit: Leaving]
flx has quit [Quit: Leaving]
f4t4l_3rr0r has joined #osdev
IRCMonkey has quit [Ping timeout: 244 seconds]
f4t4l_3rr0r is now known as IRCMonkey
sol-86 has joined #osdev
<sol-86> hi
Arthuria has quit [Read error: Connection reset by peer]
<GeDaMo> Hi sol-86 :)
Arthuria has joined #osdev
srjek_ has joined #osdev
<sol-86> did we talk yesterday? Can't remembr the nickname
<GeDaMo> Yes, first in ##asm then here :P
<sol-86> oh yes!
<sol-86> its because I also taked to another guy yesterday about OS
<sol-86> i hink his name started with G too
<GeDaMo> geist
<sol-86> yes
<sol-86> sounds right
sol-86 has left #osdev [#osdev]
flx has joined #osdev
jeaye has joined #osdev
IRCMonkey has quit [Quit: .oO (bbl tc folks~!)]
flx has quit [Remote host closed the connection]
flx has joined #osdev
flx has quit [Ping timeout: 265 seconds]
<jimbzy> You're the "other G", GeDaMo ;)
<GeDaMo> Yeah, I get that a lot :P
jimbzy is now known as gembzy
<gembzy> :D
<GeDaMo> :|
gembzy is now known as jimbzy
piotr_ has joined #osdev
khan has joined #osdev
<khan> Hello. What happened to these operating system: Alexsmith "Exclaim! OS", Brummer et al. "TabOS"
<khan> And thePowersGang "Access 2"
<hgoel[m]> Probably the same as with most, lost interest or moved on to a different project
zoey has joined #osdev
[Brain] has quit [Ping timeout: 272 seconds]
piotr_ has quit [Read error: Connection reset by peer]
rwb has quit [Quit: ZNC - https://znc.in]
rwb has joined #osdev
flx has joined #osdev
Sos has joined #osdev
piotr_ has joined #osdev
GeDaMo has quit [Quit: Leaving.]
freakazoid334 has quit [Read error: Connection reset by peer]
Arthuria has quit [Read error: Connection reset by peer]
Arthuria has joined #osdev
freakazoid334 has joined #osdev
piotr_ has quit [Ping timeout: 264 seconds]
dennis95 has quit [Quit: Leaving]
sortie has quit [Ping timeout: 258 seconds]
sortie has joined #osdev
pretty_dumm_guy has joined #osdev
sortie has quit [Quit: Leaving]
sortie has joined #osdev
Arthuria has quit [Ping timeout: 265 seconds]
wolfshappen_ has quit [Ping timeout: 268 seconds]
mahmutov has quit [Ping timeout: 265 seconds]
tacco has quit []
khan has quit [Quit: CGI:IRC (Session timeout)]
Burgundy has left #osdev [#osdev]
Belxjander has quit [Ping timeout: 244 seconds]
wolfshappen has joined #osdev
ZetItUp has joined #osdev
wolfshappen has quit [Quit: later]
wolfshappen has joined #osdev
mctpyt has quit [Ping timeout: 258 seconds]
iorem has joined #osdev