#Kvass (vibecoden't)
1 messages · Page 13 of 1
nah just make your own C language but with russian keywords atp
число случайноеЧисло(){
вернуть 4;
}
russian c dialect
why?
#define int число
#define return вернуть
wdym #define void число
число isn't void its prob an int (or some other int variant)
why cant i google translate this 😭
google keeps locking up
its pretty much very correct
for the amount of stupid I am
idk
Did you not read how #define works lol
i shall ™™™•ª¡™£•¡•™¶£¡™ª•£º™¡ª£ªº™¡ªπ£¡™º–£πº¡™£–¡™ operating system
programming elf crap in bootloader still
have to go through string table
i wonder if i should focus on making my kernel for x86-64 too
i want to work on x86-64 for some reason
test OS best OS
this idiot better not explode on me when i start implementing the argument parser idioot
idiot
yo wait i think it will
why is it not in the greg section
:(
wait
wheres the stop marker
i forgot the stop marker 💀
REQUEST RESPONSE REQUEST RESPONSE REQUEST RESPONSE
I FORGOT THE STOP MARKER AGAIN
better
i loaded all the protocol stuffs
i think
idk i have basic crap for a hello world kernel
id say i boot it for my own sanity
im gonna do a rugpull and program my kernel for both ppc and x86-64 because i started to like x86-64 a bit
despite all the genuinely evil bullcrap they pull on me sometimes its pretty cool
Kvass (powerpc (32 bit) and x86-64 OS (+related crap))
MUAHAHAAHAHHAHAHAHAHA
i need to finish bootloader either way tho 
pretty bold for a kernel that ONLY ACTUALLY EXISTED FOR ONE MONTH
so i just woke up but my mac has qemu so i decided to check
this is ppc64 qemu on default settings
with smp 2 
mac99 qemu explodes if i tell it more than one processor
if this is the same open firmware then i can cook 
IT'S EMULATING A WHAT

i need to check their properties 
GREGloader SMP
MUAHAHAHAHAHAHAHAHAHAHHAHAHA
ok so what im running is qemu-system-ppc64 -M pseries-9.2 -smp 2
pseries seems to be some reference platform used for linux development
it conveniently happens to use open firmware and support multiprocessing 
my best bet for 32 bit though is mac99, i dont have the fancy power10 crap 
it is time
i must write that STUPID ASSEMBLY STUB
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
i know barely anything of powerpc assembly
wish me luck 
arguments are passed in registers
the first 8 are at least
so i can use these first 8 arguments to pass the page table and other evil crap
this is the only one i need to pass anyway
maybe the kernel entry address
CRAP I FORGOT ABOUT THE ENTRY ADDRESS
routine is gonna be loading the new page tables into storage register, then clear all buffers and set the registers to 0
i shouldve bothered with a stack 
allocate some dedotated wham
1MB stack 
yeh
Just call the main function or jump to it?
not that simple
i need to switch from the open firmware page tables and clear the tlb crap or something
That’s normal 
switch from those to the page tables i made in the bootloader 
On limine your meant to make your own page tables
fair
but on limine the kernel is at least able to be booted, its different here i need to clear the idiots 
the boot function needs arguments that are probably just a bunch of precompiled registers
im not gonna write my register builder idiot in ASSEMBLY 😭
especially on powerpc
that crap is almost foreign to me
actually crap
i have to pass 24+ registers
💀
im gonna have to powerpc assembly more than i wished to 
Pass a pointer to data structures?
true
mac os 9 platinum looks like metallic greek architecture
it looks like architecture in general actually
also whoever placed the thumbsup reaction onto the kvass thread i am crashing out
500 mile struct declaration
wait why am i allowing user access
fixed
im gonna go light mode
its day today
@raw prairie im gonna go thank you for your stupid manual repository i dont have to bother digging through all of my folders to find ts 😭
:3
my headphones just died
i have to tolerate my really loud crappy gaming keyboard
these manuals still suck balls though
more ppc paging abuse
yall at least i dont need to write another mmu implementation in the kernel
:kekw:

code reuse
i still havent committed yet
legendary tier reference
abandon all hope ye who enter here 
here be dragons
i feel like the enter kernel routine being a descent into hell makes the most sense 
im gonna add the translation for this so nobody bothers
actually honestly im gonna keep it in latin
its for the greater good of humanity 
i compiled all the segment crap and now i cna enter kernel
PPC asm is very pleasant to write
also mostly pleasant to decode in an emulator
i hope so
i never wrote it but it has a bunch of instructions
typical for RISC
â
though those are pretty pointless labels these days...
This hasn't been true for a while by now
I'm aware
risc really means is that the instructions are simpler
imo
theres more of them but theyre simpler
like theres a few mov instructions instead of one where one mov can do a register-> memory, register->register and memory -> register
The actual characteristics the make the distinction now are mostly things like insns with two ins and an out, and load/store being explicitly distinct from calculation instructions.
load store architectures are pretty cool
they make a bunch of sense imo
ok so i assume i should disable address translation before doing anything
i should go get the physical address of my assembly code 
which the firmware is most likely willing to do that for me
MUAHAHAHAHAHHAHA
the firmware claims that my physical address is equal to the virtual one
how do i check and make sure its not BS'ing me

i could try to set a register value
that seems like a good idea
.!t qemu
Run QEMU with following flags: -M accel=tcg,smm=off -d int -no-reboot -no-shutdown
ok so -d cpu is reg dump
👍
it prints a kiloton of logs
so beware
crap d cpu prints so much garbage it nearly explodes
you can do info registers in the qemu monitor
👍
what
dude
is a double word 64 bit 
im using some other reference to find documentation here
"word in memory addressed by EA is loaded into the low order 32 bits of rD"
powerpc is primarily 64 bit i guess

apparently powerpc registers dont seem to have letters to them
li 16, 0xFF loads 0xFF into r16

maybe they do
but my assembler is crashing out
yeah
- byte: 1 byte (8-bit)
- halfword: 2 bytes (16-bit)
- word: 4 bytes (32-bit)
- doubleword: 8 bytes (64-bit)
np
im trying to do li but without the argument its exploding rn
lemme try adding it
yeah you need -mregnames to use the r prefix
IBM evil
the official syntax doesn't actually include it
iirc that shit's a GNU extension or something

officially li 16, 0xff is how you would write it
however, you could just only use GNU as and not care
this is what I do
gnu as not being ass for once
because this is cancer
im worried my asm routine krilled itself
lemme try fixing it
EVIL li
power washer assembly would be nice if it worked
also everyone uses GNU assembler these days
or whatever evil bullcrap llvm has
true
so everyone uses gnu assembler 
idk who at ibm thought of this cancer
because the assembly is very good actually
I mean there's whatever the hell IBM XL C uses under the hood
IBM are the same people that made addi 3, 3, 3 a valid command
(add 3 to r3 and loads to r3 i think excuse me for my french
)
yes iirc that's r3 = r3 + 3
fair enough
i like that it uses what x86 people would call intel syntax
its not pure cancer
Who ever thought this was a good idea
Genuinly
no its still true
people overdo the "cisc and risc are meaningless distinctions in the area of performance debates" and start saying "cisc and risc have NO MEANINGFUL DIFFERENCES anymore" which is obviously wrong
circus
im looking at openbsd code for power mac SMP
insanity
im not gonna bother w/ powerpc smp
maybe only on that fancy ibm emulated board
idk p series or something
i want to do this kernel on x86-64 too after all
(i renamed the thread because its not x86-64 YET)
the early ones are allegedly so simple that 2nd year university students are supposed to be able to implement them in verilog
(which is supposedly one of the homework assignments we'll get near the end of the semester)
oof
ok so time to keep working on this
powerpc assembly is nice because motorola worked on it 
idk m68k assembly
but currently powerwasher asm is pretty pleasant
no comments on this 😭
also for the powerpc illiterate people, lwz loads from a memory location from a register + offset
lwz [destination], [offset]([register with pointer])
its an array 
most unexpected MSR bit
this is quite nice
ae
i have a second routine happening in real mode (physical addressing)
i have to disable this crap, jump there and do a hopium
that it works 
the dante's inferno quote fits 
no im not gonna abandon hope
i ye entered here but im not abandoning hope 
also crap how do i flip the bit off
andi wont work, that uses 16 bit integers

i have to do a lis and ori or something
guys i entered real mode
physical addressing
im gonna call it both for both the powerpc and x86 people
i have to invalidate the TLBs now
TLBs nuked
segment registers 
i need to wipe like all of the registers afterwards too
im in a predicament(TM) where IBS corporation decided to enable address translation as soon as i set the MSR
which is like, fair enough but uhhhhhhh
Dude
i did a funny
on interrupt a special register stores the MSR, and another one stores the instruction pointer
in my infinite wisdom, i will simply pretend to exit an interrupt 
mtspr 26, r5 # SRR0 (instruction pointer)
mtspr 27, r29 # SRR1 (MSR)
# Enter stage 2
rfi
MY TEST KERNEL KEEPS ERRORING
THE ASSEMBLER IS EXPLODING 
PLEASE I BOOTED IT ALREADY STOP ERRORING
😭
NO MY BOOTLOADER HEADERS ARE WRONG
AAAAAA I EVEN DID THE PAGING RIGHT
no elf parser
shut up the .GREG section does exist

what a POS
(point of sale)
now I wanna work on my bl again lol
insanity
i somehow got the weirdest paging in computing (imo) better than i got my elf parser 😭
bruh string table died
THAT STUPID STRING TABLE CAUSED ME MORE PROBLEMS THAN THE REST OF THE BOOTLOADER 
sometimes id rather just execute the framebuffer
You should use the frame buffer as the heap for a user program and watch it run
sparcstation firmware would use the framebuffer as the stack and heap during early initialization before ram was set up
and you could see clown vomit dance on the screen for like half a second
thats pretty cool tbh
ohhhhhhhh
i think it was because the motherboard had some vram soldered into it which was guaranteed to be there
but all of the ram sticks could be removed
so it was safer to use the former
open firmware brianfart
anyways so i apparently did the right math to find the PTEG (i watched really closely over that stupid function) however i broke the part that actually fills the page
dont tell me i need even more surgical precision setting the page table entry 
you're supposed to fix this by setting it in SRR1 then rfiing into wherever you want to be
like clear IR and DR, set SRR1 to that, then set SRR0 to your real-mode code address, then rfi, and you are now at that address in real-mode
and ofc the opposite works as well
i didnt clear ir and dr i dont think
whatever i have another problem
also i cant find what API is apparently 
the API thing in the PTE
is it just the 6 bits after the segment register or something
i think ive determined it right because qemu does get a hit but something else is definitely really wrong because qemu refuses to emulate after that one memory access
i was using a bit field for that but im reconsidering
i should try again 
new struct 😭
RPN is genuinely evil 
i think its the one that i did wrong

actually i dont know whats dying on me
what tf 
yall my paging implementation was done cooked in the worst way
i was writing to the physical address of the page table instead of the virtual one 
oops
ALL YOU NEED IS MOV

what happened?
lemme explain
so it has virtual mapping functions
and i store my page tables at 0x10 00 00 00
they are 0x10 00 0 in physical memory
-# its easier for me to count numbers if theyre spaced sorry 
anyways so a thing in there
a group idk
its supposed to be in 0x1AE3C0
they are in 0x100AE3C0 in virtual memory
so far so good
however open farts mapped them at 0x1AF3C0
ITS ONE PAGE TO THE RIGHT
WHO DOES THAT 😭
it seems to round page starts UP and rounds page size DOWN 😭
💀
this is utterly evil
im gonna go tell it to map -1 page to the left 
sun microsystems doesnt deserve the praise 😭
maybe its a qemu thing
if its an everything thing thats good because my crappy fix works everywhere
if its on a real macintosh then im done DEAD
maybe 
hopium
it uses a supposedly accurate open firmware implementation
either used by sun or made by the inventor
im thinking of making a test function which tests the offset of the page map thing
somehow
idk 
i have a translate function except if i had an incident with this i dont think i can trust it 😭
i told it to start one page left
time to test 😭
virtual memory works
\
physical time
i cant with ts
who made it
LMAO ITS TO THE RIGHT AGAIN
AHAHAHAHAHAHAHAHAHYAHAHHAHAHAHAHAHASGHJDGASDHJGASDGHJASDGHJASJDGHAJSGHDGHJASDGHJASHJDASGHJEDHGASD
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
happens to the best of us 

did i saver
save
maybe i should just do my accesses with -0x1000 except it might break some maps
still one page right
this is gotta be some sisyphean punishment or something
please speedi need this

A
DUDE
who made this
:(
ive made it worse
oof
qemu: it's wrong, now cope 
im thinking of just telling the mapper to subtract the pointer by a page
tomorrow im gonna go keep meatgrinding the stupid mmu crap
i do be wonder(TM) if my binary is loaded wrong too
i mean its loaded
its just that map sucks

What happens on giving it perfectly aligned addresses
that
it maps it one page to the left
VRO 
today im gonna torture open farts

even though i dont want to my mapper does have support for having multiple mmu's 
idek how to fix that mapping issue 
sadge
hm
how about a huge warning
the jank fixed the problem
why would you map anything at 0 anyway
actually no wait

some hash crap can randomly explode
i cant fix the problem anyway
if your kernel dies dont hold me accountable
wait crap i forgot to address the Innacuracy(TM) for the binary being loaded
because screw you that might be broken too 
THATS ABSOLUTELY DONE FOR
OH No
OHIOWEFWKJLEFJKLWEJKLRFEWJKLFJKLWEFJKL
qemu's "100% accurate open firmware implementation" 💔
comply harder idiot
anyways i have to probably use map-in instead of map
map-in chooses the virtual address for me though
i cant anymore
they better send those patches to me 
who in their right mind broke the translator THIS badly

if map-in is just as cooked id rather just make my MMU implementation map for the firmware
point of sale (POS) kiosk
yo so like map-in doesnt even exist

they ;oed
lied
what does mac os x do 
what mac os does is it maps address virt to virt????
so what?? map physical address to the virtual one 
ok so since i need this to run on QEMU im gonna actually just do the penultimate jank and rob OFW of its mmu crap 
or not
i genuinely dont know
idiot broke
:(
for some reason the LENGTH broke the translator
💀
ok what though
i swear if those arguments are in reverse
THE ARGUMENTS ARE IN REVERSE
DUDEEEEEEEEEEEEEEEEEEEEEEEE
me when stack:
shouldve been a red flag when i found out open firmware works on FORTH
you dont translate to 1 you jank implementation
💀
i suck at programming
LMAO

IM TRANSLATING EVERYTHING TO 1
rpn stands for "real page number"
yp
yo guys
i booted the kernel
@grim lance do you want an OS that sets a register to 0x4567 
sure
also when i make it do framebuffer theres gonna be a thnig
macs run on 256 color by default
possibly influenced by some idiot at sun microsystems
so i have to make a palette for 256 colors
just do standard VGA palette
lemme check what it actually is
i kinda forgot but i didnt like it (since it didnt work in my case 😭)
i mean thats ok colors
it’s RGB 5-6-5
5-6-5 is 16 bit
but it’s 8 bit gfx 
whut
oh no sorry

anyways so i can do a palette of 256 colors and the individual colors can be 24 bit
like the palette is an array of 256 24 bit colors
so 256 RGB colours
yehs
idk i want to make a palette thats easy for software to translate to from like 32 bit colors or smth
3-3-2 seems reasonable imo
isn’t 32bit just RGB with an alpha channel
yes
still tho :trL:

what if i just pull of a NeXT and have it go grayscale
better idea
2-2-2-2
rgba
actually grayscale sucks
hm
what if the client program can choose 
i should go check if the fart buffer even works
framebuffer no work
did i not map it properly
so my MMU implementation died, again
maybe its an open fartware thing
however the framebuffer address is physical
at least i know that 
genius idea: store page tables in the framebuffer 
its not working for no reason, literally 
this is evil
any vmem access i tell qemu to do it explodes
just make it not die
it dies for no reason
anyways i rewrote my PTEG generator 9000
this should be it
nevermind this is not it
i have no idea why this broke
im getting a stroke from ts
retro rocket moment
3d rendering on powerpc 
don't you need to be able to draw lines and boxes for a window system?
you use somthing called x11
Whaaaat? Pfft, why would you do that? 
to not have a kernel composetor
:p
speechbubble
ok so while i didnt type here, @raw prairie gave me this LSD trip (and/or) earthbound background for a demo to run in my test kernel :trel:
have QEMU mmu spam for proof
im gonna now have to add 3-3-2 8-bit RGB support to have it run on real macs, since they use the mode
however the problem is that i need a color palette
and so i need a generator 
which i will make
hopium overdose on the left
kvass summarized in one image
JOEBIDEN's PC 
ok so im adding palette support for 8 bit color, currently i have 3-3-2 RGB and grayscale
you can make your own custom palette for your OS if you choose to 
except you have to use it the entire time until you restart
unless i make a thing where you can re-enter the bootloader 
wait that sounds useful actually
idk you can call for a different palette somehow ig
weird demo
something broke
😭 this color is so inaccurate
oh
the white is a color which id like to associate with a certain substance
but cant

anyway
im thinking of making a palette which is essentially HSV but mildly evil
its slightly better now
so im gonna now add monochrome tints
awesome™
dont you want a [checks notes] DEC VT220 larp?
also theres straight up a palette request
in the framebuffer req you can ask it for a preferred palette, and then theres another palette request that has options for various palettes
if you choose a custom palette you have to set that palette in the palette req
if you choose monochrome you can pick a tint,
if you choose RGB 3-3-2 you can actually modify the brightness
since ive noticed the default brightness may suck balls
(i suggest you increase it by 0x10)
copies are monochrome...
no i dont want you involved in the mintsuki conspiracy theory
its only for the elites
copies are poopoopoo
ok so after i run my test kernel on real hw im gonna really start working on kvass
im evil im declaring a struct inside a function
im reworking bootloader my binary doesnt want to be loaded anymore
oof
its just the request crap
at first i pulled a limine with the request having a pointer to the response, then apparently that might just fail badly so instead im just gonna have the response be in the request

doesnt limine actually store a struct instead of a pointer
no it stores a pointer
ok so i cant just have a struct in a struct named i
the struct is global
so i have to call it headerI or smth
greg_headerI 
yo
tomorrow im not gonna deal with this crap today
send me an ISO
dude

also no ISO you dont need one, you're getting a stuffit archive or something
whyyy
iso is more convenient to burn to cd
no you cant just hold down C
the boot process is gonna be brutally inconvenient 
what
ah
idk i guess you can make an iso
i do have one
im going to sleep though ima just do it tmrw 
ok so my plan is to add
- modules
- memory map
to the bootloader (currently)
i feel like boot args are a little dumb rn
maybe later
im gonna reuse the same broken config parser from borscht to specify what modules etc
also ATI modesetting, for 32 bit color on most macs
not all sadly 
im thinking of the only argument that you really need to specify for gregloader being the config file you wanna use
i dont want to have a menu like in grub or smth
cba
xlatb
ok so im gonna go upload my test stuff, commit bootloader, then i work on both the kernel and the bootloader concurrently from now on because they depend on each other
im writing the docs in like 59000 years
i have to maintain repos on two servers because i have both trust issues and dont want to make anyone depressed 😭
@grim lance yo greg-test-kernel has iso image for macs
should work
you can burn it to a cd but you still have to figure out the open fartware console crap
GREGGS
the picture being in monochrome implies it being a copy 
gnu's involvement in the new world order
on wikipedia, the free encyclopedia
im pissed, what should I do
run trippy powerpc kernel on qemu
im gonna go play tf2
shoot people as fat russian man with spinny expensive gun
then become invulnerable by german psychotic doctor with dumb inventions
then shoot more people with expensive gun
im gonna go bill the red team the prices for my bullets so theyll go bankrupt afterwards
peak video game indeed 
sprigglediggle
since you people hate hash table paging so much, im gonna use a radix tree for literally everything in my os 
first of all, device management 
hashtables kinda goated
Radix trees are not bad for a lot of things tbh
Like in memory block devices
true
Radix trees are cool
I will now make a Radix tree impl because I want to and that's the only reason.
i need to make a generic radix tree at some point too
my scheduler is gonna work on radix trees
my vfs is gonna work on radix trees ||NOT||
just use a circular linked list
nah
😭
its some weirdly intricate system of device management and hopium
fym?
a circular linked list is way simpler
you need more entries? allocate another page
im worried my brain works backwards
is it the one with like
a pointer for next entry and prev. entry??
heck the thread object that you schedule with
can have the pointers
so there is no extra allocations
circular only needs next
oh
and you just loop though it
its perfect for round ronin
as it gets implemented for free
what 
oh
like have a list of sleeping tasks
a list of important tasks
and you can have a task that its job is to wakeup sleeping tasks in the normal qeue
piroity could be for drivers and stuff
fair
if prioirty isnt empty go there until they are all blocked or sleeping
what if you just have a timer and every time a process is ran you just reset it to a higher value than the lower priority tasks 
well a timer wouldnt run as a thread context
it would be an interupt context
but like your network driver may be under a thread
or usb
ig
idek
ive never gotten to writing a real os before this crap, i only know somewhat basic crap like virtual memory
the algorithm insanity is uhhh, insanity
i feel like just making an order stack and every time it goes empty go through the proces lists and fill it up again
so i didnt work on this
RIP
ima try locking in tomorrow and getting a terminal emulator
I wouldn't be shocked if flanterm doesn't work on ppc
be or le?
because if it's le it should be fine
BE of course
nothing older than POWER8 runs in LE by default
and LE mode in those older CPUs is kinda a hack
ah
and none of the firmware or hardware expects you to use it
just try it ig
it's not my OS lol, I was just commenting on the matter
oh 🥀
It’s worth a try
why wouldn't it work
and also even if the default framebuffer backend doesn't work, write your own that does support BE
endianness problems, also iirc (but I could be wrong about this, haven't looked at it in ages) it doesn't support anything other than 32-bit color?
yeah it doesn't support anything but 32bpp color, which is why i had to copy the flanterm backend and modify it
but i dont see it assuming LE anywhere
endianness issues kind of only arise when you convert between data types by bypassing C's type system, or I/O with external data
the mac framebuffer seems to be little endian
ok thats a big problemo™
what happened to x86-64 in the thread title
i need it to support grayscale, 8-bit, and 16 bit colors too
especially grayscale and 8 bit
take a wild guess
the motorola manual calls it "optional"
qemu doesnt emulate it im pretty sure 😭
just copy my thing and add support for 1-bit and 8-bit color
1bit 
nah i have 8 bit monochrome
also idk if i should really use flanterm
i mean it sounds like it would work but like

It's a full ansi terminal implementation!
Also flanterm can be made to work with other backends too
You can write a hardware accelerated renderer for it if you want
Or a VGA backend
truetrue
ehhh fine ima bite the bullet and use the idiot 
little endian (surprisingly) framebuffer of doom
also that sounds difficult
from my understanding that would be like, loading textures and then telling the gpu to place them somewhere
i genuinely expected the byte order to be difficult however the framebuffer does seem to be LE
Userspace makes this piss-easy
Flanterm isn't just for kernel mode
true
idk i just have some concerns over some stuff like the init function being 50 miles long
its more of a mild inconvenience
im thinking of using this font for kvass
IBM please dont sue me
i found it in here https://github.com/viler-int10h/vga-text-mode-fonts
A big ol' pile of bitmap fonts in raw binary format, for use w/Fontraption font editor (and anywhere else) - viler-int10h/vga-text-mode-fonts
PC-IBM/PS2THIN4.F16
PS2THIN2 is also good
actually THIN4 is better
ima use PS2THIN4
gregloader is getting memory maps and page table info requests
i need those
(who doesn't)
obv on the first one, but i need the second one since powerpc page tables dont work like they do on x86 and since it is my bootloader i know how it works so im just gonna use the bootloader page tables
i see no reason why it would explode like it supposedly does on x86
also not reusing them would mean wasting TONS of ram
i want to reuse them for some reason
practically the bootloader only needs to share the crap used for picking hash table entries, htabmask, and the virtual address of the tables
how am i gonna map them without knowing anything
the request has a "map page tables where" thing too
if i ever port this bootloader to x86, it will not have crap like this
since x86 probably does not do this kind of crap
i should honestly just do one architecture specific request or something
instead of paging
DUDE
ITS MARCH
PLEASE
ITS MARCH
i have my window opened im currently being fried
also im thinking of adding a greg_arch request instead of paging or whatever
since i need to give the kernel a bunch of other crap too
mmio locations for PCI configuration space crap, for example
im crine theres no leaves on some trees yet
im getting fried before the trees have leaves
😭
that's literally 89f what do you mean 😭
that's not even that hot 😭
it hits like 110f (43c) over here frequently
32C already?
where the fuck are you
I barely have 13 here and I'm in like the middle of the northern hemisphere (around the 45th parallel)
murica 😭
currently
im not gonna respond correctly to sane weather when i go back to europe
yeah true
i remember when we got like 124c in may at some point and so the school bus had like literal ice cold bottles of water
😭
(they were all late)
it's currently 40C right now over here in Phoenix, AZ, US
It’s 70f in Florida rn
in sane measurements
70f=21.111 °C
Dawg that’s room temp
hell nah
24 is room temperature imo 
mildly hot
true
im gonna go pass the kernel this absolute struct of all time
you get to ask the bootloader to map the page tables btw 
i might use this same request thing for mapping the interrupts somewhere
well yes
Let me guess
but the interrupt vectors are at 0 physical
There is some power PC bullshit
im not sure if this is correct but yes i guess
so id just add a request thing to map them
yall openpic is gonna be genuinely brutal 
nah
or MPIC
In order to compete with Intel's Advanced Programmable Interrupt Controller (APIC), which had enabled the first Intel 486-based multiprocessor systems, in early 1995 AMD and Cyrix proposed as somewhat similar-in-purpose OpenPIC architecture supporting up to 32 processors. The OpenPIC architecture had at least declarative support from IBM and Com...
its an apic ripoff
its probably a multiprocessor thing
i guess its used for external device io too
IBM used a MPIC based on OpenPIC 1.0 in their RS/6000 F50 and one based on OpenPIC 1.2 in their RS/6000 S70. Both of these systems also used a dual 8259 on their PCI-ISA bridges.
POWER machines with the original intel pic 😭
i mean its not the primary one but its still funny
https://wiki.osdev.org/Open_Programmable_Interrupt_Controller
Limited information on the OPIC can be found on the indexed Internet.
DUDE
omw to implement the most braindead obscure devices on planet earth
i mean thats the openpic
ibm has mpic based on it 
found the spec

osdev wiki skill issue]
i found the MPIC one
its more relevant because it mentions powerpc a few times
ok so ive noticed interrupts arent that important 
we polling ps/2 with this one 🔥🔥🔥
ADB seems to be made to not use interrupts
Nooooo

Interrupts are very important
Esp for timers
powerpc has a timer interrupt
im pretty sure i know how to set up that one
or at least its documented
doubt
You will burn the CPU
MMIO of doom and evil

Apple Desktop Bus (ADB) is a proprietary bit-serial peripheral bus connecting low-speed devices to computers. It was introduced on the Apple IIGS in 1986 as a way to support low-cost devices like keyboards and mice, enabling them to be connected together in a daisy chain without the need for hubs or other devices. Apple Desktop Bus was quickly i...
if the mouse is known to be at address $D, the computer will periodically send out a 1-byte message on the bus
To a mouse this means "tell me the latest position changes"
we have to poll EVIL PS/2 with this one 🔥 🔥
imbalance of weather in various parts of the world

linux sources are unreadable
requests(TM)
ignore the broken-ish palette
2.5 gib of userspace
i reserve too much space for nothing
i should place the page tables right after the stack
why do you need 256MB of framebuffer
uhh idk big displays ig??
/gen
im worrying over nothing but idk
1920x1080 @ 32bpp is still only 8MB 😭
and no PPC Mac would ever even be driving a display that large at that color depth anyways
true
most of their GPUs don't even have that much VRAM in the first place
also probably powermac g5s could
you can upgrade the GPU 
stock probably also can but idk
not sure
not if you're relying on OF to do anything
OF only supports specific models of GPUs with specific PCI ROMs
well im not after the bootloader so ehhhhhhh
true
oh right crap
OF supports only some gpus
so if you replace the GPU, OF just won't give you a framebuffer
true true
after you set up framebuffer? 
but anyway still tho
ima go rearrange it so i wont waste so much ram
virtual address space
whatever
even 4K @ 32bpp is still only like 32MB 😭
yeah
isnt HDR something like more bpp
not exactly but idk
HDR is some fancy crap nobody ever has 
yeah iirc it's like 10bpc / 40 (?) bpp
idk if they drop the padding in 10bpc so it still fits in 4B
idk I'm not a big display nerd
all of my framebuffers are 16/32bpp and relatively low res 
720x448 @ 16bpp for the win 
my of default fb is 1024x768 (varies on mac model, i have an ibook) with 8 bit color (mandatory)
you can set a palette
i made an rgb 3-3-2 generator which made the white a bright yellow (not sure if thats a good thing 😭)
ATI cards have some modeset trickery which allows you to have 32 bpp color
but i think thats ATI card only
qemu allows you to have 32 bit color
Radeon cards are really easy to mess with the framebuffer on yeah
their registers are very very well documented
I do that on the Wii U and Xbox 360 
powerpc gaming console programmer experience vs powermac programmer experience

nah, we all just the BATs 
breh 
i use the page tables
i need those anyway
its not exactly a computer
i only have 4 of them (homebrewers these days with their 8 bats)
yeah they're pretty necessary for doing a proper OS
true
mario kart is an operating system /hj
thankfully I don't do much of that, bootloaders and other such low-level code ftw 
i have good mmu code
i can map crap 

