/* If the top bit of the byte we read from the keyboard is * set, that means that a key has just been released */ if (scancode & 0x80) { /* You can use this one to see if the user released the * shift, alt, or control keys... */ } else { print_character(kbdus[scancode]); }}

There are chances for the interrupt service routine to change the DS (data segment) register.if you keep kbdus[] as global variable, contents of DS register might be different in your interrupt handler compared to the original so that it accesses wrong address (because of segment address) for your variable kbdus.

If you are sure that the DS register contains the same contents as the original in your interrupt handler, no need to bother about this.

It compiles, no errors or warnings. If its outside, the text doesn't display.

Just a guess, but it can't be that you load too few sectors to memory and the end of your binary image is not present? I had similar issue around the keyboard handler and I had to increase the number of sectors loaded by the bootloader... Maybe if you reposition your kbdus[] into a function something else is not loaded if it is really the problem what I think of...

Who is online

Users browsing this forum: Google [Bot] and 6 guests

You cannot post new topics in this forumYou cannot reply to topics in this forumYou cannot edit your posts in this forumYou cannot delete your posts in this forumYou cannot post attachments in this forum