This is so much better not being a programmer, and having no context. I just get to watch this get posted and people are enjoying whatever the fuck this is, and that makes me happy
The weird text the main bird is rattling off it something called "Assembly". Many programming languages don't really tell the computer what to do, they more or less outline the behavior they want, and then another program called a compiler turns that into 1s and 0s that a computer can actually understand. If you've ever heard of binary, that's what these 1s and 0s are. Assembly is one level of abstraction* above the 1s and 0s. It is a good way for humans to understand what a computer is actually doing without having to look at the original programming code, and without 1s and 0s. So the main bird represents a computer doing it's thing, running some program.
Then comes the crow with a "Hello It's me. The Keyboard! Someone pressed the letter e." The crow represents something called an interrupt, which is exactly what it sounds like. It interrupts the normal flow of a program to signal to a computer "Hey, you need to deal with this. Like, now."
The reason why he is a keyboard is because that is how old keyboards used to work. Before USB ruled the world, mice and keyboards used something called a PS2 port. If you ever saw an old mouse or keyboard with a green or purple plug on one end instead of a USB, then that's the old style we are talking about.
Modern USB keyboards are a little more polite and will wait in a line until the computer is ready to deal with whatever the human just typed, but old PS2 keyboards used interrupts to demand attention. This was really important for old slow computers that needed to respond to user input ASAP. Modern computers can handle that sort of thing a little bit better.
I think that is enough context to understand the meme.
*Not really: see ISA layer and micro-ops for more information
"Work" computers will often have legacy ports because maybe you need it to connect to some old printer.
There are a lot of places still using old-style dot matrix printers or other weird old hardware. Point-of-sale systems made to this day often come with a bunch of serial, or not quite serial, ports.
No, it's been a while since I last saw a SCSI connector of any kind, and I don't think I've ever seen a 25 pin serial (my first PC did have the 15 pin game port, though, if I recall correctly); this one was a plain old parallel port, though. Even had a small drawing of a printer on top of it on the i/o shield.
OMG, that reminds of one of my first little hobby projects. Using a serial port to light up an LED whenever I had a new notification on... good grief was it Myspace or Facebook back then? Around that transition period at any rate.
Also, wasn't it even once stylized like "PS/2," come to think of it? I did very vaguely remember learning about interrupts (as nouns, lol), but this makes it far clearer, thanks!
There's a Youtube channel called Ben Eater that does a great job of explaining computing from first principles. He built a computer out of discrete components on breadboards. He also has a great series where he wires up a 6502 microprocessor and basically builds a little 8-bit microcomputer around it, again on breadboards, in a way that you'll get. He sells them as kits, so you can play at home if you want. They're also just nice educational evening calm time viewing.
Yup, it was fully known as IBM PS/2, for "Personal System 2". IBM wasn't happy about how the original PC system got cloned to hell and back, so they designed a more proprietary and patentable system. Suffice to say it was a massive failure, what with it being incompatible with basically all of third party hardware. But the keyboard and mouse ports were widely regarded as a good idea! (and probably not as patentable)
The thing that bothers me the most here is that the meme is using 64bit assembly instructions, which did not exist at the time keyboards were using IRQs to communicate. 🤣
Did they upgrade PS/2 to use something other than interrupts? Because my earliest 64-bit CPU was in a computer manufactured in the early 00s and I'm pretty sure that mobo still had actual PS/2 ports, not USB converters or something.
I stand corrected then, thank you! I forgot about Opteron and Athlon (I was an Intel devotee at the time, my AMD phase happened much earlier with the 486 DX2 and DX4).
I viscerally recall, and don't think kids now will ever fully comprehend the one week where all 4 wheels fell off the meme bus and this was what people were literally posting. I'm legitimately triggered.
I used to game with a guy that swore by ps/2 keyboard for the interrupt supposedly making his inputs easier to perfectly time, but he got into a heated argument with my other gaming buddy over whether or not his mobo just had a usb ps/2 port that was basically a built in adapter and I never heard from either of them since.
I wish arch was a thing back then so I could have thrown in the standard line and have the last laugh.
This is legit the biggest lol. Yes I’m aware this is the PS/2 path only and today it’s actually polling on USB or Bluetooth keyboards but this really tickled me. The face of that CPU bird!
It moves the value of register (a CPU memory cell) rbx to register rax. It's not that important though.
Basically the comic shows that the CPU is happily chugging along, executing instructions when suddenly the keyboard sends an interrupt telling the CPU it must stop all work and listen to whatever it has to say.
That was how keyboards worked before USB (back when they used PS/2 or DIN connectors). With USB it's the other way around: the device gets polled X times per second to check if it has any data to send.
It's irrelevant to the humor, it's just an arbitrary x86 instruction. The point is that keyboard inputs (with a PS/2 keyboard) interrupt whatever the computer is doing
Though to answer your question, it moves the value from the rbx register to the rbx register
These are some assembly instructions that the computer is happily running with no keyboard input. The keyboard input is then coming in as an interrupt demanding immediate processing which is silencing the poor background bird process.
Technically, interrupts are still often involved... just from the USB controller on the state of the polling instead of the keyboard directly on a keypress
Some keyboards implement the USB Boot Keyboard profile specified in the USB Device Class Definition for Human Interface Devices (HID) v1.11 and are explicitly configured to use the boot protocol. These are limited to 6-key rollover (6KRO) and will interrupt the CPU every time the keyboard is polled (even if there is no state change) unless the USB controller is programmed to tell the keyboard to respond with negative acknowledgments, which the USB controller discards in hardware without interrupting the CPU, when there are no state changes to report
So if i created my own keyboard from scratch on a open hardware microcontroller, could i implement this?
There's also the case of Bluetooth dongle keyboards not working in UEFI (except that one) but USB always do. Is it this or just the UEFI not having drivers?
So if i created my own keyboard from scratch on a open hardware microcontroller, could i implement this?
The USB controller that interrupts the CPU lives on the other side of the connection, so you'd just be building hardware that responses to the polling. If you're curious what that looks like, Ben Eater has a cool video looking at what that looks like for a USB 2 keyboard https://youtu.be/wdgULBpRoXk
There’s also the case of Bluetooth dongle keyboards not working in UEFI (except that one) but USB always do. Is it this or just the UEFI not having drivers?
I am no USB Keyboard expert, but through the power of looking it up it seems like most of these do not operate as a HID (human interface device, like mouse and keyboard) so need driver support, but some start up with a basic HID proxy which might be you have one that works. From an older thread about BIOSes rather than UEIFs
A keyboard using Bluetooth cannot access the BIOS. Logitech Bluetooth keyboards get around this by having a dongle that pairs with the keyboard in a more basic, non-Bluetooth mode until the driver kicks in and switches modes. Microsoft might be similar mode with their keyboards and dongles, but I cannot confirm that.
80 Comments
Cris_Citrus@piefed.zip · 109 pts · 97d
This is so much better not being a programmer, and having no context. I just get to watch this get posted and people are enjoying whatever the fuck this is, and that makes me happy
pedz@lemmy.ca · 89 pts · 97d
TBF this is not really about programming. You have to be knowledgeable about how computers work and their history for this one.
Mountainaire@lemmy.world · 27 pts · 97d
Okay, so go on... I, too, am hardly a programmer yet hangs out here anyway and have no idea of what this is all about, haha.
DaleGribble88@programming.dev · 121 pts · 97d
The weird text the main bird is rattling off it something called "Assembly". Many programming languages don't really tell the computer what to do, they more or less outline the behavior they want, and then another program called a compiler turns that into 1s and 0s that a computer can actually understand. If you've ever heard of binary, that's what these 1s and 0s are. Assembly is one level of abstraction* above the 1s and 0s. It is a good way for humans to understand what a computer is actually doing without having to look at the original programming code, and without 1s and 0s. So the main bird represents a computer doing it's thing, running some program.
Then comes the crow with a "Hello It's me. The Keyboard! Someone pressed the letter e." The crow represents something called an interrupt, which is exactly what it sounds like. It interrupts the normal flow of a program to signal to a computer "Hey, you need to deal with this. Like, now."
The reason why he is a keyboard is because that is how old keyboards used to work. Before USB ruled the world, mice and keyboards used something called a PS2 port. If you ever saw an old mouse or keyboard with a green or purple plug on one end instead of a USB, then that's the old style we are talking about.
Modern USB keyboards are a little more polite and will wait in a line until the computer is ready to deal with whatever the human just typed, but old PS2 keyboards used interrupts to demand attention. This was really important for old slow computers that needed to respond to user input ASAP. Modern computers can handle that sort of thing a little bit better.
I think that is enough context to understand the meme.
*Not really: see ISA layer and micro-ops for more information
nightwatch_admin@lemmy.world · 32 pts · 97d
This is a great explanation!
But I do have to say, you darn kids with your fancy newfangled PS/2 input.. in my days we had proper serial or DIN ports!
leftzero@lemmy.dbzer0.com · 19 pts · 97d
I saw a computer with a parallel port at work the other day.
No idea why it had it, it also had a couple blue USB3 ports. Also VGA and HDMI, and a bicolour PS/2. Damn weird mainboard.
Zoomer intern was wondering what it was and I got to tell him about parallel and serial and all that. Made me feel nostalgic. And old.
captain_aggravated@sh.itjust.works · 9 pts · 97d
"Work" computers will often have legacy ports because maybe you need it to connect to some old printer.
There are a lot of places still using old-style dot matrix printers or other weird old hardware. Point-of-sale systems made to this day often come with a bunch of serial, or not quite serial, ports.
nightwatch_admin@lemmy.world · 4 pts · 97d
Maybe it was even a 25 pin delta serial? or an external scsi port? Sounds damn peculiar indeed.
leftzero@lemmy.dbzer0.com · 2 pts · 96d
No, it's been a while since I last saw a SCSI connector of any kind, and I don't think I've ever seen a 25 pin serial (my first PC did have the 15 pin game port, though, if I recall correctly); this one was a plain old parallel port, though. Even had a small drawing of a printer on top of it on the i/o shield.
DaleGribble88@programming.dev · 3 pts · 97d
OMG, that reminds of one of my first little hobby projects. Using a serial port to light up an LED whenever I had a new notification on... good grief was it Myspace or Facebook back then? Around that transition period at any rate.
Mountainaire@lemmy.world · 9 pts · 97d
Ohhhhhhh.
Huh.
Also, wasn't it even once stylized like "PS/2," come to think of it? I did very vaguely remember learning about interrupts (as nouns, lol), but this makes it far clearer, thanks!
captain_aggravated@sh.itjust.works · 14 pts · 97d
There's a Youtube channel called Ben Eater that does a great job of explaining computing from first principles. He built a computer out of discrete components on breadboards. He also has a great series where he wires up a 6502 microprocessor and basically builds a little 8-bit microcomputer around it, again on breadboards, in a way that you'll get. He sells them as kits, so you can play at home if you want. They're also just nice educational evening calm time viewing.
Mountainaire@lemmy.world · 1 pts · 96d
Wow, huh, yeah; just found him: https://www.youtube.com/channel/UCS0N5baNlQWJCUrhCEo8WlA
umbraroze@slrpnk.net · 13 pts · 97d
Yup, it was fully known as IBM PS/2, for "Personal System 2". IBM wasn't happy about how the original PC system got cloned to hell and back, so they designed a more proprietary and patentable system. Suffice to say it was a massive failure, what with it being incompatible with basically all of third party hardware. But the keyboard and mouse ports were widely regarded as a good idea! (and probably not as patentable)
nialv7@lemmy.world · 3 pts · 96d
IBM really loves their slashes huh.
m33@lemmy.zip · 6 pts · 96d
I’m surprised no one interrupted you 🤔
Fmstrat@lemmy.world · 6 pts · 96d
I wonder how many people think this meme is about autocorrect for "mov".
dmention7@midwest.social · 3 pts · 96d
Tech-literate non-programmer who gets most of the jokes posted here... that's what I thought at first, but it seemed like a clunky joke.
The moment I clicked into the comments and saw someone mention interrupts, the joke made so much more sense!
MonkderVierte@lemmy.zip · 1 pts · 96d
valar@lemmy.ca · 1 pts · 97d
https://www.youtube.com/watch?v=CVarSJQzw38
raman_klogius@ani.social · 1 pts · 94d
If you program close to bare metal you deal with this all the time
tanisnikana@lemmy.world · 9 pts · 97d
You’re the sane one, unbroken by the Knowledge.
rizzothesmall@sh.itjust.works · 85 pts · 97d
Such an interrupting crow
PhobosAnomaly@feddit.uk · 43 pts · 97d
"knock knock"
"Who's there"
"The interrupting cow"
"The interrupting cow wh.." "MOOOOOOO"
rizzothesmall@sh.itjust.works · 23 pts · 97d
Immediately pushes FLAGS, CS, and IP onto the stack, clears IF, and jumps to the cow Service Routine at 0x0000:0x0040
I thought of a better version: Immediately stacks everything I'm carrying and jumps on the cow
rockerface@lemmy.cafe · 17 pts · 97d
It's the CORVID-19
Blue_Morpho@lemmy.world · 4 pts · 97d
I recognize asm but what's a hellott keyboard?
DaleGribble88@programming.dev · 6 pts · 97d
Hello it's me the keyboard
Blue_Morpho@lemmy.world · 1 pts · 96d
Nemo πs me keyboard?
marcos@lemmy.world · 3 pts · 97d
It's a HELLO II keyboard. Probably the next model after the original one.
WagnasT@piefed.world · 57 pts · 97d
This irqs me
fulg@lemmy.world · 14 pts · 96d
The thing that bothers me the most here is that the meme is using 64bit assembly instructions, which did not exist at the time keyboards were using IRQs to communicate. 🤣
boonhet@sopuli.xyz · 7 pts · 96d
Did they upgrade PS/2 to use something other than interrupts? Because my earliest 64-bit CPU was in a computer manufactured in the early 00s and I'm pretty sure that mobo still had actual PS/2 ports, not USB converters or something.
circuitfarmer@lemmy.world · 4 pts · 96d
fulg@lemmy.world · 2 pts · 95d
I stand corrected then, thank you! I forgot about Opteron and Athlon (I was an Intel devotee at the time, my AMD phase happened much earlier with the 486 DX2 and DX4).
Cheers!
gravitas_deficiency@sh.itjust.works · 53 pts · 97d
E
ch00f@lemmy.world · 63 pts · 97d
Windex007@lemmy.world · 16 pts · 97d
I viscerally recall, and don't think kids now will ever fully comprehend the one week where all 4 wheels fell off the meme bus and this was what people were literally posting. I'm legitimately triggered.
embed_me@programming.dev · 13 pts · 97d
I remember laughing at this meme and now I turn my nose up at 6-7
MousePotatoDoesStuff@piefed.social · 7 pts · 96d
Intergenerational humor time
E6-7
dellish@lemmy.world · 7 pts · 96d
You sank my battleship!
MousePotatoDoesStuff@piefed.social · 1 pts · 95d
J6-9
socsa@piefed.social · 1 pts · 97d
Based
deadbeef79000@lemmy.nz · 41 pts · 97d
USB keyboards yelling into the void in the background hoping to be noticed.
SpaceNoodle@lemmy.world · 23 pts · 97d
They ain't even, the host actually polls "interrupt" endpoints
deadbeef79000@lemmy.nz · 5 pts · 97d
Couldn't quite remember how it worked, just that USB didn't CPU interrupt:-)
marcos@lemmy.world · 19 pts · 97d
Modern CPUs can manage what interrupts them. Almost nothing actually does.
Computers have a CPU just to get in the way of things interrupting the main CPU.
InternetCitizen2@lemmy.world · 12 pts · 97d
Based
deadbeef79000@lemmy.nz · 2 pts · 97d
I'm remembering from back in the ol' single core days too. Where an interrupt was, well, an interrupt.
MonkderVierte@lemmy.zip · 2 pts · 96d
You have a CPU? Well, i have a CPU in a CPU!
some_kind_of_guy@lemmy.world · 3 pts · 96d
Yo dawg
SpaceNoodle@lemmy.world · 7 pts · 97d
If you want a USB host controller to interrupt your CPU, I can recommend some nice embedded SoCs
Grass@sh.itjust.works · 38 pts · 97d
I used to game with a guy that swore by ps/2 keyboard for the interrupt supposedly making his inputs easier to perfectly time, but he got into a heated argument with my other gaming buddy over whether or not his mobo just had a usb ps/2 port that was basically a built in adapter and I never heard from either of them since.
I wish arch was a thing back then so I could have thrown in the standard line and have the last laugh.
sunbeam60@feddit.uk · 38 pts · 97d
This is legit the biggest lol. Yes I’m aware this is the PS/2 path only and today it’s actually polling on USB or Bluetooth keyboards but this really tickled me. The face of that CPU bird!
Heavybell@lemmy.world · 24 pts · 97d
This is funnier than it is. :)
heliotrope@retrofed.com · 14 pts · 97d
WandowsVista@lemmy.world · 13 pts · 96d
I can't explain but these birds have Toronto accents
SatansDaughter@piefed.blahaj.zone · 12 pts · 96d
Can someone smarter than me explain what mov rax, rbx. Does it read keyboard input?
Aganim@lemmy.world · 58 pts · 96d
It moves the value of register (a CPU memory cell) rbx to register rax. It's not that important though.
Basically the comic shows that the CPU is happily chugging along, executing instructions when suddenly the keyboard sends an interrupt telling the CPU it must stop all work and listen to whatever it has to say.
That was how keyboards worked before USB (back when they used PS/2 or DIN connectors). With USB it's the other way around: the device gets polled X times per second to check if it has any data to send.
iocase@lemmy.zip · 13 pts · 96d
Iirc the south bridge now aggregates masked interrupts and groups them together instead of pestering the CPU a whole bunch
bequirtle@lemmy.world · 17 pts · 96d
It's irrelevant to the humor, it's just an arbitrary x86 instruction. The point is that keyboard inputs (with a PS/2 keyboard) interrupt whatever the computer is doing
Though to answer your question, it moves the value from the rbx register to the rbx register
SatansDaughter@piefed.blahaj.zone · 5 pts · 96d
Oh ok, I didn't know keyboards used to do that
firebarrage@lemmy.world · 7 pts · 96d
These are some assembly instructions that the computer is happily running with no keyboard input. The keyboard input is then coming in as an interrupt demanding immediate processing which is silencing the poor background bird process.
MonkderVierte@lemmy.zip · 8 pts · 96d
Why is this cropped?
xav@programming.dev · 4 pts · 96d
Because it was interrupted by an important message
BenLeMan@lemmy.world · 8 pts · 97d
Uh-oh! We might have a STUCK NMI ERROR on our hands here.
defaultusername@lemmy.dbzer0.com · 6 pts · 97d
USB keyboards don't use interrupts, but instead poll at a fixed frequency.
usernamesAreTricky@lemmy.ml · 12 pts · 97d
Technically, interrupts are still often involved... just from the USB controller on the state of the polling instead of the keyboard directly on a keypress
https://en.wikipedia.org/wiki/USB_human_interface_device_class#Keyboards
MonkderVierte@lemmy.zip · 1 pts · 96d
So if i created my own keyboard from scratch on a open hardware microcontroller, could i implement this?
There's also the case of Bluetooth dongle keyboards not working in UEFI (except that one) but USB always do. Is it this or just the UEFI not having drivers?
usernamesAreTricky@lemmy.ml · 2 pts · 96d
The USB controller that interrupts the CPU lives on the other side of the connection, so you'd just be building hardware that responses to the polling. If you're curious what that looks like, Ben Eater has a cool video looking at what that looks like for a USB 2 keyboard https://youtu.be/wdgULBpRoXk
I am no USB Keyboard expert, but through the power of looking it up it seems like most of these do not operate as a HID (human interface device, like mouse and keyboard) so need driver support, but some start up with a basic HID proxy which might be you have one that works. From an older thread about BIOSes rather than UEIFs
https://superuser.com/questions/242457/use-a-bluetooth-keyboard-to-access-edit-the-bios
MonkderVierte@lemmy.zip · 1 pts · 96d
Well, thanks for looking it up!
some_kind_of_guy@lemmy.world · 1 pts · 96d
Someone should tell Windows 11
xorollo@leminal.space · 5 pts · 97d
Is this assembly?
dis_da_mor@anarchist.nexus · 8 pts · 97d
fubarx@lemmy.world · 4 pts · 97d
IRET
Speiser0@feddit.org · 2 pts · 97d
Lol, pidgin does only one instruction at a time.
deadbeef79000@lemmy.nz · 1 pts · 96d
It's only one pigeon.
Some of us have multiple pigeons though.
Speiser0@feddit.org · 2 pts · 96d
You don't need multiple pigeons. There's instruction level parallelism.
deadbeef79000@lemmy.nz · 1 pts · 95d
I wasn't sure about how I could HypethTread^TM^ a pigeon, so avoided voiding my warranty.
Speiser0@feddit.org · 2 pts · 95d
That's just a form of SMT (simultaneous multi taubing). Modern CPUs (central pigeon units) process many instructions even within one thread, see https://en.wikipedia.org/wiki/Instruction-level_parallelism.
Iusedtobeanalien@lemmy.world · 2 pts · 95d
Do not give that bird an E
She'll be flying so hard she'll shit herself again
MonkderVierte@lemmy.zip · 1 pts · 96d
kamen@lemmy.world · 1 pts · 95d
Chris Barnes, is that you?