aboutsummaryrefslogtreecommitdiff
path: root/engines/cge/keybd.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/cge/keybd.cpp')
-rw-r--r--engines/cge/keybd.cpp213
1 files changed, 106 insertions, 107 deletions
diff --git a/engines/cge/keybd.cpp b/engines/cge/keybd.cpp
index 95899bed55..a4590f4980 100644
--- a/engines/cge/keybd.cpp
+++ b/engines/cge/keybd.cpp
@@ -25,129 +25,128 @@
* Copyright (c) 1994-1995 Janus B. Wisniewski and L.K. Avalon
*/
-#include "cge/keybd.h"
-#include "cge/mouse.h"
-#include <dos.h>
+#include "cge/keybd.h"
+#include "cge/mouse.h"
+#include <dos.h>
namespace CGE {
-SPRITE * KEYBOARD::Client = NULL;
+SPRITE *KEYBOARD::Client = NULL;
uint8 KEYBOARD::Key[0x60] = { 0 };
uint16 KEYBOARD::Current = 0;
-uint16 KEYBOARD::Code[0x60] = { 0,Esc,'1','2','3','4','5','6','7','8','9','0',
- '-','+',BSp,Tab,'Q','W','E','R','T','Y','U',
- 'I','O','P','[',']',Enter,0/*Ctrl*/,'A','S',
- 'D','F','G','H','J','K','L',';','\'','`',
- 0/*LShift*/,'\\','Z','X','C','V','B','N','M',
- ',','.','/',0/*RShift*/,'*',0/*Alt*/,' ',
- 0/*Caps*/,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,
- 0/*NumLock*/,0/*ScrollLock*/,Home,Up,PgUp,
- '-',Left,Ctr,Right,'+',End,Down,PgDn,Ins,Del,
- 0*0x54,0*0x55,0*0x56,F11,F12,0*0x59,0*0x5A,
- 0*0x5B,0*0x5C,0*0x5D,0*0x5E,0*0x5F
- };
-void (* KEYBOARD::OldKeyboard) (...);
-
-
-
-KEYBOARD::KEYBOARD (void)
-{
- // steal keyboard interrupt
- /* TODO replace totally by scummvm handling
- OldKeyboard = getvect(KEYBD_INT);
- setvect(KEYBD_INT, NewKeyboard);
- */
- warning("STUB: KEYBOARD::KEYBOARD");
+uint16 KEYBOARD::Code[0x60] = {
+ 0, Esc, '1', '2', '3',
+ '4', '5', '6', '7', '8',
+ '9', '0', '-', '+', BSp,
+ Tab, 'Q', 'W', 'E', 'R',
+ 'T', 'Y', 'U', 'I', 'O',
+ 'P', '[', ']', Enter, 0/*Ctrl*/,
+ 'A', 'S', 'D', 'F', 'G',
+ 'H', 'J', 'K', 'L', ';',
+ '\'', '`', 0/*LShift*/, '\\', 'Z',
+ 'X', 'C', 'V', 'B', 'N',
+ 'M', ',', '.', '/', 0/*RShift*/,
+ '*', 0/*Alt*/, ' ', 0/*Caps*/, F1,
+ F2, F3, F4, F5, F6,
+ F7, F8, F9, F10, 0/*NumLock*/,
+ 0/*ScrollLock*/, Home, Up, PgUp, '-',
+ Left, Ctr, Right, '+', End,
+ Down, PgDn, Ins, Del, 0 * 0x54,
+ 0 * 0x55, 0 * 0x56, F11, F12, 0 * 0x59,
+ 0 * 0x5A, 0 * 0x5B, 0 * 0x5C, 0 * 0x5D, 0 * 0x5E,
+ 0 * 0x5F
+};
+
+void (* KEYBOARD::OldKeyboard)(...);
+
+
+KEYBOARD::KEYBOARD(void) {
+ // steal keyboard interrupt
+ /* TODO replace totally by scummvm handling
+ OldKeyboard = getvect(KEYBD_INT);
+ setvect(KEYBD_INT, NewKeyboard);
+ */
+ warning("STUB: KEYBOARD::KEYBOARD");
}
-
-
-KEYBOARD::~KEYBOARD (void)
-{
- // bring back keyboard interrupt
- /* TODO replace totally by scummvm handling
+KEYBOARD::~KEYBOARD(void) {
+ // bring back keyboard interrupt
+ /* TODO replace totally by scummvm handling
setvect(KEYBD_INT, OldKeyboard);
- */
- warning("STUB: KEYBOARD::~KEYBOARD");
+ */
+ warning("STUB: KEYBOARD::~KEYBOARD");
}
-
-
-SPRITE * KEYBOARD::SetClient (SPRITE * spr)
-{
- Swap(Client, spr);
- return spr;
+SPRITE *KEYBOARD::SetClient(SPRITE *spr) {
+ Swap(Client, spr);
+ return spr;
}
-
-
-
-void KEYBOARD::NewKeyboard (...)
-{
- // table address
+void KEYBOARD::NewKeyboard(...) {
+ // table address
/*
- _SI = (uint16) Key;
-
- // take keyboard code
- asm in al,60h
- asm mov bl,al
- asm and bx,007Fh
- asm cmp bl,60h
- asm jae xit
- asm cmp al,bl
- asm je ok // key pressed
-
- // key released...
- asm cmp [si+bx],bh // BH == 0
- asm jne ok
- // ...but not pressed: call the original service
- OldKeyboard();
- return;
-
- ok:
- asm shl ax,1
- asm and ah,1
- asm xor ah,1
- asm mov [si+bx],ah
- asm jz xit // released: exit
-
- // pressed: lock ASCII code
- _SI = (uint16) Code;
- asm add bx,bx // uint16 size
- asm mov ax,[si+bx]
- asm or ax,ax
- asm jz xit // zero means NO KEY
- Current = _AX;
-
- _SI = (uint16) Client;
- asm or si,si
- asm jz xit // if (Client) ...
-//--- fill current event entry with mask, key code and sprite
- asm mov bx,EvtHead // take queue head pointer
- asm inc byte ptr EvtHead // update queue head pointer
- asm shl bx,3 // * 8
- _AX = Current;
- asm mov Evt[bx].(struct EVENT)X,ax // key code
- asm mov ax,KEYB // event mask
- asm mov Evt[bx].(struct EVENT)Msk,ax // event mask
- //asm mov Evt[bx].(struct EVENT)Y,dx // row
- asm mov Evt[bx].(struct EVENT)Ptr,si // SPRITE pointer
-
- xit:
-
- asm in al,61h // kbd control lines
- asm push ax // save it
- asm or al,80h // set the "enable kbd" bit
- asm out 61h,al // and write it out
- asm pop ax // original control port value
- asm out 61h,al // write it back
- asm mov al,20h // send End-Of-Interrupt
- asm out 20h,al // to the 8259 IC
- */
- warning("STUB: KEYBOARD::NewKeyboard");
+ _SI = (uint16) Key;
+
+ // take keyboard code
+ asm in al,60h
+ asm mov bl,al
+ asm and bx,007Fh
+ asm cmp bl,60h
+ asm jae xit
+ asm cmp al,bl
+ asm je ok // key pressed
+
+ // key released...
+ asm cmp [si+bx],bh // BH == 0
+ asm jne ok
+ // ...but not pressed: call the original service
+ OldKeyboard();
+ return;
+
+ ok:
+ asm shl ax,1
+ asm and ah,1
+ asm xor ah,1
+ asm mov [si+bx],ah
+ asm jz xit // released: exit
+
+ // pressed: lock ASCII code
+ _SI = (uint16) Code;
+ asm add bx,bx // uint16 size
+ asm mov ax,[si+bx]
+ asm or ax,ax
+ asm jz xit // zero means NO KEY
+ Current = _AX;
+
+ _SI = (uint16) Client;
+ asm or si,si
+ asm jz xit // if (Client) ...
+ //--- fill current event entry with mask, key code and sprite
+ asm mov bx,EvtHead // take queue head pointer
+ asm inc byte ptr EvtHead // update queue head pointer
+ asm shl bx,3 // * 8
+ _AX = Current;
+ asm mov Evt[bx].(struct EVENT)X,ax // key code
+ asm mov ax,KEYB // event mask
+ asm mov Evt[bx].(struct EVENT)Msk,ax // event mask
+ //asm mov Evt[bx].(struct EVENT)Y,dx // row
+ asm mov Evt[bx].(struct EVENT)Ptr,si // SPRITE pointer
+
+ xit:
+
+ asm in al,61h // kbd control lines
+ asm push ax // save it
+ asm or al,80h // set the "enable kbd" bit
+ asm out 61h,al // and write it out
+ asm pop ax // original control port value
+ asm out 61h,al // write it back
+ asm mov al,20h // send End-Of-Interrupt
+ asm out 20h,al // to the 8259 IC
+ */
+ warning("STUB: KEYBOARD::NewKeyboard");
}
} // End of namespace CGE