orthoplex64 has quit [Remote host closed the connection]
orthoplex64 has joined #osdev
<Lugar>
i tested positive for covid so now i get to stay home and code more :]
<Ryanel>
Howdy Lugar. When I got covid a few weeks back, that's exactly what I did too. It was surprisingly productive. Covid sucks though, so do feel better!
<Lugar>
thanks
<Lugar>
since i have over a week im gonna move my os to uefi
<klys>
you might learn a bit from when I was trying to port acpica to lk
<bslsk05>
acpica.org: Version 20200326 | The ACPI Component Architecture Project
Oli has joined #osdev
[_] has joined #osdev
<heat>
no, it's dual licensed
[itchyjunk] has quit [Ping timeout: 240 seconds]
<heat>
or triple licensed
<heat>
something like that
<heat>
you can pretty much use it everywhere
<heat>
like every big OS out there(mac, freebsd, linux, fuchsia, etc) uses it
<klys>
all I mean to point out is that mine is still triple licensed
<heat>
the only one that doesn't is windows I believe
<klys>
16:30:30< Zero3K@freenode> how do I split files from one commit to another?
<geist>
well, if they're here i might be able to help them
[_] is now known as [itchyjunk]
<geist>
forgot that there might be another channel still on freenode
<geist>
that's still around?
<klys>
yeah
<geist>
any activity?
<klys>
yeah: the above
<geist>
hah that *is* the sum total of activity?
<klys>
crystalmath was on last night
<kazinsal>
ha
<heat>
i think we won
<klys>
he was answering web-85 on something with x86-64 asm
<klys>
your friendly neighborhood spammer was on last week
<klys>
somebody poked in another x86 asm question on the 12th but left too quickly
<klys>
and njugush_ said hi on the 30th, those are all my scrollback
<geist>
while i dont particularly want to think of it as a competition or whatnot, i'm glad to see we didn't bifurcate the community too much with that
<kazinsal>
yeah we all moved here pretty quickly
xenos1984 has quit [Read error: Connection reset by peer]
<heat>
yo thank god the spammer still goes to freenode
<kazinsal>
he's showed up here a few times but I bet no one on the freenode channel has op
xenos1984 has joined #osdev
<kazinsal>
so no one's around there to ban him
<heat>
maybe the emperor himself
<joe9>
Does this instruction work in amd64? http://okturing.com/src/12994/body . I can get the JMP to a label and CALL to a symbol work fine.
<joe9>
But, the jmp to absolute value does not.
gog has quit []
<joe9>
I tried with different segments cs, fs, etc.
<joe9>
I get a general protection violation when I try it.
<heat>
except gs and fs but those really are special (for TLS)
<joe9>
does the jmp absolute address work?
<heat>
doesn't jmp QWORD PTR jump to what the address it's pointing to contains?
<joe9>
oh. I thought it was the address.
<joe9>
not, the address of the address (jump location)
<joe9>
REX.W FF /5 JMP m16:64 D Valid N.E. Jump far, absolute indirect, address given in m16:64.
<joe9>
heat, I think you are correct. Thanks.
<joe9>
it is an indirect address not the absolute immediate
<klys>
oh yeah good one picking up on that ptr thingy
heat_ has joined #osdev
heat has quit [Read error: Connection reset by peer]
matrice64 has joined #osdev
<heat_>
stupid internet
<heat_>
anyway
<heat_>
<heat> generally in x86_64 you just do (ATT syntax) mov $addr, %reg; jmp *%reg
<heat_>
<heat> or a pushq + ret
heat_ is now known as heat
<klys>
right, > good one picking up on that ptr thingy
<heat>
the first one would be like, what, mov reg, addr; jmp reg?
<heat>
yeah good to know I can still read a bit of intel syntax ;)
fwg has quit [Quit: .oO( zzZzZzz ...]
<joe9>
yes, mov $addr, %reg; jmp *%reg this works fine.
<joe9>
I was trying to figure out why jmp absolute_address would not work.
<joe9>
jump relative works fine too.
<joe9>
it makes sense now. Thanks.
<junon>
For anyone interested, UVB76 is being hijacked by pirates at the moment
<junon>
In response to impending Russian invasion
<kazinsal>
oh shit
<junon>
there's a live stream on youtube if you search for it
<kazinsal>
that's awesome
<joe9>
what invasion?
<kazinsal>
ukraine
<junon>
they've been playing nirvana on it and were using the trackers to spell out anti-putin russian strings, trollfaces, Metroid game cover art, and Ukrainian coat-of-arms
<klys>
pirates?
<joe9>
has it started?
<junon>
klys: yeah, RF pirates
<klys>
radio frequency?
<junon>
joe9: not yet, but looks like it'll happen within the coming week(s)
<klys>
I had thought you were talking about a boat for a minute there
<junon>
klys: yeah. uvb76 is a well known russian military communications frequency that's been in operation for 30 years or so. It's never had pirates on it until the last few days.
<kazinsal>
jesus christ, they're blasting out RHCP over the Buzzer
<kazinsal>
this is amazing
<junon>
Apparently it was seeing some huge shifts in activity prior to the mobilization of russian resources to the border of ukraine, so someone has hijacked the frequency and used the blotters to spell out a telegram invite link to send music/image requests to
<klys>
envision if you will, a radio that communicates digitally, perhaps encrypted, and at a selected rate, changes its frequency.
<zid>
Whereas something like 10 says "An error code containing... is pushed onto the stack"
Oli_ has joined #osdev
<joe9>
thanks, that makes sense.
Oli has quit [Ping timeout: 250 seconds]
<joe9>
zid, so the stack on entering the interrupt handler is: SS, RSP, RFLAGS, CS, RIP, error code (if any), Return PC from the vector table?
<joe9>
I am not sure of the Return PC from the vector table.
<joe9>
just want to double check if that is on the stack too.
<joe9>
the interrupt handler is CALL'ed so I assume that puts a PC on the stack too.
<joe9>
figured it out. sorry for the bother.
<zid>
You wouldn't get very far without RIP being there
<zid>
iretq to.. somewhere!
<joe9>
yes, that is true. I was talking about the return PC from the vector table.
<zid>
the what
<joe9>
if the interrupt handler is a call ..
<joe9>
it is system specific.
<zid>
pardon
<joe9>
please ignore. In this os, the interrupt vector table is a bunch of call's.
<clever>
on my main platform of interest, the vector table is an array of entrypoints, and the cpu will push the status and pc registers onto the stack before jumping to one
<clever>
all errors are in MMIO space, and i am fully responsible for preserving every other register
<bslsk05>
github.com: lk-overlay/intc.c at master · librerpi/lk-overlay · GitHub
<joe9>
I guess having a single point of entry..
<zid>
You'll need unique code to deal with each exception anyway, so you may as well.. point the interrupt there, is my thought
<zid>
even if it does duplicate an entire couple of instructions
<clever>
my ExceptionHandler macro in interrupt.S is an example of that
<clever>
lines 16-44
<clever>
its just generating a duplicate block of 4 opcodes for each exception, with a different immediate to load into r0
<clever>
but it is also using a branch opcode, to jump to a shared tail, that finishes the setup before moving into C land
<zid>
You've crunched all the icache and branch prediction etc anyway by taking an exception at all otherwise I'd be more wary of duplicating all the intros
biblio has joined #osdev
srjek has quit [Ping timeout: 240 seconds]
sdfgsdfg has joined #osdev
dude12312414 has quit [Quit: THE RAM IS TOO DAMN HIGH]
bfxfer has joined #osdev
Sos has quit [Quit: Leaving]
bfxfer has quit [Ping timeout: 256 seconds]
wikan has joined #osdev
* wikan
waves
* GeDaMo
particles
<blockhead>
:)
<wikan>
:)
<gog>
:)
<wikan>
i logged in and i am sleepy now :P
<wikan>
must drink coffe and tea
<gog>
i had a coffee on my walk home. it was delicious
bfxfer has joined #osdev
<wikan>
how much sugar?
<wikan>
i love coffee with pistachio mmmm
nyah has joined #osdev
<CompanionCube>
heh, someone here recently mentioned mainframes, then elsewhere someone mentioned a UNIX port for the 370, apparently was from V6.
<CompanionCube>
that's probably contemporary with the other software mentioned here :p
<gog>
no sugar
FatalNIX has joined #osdev
<wikan>
I switched to text mode. Love it. Sometimes I use Xserver if I need to ru
<wikan>
n firefox
<wikan>
it changed my mind.
<wikan>
started to read man :D
<wikan>
i didn't knew man is so helpful
<wikan>
and now I am trying to find out how TTY works.
<wikan>
i use tmux and i have no idea how programs prints to frames and fetch correct width and height of tty
<GeDaMo>
curses, termcap
<wikan>
yea, but how tmux catch output and put to frame
<wikan>
tried to find in sources. I read code still.
<wikan>
it is one of many question i have about operating systems in general
bfxfer has quit [Quit: Client closed]
<GeDaMo>
Presumably it starts programs as children and replaces their stdin and stdout
<zid>
dup2 and fork is a normal way
<zid>
but, to query the terminal you can just speak vt to them
<zid>
which is abstracted behind terminfo / termcap if you want
<wikan>
hmmm, reading dup man. I have seen "oldfd" in tmux sources. It is good hint
<wikan>
oldfd or old-something tty related
<gog>
the original file descriptor that you're duplicating
<wikan>
but why duplicate?
<wikan>
if I run prog2 from prog1 it will print to prog1 tty
<wikan>
still can't see how tmux catches output
<zid>
you execvpe it or whatever and its stdin and stdout will be connected to your stdin and stdout
<wikan>
maybe i am too stupid ;)
<zid>
so you just move your stdin and stdout around along with some extra fds to act as your real stdin and stdout blah blah
<zid>
just google for a dup2 example I'm sure it'll explain it
<wikan>
ok, thanks
<zid>
the trick is that fork() preserves the fd set that the parent had
<zid>
so you fork() and then the parent and child can communicate over a pipe you made and replaced the child's stdin/stdout with
<zid>
and the child then exec's, replacing itself with 'prog2'
<wikan>
ok, but what about width and height?
<wikan>
tmux has 100x80
<wikan>
mc has 50x80 in pane
<zid>
[20:52] <GeDaMo> curses, termcap
<zid>
[20:59] <zid> but, to query the terminal you can just speak vt to them
<zid>
[20:59] <zid> which is abstracted behind terminfo / termcap if you want
<wikan>
so, forked child should use termcap/curses,right?
<zid>
I don't know what you're trying to do, so I can't answer
<wikan>
ok, just trying to udnerstand basics of tty
<wikan>
thanks, i got a lot of information
<wikan>
i am still to stupid to write my own os
<zid>
sounds like you're trying to rewrite POSIX
<GeDaMo>
wikan: you can type tput cols and tput lines to get the size of a terminal
<zid>
which is.. not the OS level that most of us tend to care about
<zid>
I think ##workingset is the channel for POSIX btw
<wikan>
GeDaMo, well I know. I was wondering how tmux tricks for example mc to see different tty size ;)
<zid>
speak VT to it but badly
<FatalNIX>
CompanionCube: maybe you're the one that wants to port all of 386BSD's Makefiles to GNU Make :P Kidding... kidding...
<wikan>
zid, well I still wonder what I want to do. Work on my own os, try it, or build linux from scratch
<GeDaMo>
tput sends escape codes to the terminal, tmux intercepts those through the replaced stdout
<CompanionCube>
FatalNIX: i vaguely recall microsoft shipping a particularly crappy make at one point, inb4 use that
<wikan>
GeDaMo: ohhhhhh
<FatalNIX>
Lol
<j`ey>
wikan: building linux for qemu is pretty easy
<CompanionCube>
would it be easier if you used say, bmake from pkgsrc?
<FatalNIX>
CompanionCube: all I know is that the makefiles used in this project are super old and the only thing closest enough at all is bmake.
<FatalNIX>
tbh if I could port it to modern BSD make I would
<CompanionCube>
inb4 still uses a.out executables as well
<FatalNIX>
but I'm more familiar with gmake. I think it would take a lot more work to figure out
<wikan>
j'ey probably. how do you thing, isit possible without X :)? No matter what I want to do - linux or my own os?
<wikan>
i mean - only text mode
<zid>
why would you need X to run an assembler?
<wikan>
have no idea. just asking.
<zid>
nothing's stopping you typing out the entire windows 11 installation DVD in a hex editor over morse code without a computer at all
<zid>
(it's just not very fun)
<wikan>
i remember, qemu draws bios logo, so probablyit use SDL or something
<j`ey>
wikan: yes, building linux w/o X is fine, I do it a lot
<gog>
qemu has a text-only mode
<j`ey>
wikan: not if you use -nographic
<gog>
^
* gog
taps furiously at her programming telegraph
<wikan>
will i learn a lot about oses?
<zid>
gog: MESSAGE RECEIVED, WILL TAKE THE TRASH OUT. STOP.
<j`ey>
making a linux build? not really
<zid>
depends if you mean OS by what we mean
<zid>
or what non-osdev people mean
<zid>
we mean memory allocation, device drivers, process scheduling, etc
<gog>
and implementing it very poorly at that
<wikan>
good point
<zid>
what you appear to mean is 'user programming'
<blockhead>
i recall once hearing about an idea for an OS where the entire interface was headphones and a single key for morse code input
<wikan>
well when I tried to write my own os, i stopped on hello world kernel. Didn't know what should i do next.
<wikan>
I didn't want copy-paste.
<zid>
ideas are the annoying hard part
<gog>
yes
<zid>
That's why I did networking first because you know, that's weird and fun
<gog>
and sometimes an idea might depend on a lot of stuff that you don't already have so you either have to copy/paste or start building wheels from scratch
<FatalNIX>
if I were to go about building a hobby OS from the ground up I'd probably work on serial IO networking first
<FatalNIX>
I mean that's what I've done before, but I'd probably put more effort into it
<gog>
i currently have some refactoring to work on
<FatalNIX>
once the UART is up and running... you can use a slave computer for persistence and communication
<gog>
i got virtual memory spaces working but it's a little bit of a mess
<wikan>
where you search for knowledle?
<wikan>
for example: virtual memory
<gog>
reading
<wikan>
when I google for something i am getting trash
<gog>
the osdev wiki is a good jumping-off point and the forums sometimes have helpful hints
<wikan>
to 10 this, best 20 that, etc
<gog>
but for the most part you have to have a pretty good idea of how the thing is supposed to work conceptually before being able to really do it
<FatalNIX>
It probably sounds really funny saying this, but in the past when I've worked on OS-like projects, see I have an actual Pentium II box that runs FreeDOS, so I would write code on that and run it inside of DOS then port it.
<zid>
yes, google is infact trash
<zid>
these days
<zid>
get better at tricking it
<kingoffrance>
^
<kingoffrance>
it helpfully returns what it thinks most ppl like you wanted, or something
<gog>
you can do some funky stuff with DOS
<zid>
negative keywords and verbatim searches, limit results to 2002, etc :P
<FatalNIX>
I just like that on DOS I am in 16 bit mode, and if I want to do 32 bit stuff I can just load it in a DPMI
<wikan>
i think my problem is that, i am self... (past time of teach)
<FatalNIX>
makes it easy for testing
<gog>
like that guy who implemented DOS Long Mode Interface
<FatalNIX>
Yes.
<FatalNIX>
Who was that?
<gog>
uhhhh
<gog>
i'd have to check
<FatalNIX>
They were talking about it a year or so ago in here I thought
<bslsk05>
WindowsNT/asm - Assembly Tutorial for DOS (31 forks/166 stargazers)
<gog>
michael chourdakis
GeDaMo has quit [Remote host closed the connection]
<FatalNIX>
holy shit.
<kingoffrance>
*and it assumes everyone is "ppl like you", so popular searches somehow get boosted, because everyone is your peer
<FatalNIX>
I am forking this
<wikan>
btw, one huge question i have
<wikan>
i asked once on #gcc and got private message as reply. Didn't get it.
<wikan>
HaikuOS has or had two versions - build on v2 and v4 of compiler
<gog>
the one compiled with 2.95 or whatever is meant to be backward-compatible with the C++ ABI of BeOS
<wikan>
why both were incompatible? Why apps for v2 couldn't work on v3?
<gog>
the C++ ABI changed
* kingoffrance
taps at gog teletrams
<kingoffrance>
*telegrams
<wikan>
so isn't it too rirsky to use gcc if you write your OS?
<gog>
not really
* gog
listesns carefully to the beeps and boops
<wikan>
i always was thinking binary apps will work always if only libs are compatible. But there is ABI thing
dormito has quit [Ping timeout: 256 seconds]
<CompanionCube>
yeah, stable ABI essentially only matters vis a vis proprietary programs
<wikan>
so, btw, if Intel writes its own c compiler they must follow gcc ABI, right?
<j`ey>
if they want to be compatbile
<wikan>
they want apps compiled with their compiler to work on Linux compiled with gcc
<wikan>
^ in my example :)
GreaseMonkey has quit [Quit: No Ping reply in 180 seconds.]
Oli_ has quit [Ping timeout: 240 seconds]
<gog>
well, it's SysV ABI and it's defined independently of GCC
srjek has joined #osdev
dequbed has joined #osdev
<geist>
zid: it's a bit of a late response but the general strategy nowadays even on vectored systems that aren't embedded to route everything through a single routine on exception. so much so that the new Fred stuff from intel basically does that
<geist>
essentially codifies that virtually all big oses just end up doing a secondary dispatch
<geist>
and for the most part most risc machines do the same thing (with perhaps optional vectoring, like riscv)
<geist>
my guess is it's because as the kernel gets more complicated there usually is more and more stuff to do in the preamble/postamble of most interrupt/exceptio routines anyway, so may as well have a single instance of that
Lugar has quit [Ping timeout: 250 seconds]
dormito has joined #osdev
netbsduser` has joined #osdev
netbsduser has quit [Ping timeout: 256 seconds]
<kazinsal>
bizarre question: anyone every fiddled with openwatcom for 16-bit C work? considering using it for an april fools joke OS "release"...
<klange>
I think there are some forumgoers who have.
<kazinsal>
s/every/ever/
<klange>
gcc has also paradoxically gotten a bit better about spitting out 16-bit code
<klange>
(but not 8086 code)
<kazinsal>
yeah, that's why I was looking at openwatcom. I want to target the PC/XT for fun
Lugar has joined #osdev
<kingoffrance>
there's arghhh cough <spits> also ACK