Import backup from 2004-08-16
This commit is contained in:
1 parent
8a8f56decb
commit
c0dd3b529e
12 files changed
+45
-36
No files matched your search
+17
-17
@@ -1,33 +1,32 @@
|
||||
// keyboard.c
|
||||
// Author: Josh Holtrop
|
||||
// Created: 04/17/03
|
||||
// Modified: 08/02/04
|
||||
// Modified: 08/16/04
|
||||
|
||||
#include "hos_defines.h"
|
||||
#include "char/keyboard.h"
|
||||
#include "sys/io.h"
|
||||
#include "sys/pic.h"
|
||||
#include "functions.h"
|
||||
#include "kio.h"
|
||||
|
||||
#define KBD_BUFFER_LENGTH 64
|
||||
|
||||
byte kbdFlags = 0; //holds current keyboard flags - caps/num/scroll/shift/ctrl/alt
|
||||
byte kbdAscii = 0; //holds ASCII value of a key pressed
|
||||
byte kbdScan = 0; //holds the keyboard scan code of a key pressed
|
||||
u8_t kbdFlags = 0; //holds current keyboard flags - caps/num/scroll/shift/ctrl/alt
|
||||
u8_t kbdAscii = 0; //holds ASCII value of a key pressed
|
||||
u8_t kbdScan = 0; //holds the keyboard scan code of a key pressed
|
||||
|
||||
dword kbdBuffer[KBD_BUFFER_LENGTH]; //a buffer for all keypresses
|
||||
u32_t kbdBuffer[KBD_BUFFER_LENGTH]; //a buffer for all keypresses
|
||||
int kbdBufferStart = 0; //position of next key in buffer
|
||||
int kbdBufferLen = 0; //number of keys left in the buffer
|
||||
byte kbdExt = 0; //# of extended key codes left to input
|
||||
byte kbdExt2 = 0; //# of 2nd-set-extended key codes left to input
|
||||
byte ackReason = 0; //used to record the reason why we would get an acknowledge byte (0xFA)
|
||||
u8_t kbdExt = 0; //# of extended key codes left to input
|
||||
u8_t kbdExt2 = 0; //# of 2nd-set-extended key codes left to input
|
||||
u8_t ackReason = 0; //used to record the reason why we would get an acknowledge u8_t (0xFA)
|
||||
|
||||
|
||||
//these arrays convert a keyboard scan code to an ASCII character value
|
||||
//nul esc bksp tab lctl lsft rsft lalt caps F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 numScrlNumPad------- unknown---- F11 F12 unknown....
|
||||
const byte SCAN2ASCII[129] = "\000\0331234567890-=\010\011qwertyuiop[]\n\001asdfghjkl;'`\001\\zxcvbnm,./\001*\001 \001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001-\001\001\001+\001\001\001\001\001\002\002\002\001\001\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002";
|
||||
const byte SCAN2ASCIISHIFT[129] = "\000\033!@#$%^&*()_+\010\011QWERTYUIOP{}\n\001ASDFGHJKL:\"~\001|ZXCVBNM<>?\001*\001 \001\001\001\001\001\001\001\001\001\001\001\001\001789-456+1230.\002\002\002\001\001\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002";
|
||||
const u8_t SCAN2ASCII[129] = "\000\0331234567890-=\010\011qwertyuiop[]\n\001asdfghjkl;'`\001\\zxcvbnm,./\001*\001 \001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001-\001\001\001+\001\001\001\001\001\002\002\002\001\001\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002";
|
||||
const u8_t SCAN2ASCIISHIFT[129] = "\000\033!@#$%^&*()_+\010\011QWERTYUIOP{}\n\001ASDFGHJKL:\"~\001|ZXCVBNM<>?\001*\001 \001\001\001\001\001\001\001\001\001\001\001\001\001789-456+1230.\002\002\002\001\001\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002\002";
|
||||
|
||||
//====FUNCTIONS:
|
||||
// The Keyboard Interrupt Service Routine
|
||||
@@ -35,7 +34,7 @@ void isr_keyboard()
|
||||
{
|
||||
kbdScan = inportb(0x60);
|
||||
//printf("\nKEYBOARD INTERRUPT: 0x%x", kbdScan);
|
||||
byte inState = inportb(0x61);
|
||||
u8_t inState = inportb(0x61);
|
||||
outportb(0x61, inState|0x80);
|
||||
outportb(0x61, inState);
|
||||
|
||||
@@ -198,7 +197,7 @@ void isr_keyboard()
|
||||
}
|
||||
else
|
||||
{
|
||||
kbdBuffer[(kbdBufferStart+kbdBufferLen++)%KBD_BUFFER_LENGTH] = (dword) ((kbdFlags << 16) | (kbdScan << 8) | kbdAscii);
|
||||
kbdBuffer[(kbdBufferStart+kbdBufferLen++)%KBD_BUFFER_LENGTH] = (u32_t) ((kbdFlags << 16) | (kbdScan << 8) | kbdAscii);
|
||||
// printf("S:%d\tL:%d\tR:%x\n", kbdBufferStart, kbdBufferLen, kbdBuffer[kbdBufferStart]);
|
||||
}
|
||||
}
|
||||
@@ -208,11 +207,11 @@ void isr_keyboard()
|
||||
}
|
||||
|
||||
//Gets a key from the buffer, returns 0 if no keys available, returns immediately
|
||||
dword kbdGetKey()
|
||||
u32_t kbdGetKey()
|
||||
{
|
||||
if (kbdBufferLen == 0) //buffer empty
|
||||
return 0;
|
||||
dword retVal = kbdBuffer[kbdBufferStart];
|
||||
u32_t retVal = kbdBuffer[kbdBufferStart];
|
||||
kbdBufferStart++;
|
||||
kbdBufferLen--;
|
||||
if (kbdBufferStart >= KBD_BUFFER_LENGTH)
|
||||
@@ -221,14 +220,14 @@ dword kbdGetKey()
|
||||
}
|
||||
|
||||
//Gets a key from the buffer, if no keys available, waits for one to be entered
|
||||
dword kbdWaitKey()
|
||||
u32_t kbdWaitKey()
|
||||
{
|
||||
for (;;)
|
||||
{
|
||||
if (kbdBufferLen != 0) //buffer empty
|
||||
break;
|
||||
}
|
||||
dword retVal = kbdBuffer[kbdBufferStart];
|
||||
u32_t retVal = kbdBuffer[kbdBufferStart];
|
||||
kbdBufferStart++;
|
||||
kbdBufferLen--;
|
||||
if (kbdBufferStart >= KBD_BUFFER_LENGTH)
|
||||
@@ -245,3 +244,4 @@ void kbd_resetLEDs()
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@ int parallel_init(major_t major)
|
||||
{
|
||||
parallel_driver->char_write = parallel_char_write;
|
||||
devices_register_major('c', major, parallel_driver);
|
||||
// register parallel devices as /dev/lp0, etc...
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// vconsole.c
|
||||
// Author: Josh Holtrop
|
||||
// Date: 08/02/04
|
||||
// Modified: 08/07/04
|
||||
// Modified: 08/16/04
|
||||
|
||||
#include "char/vconsole.h"
|
||||
#include "hos_defines.h"
|
||||
|
||||
Reference in new issue
Block a user