In todays edition of “stuff that I found in my storage” a PS/2 meme
Image transcription:
mov rax, rbx add rax, rcx HELLO IT’S THE KEYBOARD I HAVE AN IMPORTANT MESSAGE E
Ah yes, the little old interrupt
Underrated meme
Help me understand pls?
Ps/2 keyboards used interrupt when transferring data, meaning instead of waiting for the cpu to get the data it is trying to send when it is free, it will just interrupt what the cpu is currently doing and tell it to process what the keyboard is sending.
Alright this has me giggling this morning
What bothers me the most here is that those are 64 bit instructions, which did not exist when PS/2 was a Thing. But I still chuckled, nice work.
Back then our registers were 32 bits wide, and we liked it 🤣
I was definitely still using ps/2 with my first Athlon 64 chip.
My mistake then! Except for the 486 series I was strictly an Intel kid. I guess we often forget that AMD is the one who “won” the 64 bit war.
I have fond memories of writing interrupt handlers (staying on topic…) and using Soft-ICE on my side monochrome monitor to debug them. Good times!
I’m still using one PS/2 keyboard (BTC 5139), although it might be a PS/2 -> USB converter chip on the motherboard.
Does USB not use interrupts?
No. It’s polling based
Actually it’s both, there’s polling with a timeout interrupt if an incoming urb hasn’t been processed quickly.
https://crlab.ece.ucr.edu/usbgps/ohci_uhci.html
This way you can take them in batches at regular intervals.
It makes sense given that even microcontrollers (which are a lot simpler than microprocessors) have dedicated hardware doing the send/receive part of the work which is independent of the processing core and will only fire interrupts if the send or receive buffers reach an empty state.
This way of doing things was already usual before USB for things like I2C, Serial and SPI and whilst the USB protocol is significantly more complex, the same kind of design was also used for it.
Does usb use general dma or just a small n-byte buffer that needs regular servicing?
(The last time I cared about serial IO it was for an atari 800, curious what the state of the art is.)
Oh, is that what the frequency I can set in my mouse app for? So it does the USB polling more frequently?
It uses polling afaik
Knock knock
Who’s there?
Interrupting cow
Interrupting cow w-
MOO!
Explain please :p Thanks <3
PS/2 keyboards and mice send an interrupt to the CPU and the CPU stops whatever it’s doing, handles the mouse or keyboard input, then goes back to what it was doing.
This is not true of USB devices.
PS2 be like
😹
No delay tho
WRONG. While it interrupts the CPU the protocol is still orders of magnitude slower than USB. You’d be able to have read the key press from USB before PS2 even finished sending it.