You are not logged in.
After looking at the keyboard_isr procedure, at the end, you have a couple of lines of code:
mov al,0x20
out 0x20,al
I am thinking that this could use some explaining, what are these two lines, and how do these two lines effect the procedure itself. Another procedural point, you have the keyboard_isr called from ISR 21, but I have not seen anywhere in your code where you call this interrupt. What am I missing?
Offline
I don't call that interrupt since it's a IRQ, which means that it's called by "itself" when a key is pressed.
All it does it store the scan-code and then I have a separate function that gets the scan-code and translates it to ASCII.
mov al, 0x20 out 0x20, al
Just means "end of IRQ", and must be present.
If you want more info on this I can recommend some reading on osdever.net docs and tutorial parts.
/ Christoffer
Offline
There are two types of interrupts a software and a hardware, when you write a "int 21h" you get a software int and when a key is pressed you get a hardware int.
A interrupt causes the procsseeor to suspend the current operation and act on the reason for the interruption, 8259 masks all further interrupts from that device until is receives an end of interrupt signal from the interrupt service routine( that is the above code). Once the interrupt has been handled, it returns to the interrupted program.
Offline
Thx, for that more detailed explaination.
Offline
Pages: 1