add keyboard and mouse tests
This commit is contained in:
parent
8a61d6e674
commit
4a7beacbdc
28
TEST/HELPERS.C
Normal file
28
TEST/HELPERS.C
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
#include "helpers.h"
|
||||||
|
#include "dgl.h"
|
||||||
|
#include <conio.h>
|
||||||
|
#include <dos.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
void clrscr(unsigned char attr) {
|
||||||
|
union REGS r;
|
||||||
|
r.h.ah = 6;
|
||||||
|
r.h.al = 0; // 0 = clear
|
||||||
|
r.h.ch = 0; // y1
|
||||||
|
r.h.cl = 0; // x1
|
||||||
|
r.h.dh = 24; // y2
|
||||||
|
r.h.dl = 79; // x2
|
||||||
|
r.h.bh = attr; // attr (char + color) to fill with
|
||||||
|
int386(0x10, &r, &r);
|
||||||
|
gotoxy(0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void gotoxy(int x, int y) {
|
||||||
|
union REGS r;
|
||||||
|
r.h.ah = 2;
|
||||||
|
r.h.bh = 0;
|
||||||
|
r.h.dh = y;
|
||||||
|
r.h.dl = x;
|
||||||
|
int386(0x10, &r, &r);
|
||||||
|
}
|
||||||
|
|
|
@ -21,3 +21,6 @@ extern void _breakpoint();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
void clrscr(unsigned char attr);
|
||||||
|
void gotoxy(int x, int y);
|
||||||
|
|
||||||
|
|
63
TEST/KBRD.C
Normal file
63
TEST/KBRD.C
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
#include "kbrd.h"
|
||||||
|
#include "dgl.h"
|
||||||
|
#include <dos.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "helpers.h"
|
||||||
|
|
||||||
|
void display_key_states(void) {
|
||||||
|
int x, y;
|
||||||
|
|
||||||
|
gotoxy(0, 2);
|
||||||
|
for (y = 0; y < 8; ++y) {
|
||||||
|
for (x = 0; x < 16; ++x) {
|
||||||
|
unsigned char pressed;
|
||||||
|
pressed = keys[y * 16 + x] > 0;
|
||||||
|
printf("%d", pressed);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_keyboard(void) {
|
||||||
|
boolean result;
|
||||||
|
KEY k;
|
||||||
|
|
||||||
|
clrscr(0);
|
||||||
|
|
||||||
|
ASSERT(keyboard_is_initialized() == FALSE);
|
||||||
|
|
||||||
|
result = keyboard_init();
|
||||||
|
ASSERT(result == TRUE);
|
||||||
|
ASSERT(keyboard_is_initialized() == TRUE);
|
||||||
|
|
||||||
|
printf("Keyboard state\n");
|
||||||
|
display_key_states();
|
||||||
|
|
||||||
|
while (!keys[1]) {
|
||||||
|
display_key_states();
|
||||||
|
}
|
||||||
|
|
||||||
|
// delay to give enough time for key to be released before next ...
|
||||||
|
delay(500);
|
||||||
|
|
||||||
|
gotoxy(0, 18);
|
||||||
|
printf("Press any key ...\n");
|
||||||
|
|
||||||
|
k = keyboard_read_key();
|
||||||
|
printf("Pressed key %d\n", k);
|
||||||
|
|
||||||
|
// same thing, giving enough time for key to be released ...
|
||||||
|
delay(500);
|
||||||
|
printf("Press that same key again ...\n");
|
||||||
|
keyboard_wait_for_key(k);
|
||||||
|
|
||||||
|
result = keyboard_shutdown();
|
||||||
|
ASSERT(result == TRUE);
|
||||||
|
ASSERT(keyboard_is_initialized() == FALSE);
|
||||||
|
|
||||||
|
gotoxy(0, 23);
|
||||||
|
printf("Press a key to continue...\n");
|
||||||
|
|
||||||
|
getch();
|
||||||
|
}
|
||||||
|
|
7
TEST/KBRD.H
Normal file
7
TEST/KBRD.H
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
#ifndef DGL_TEST_KBRD_H_INCLUDED
|
||||||
|
#define DGL_TEST_KBRD_H_INCLUDED
|
||||||
|
|
||||||
|
void test_keyboard(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
@ -4,7 +4,10 @@ target_name = test
|
||||||
|
|
||||||
object_files = blit.obj &
|
object_files = blit.obj &
|
||||||
fixed.obj &
|
fixed.obj &
|
||||||
|
helpers.obj &
|
||||||
|
kbrd.obj &
|
||||||
line.obj &
|
line.obj &
|
||||||
|
mouse.obj &
|
||||||
pal.obj &
|
pal.obj &
|
||||||
pcx.obj &
|
pcx.obj &
|
||||||
pset.obj &
|
pset.obj &
|
||||||
|
|
48
TEST/MOUSE.C
Normal file
48
TEST/MOUSE.C
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
#include "mouse.h"
|
||||||
|
#include "dgl.h"
|
||||||
|
#include <dos.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "helpers.h"
|
||||||
|
|
||||||
|
void test_mouse(void) {
|
||||||
|
boolean result;
|
||||||
|
|
||||||
|
clrscr(0);
|
||||||
|
|
||||||
|
ASSERT(mouse_is_initialized() == FALSE);
|
||||||
|
|
||||||
|
result = mouse_init();
|
||||||
|
ASSERT(result == TRUE);
|
||||||
|
ASSERT(mouse_is_initialized() == TRUE);
|
||||||
|
|
||||||
|
// this may seem a little weird to check for a mouse AFTER init, but
|
||||||
|
// it's the init call that determines if a mouse is present :)
|
||||||
|
if (mouse_is_present()) {
|
||||||
|
printf("Mouse detected. Showing mouse state.\n");
|
||||||
|
|
||||||
|
mouse_show();
|
||||||
|
|
||||||
|
while (!kbhit()) {
|
||||||
|
gotoxy(0, 2);
|
||||||
|
printf("X: %03d\n", mouse_x);
|
||||||
|
printf("Y: %03d\n", mouse_y);
|
||||||
|
printf("Buttons: %03d\n", mouse_buttons);
|
||||||
|
}
|
||||||
|
|
||||||
|
mouse_hide();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
printf("Mouse not detected. Skipping.\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// need to close down the mouse subsystem even if one is not present
|
||||||
|
result = mouse_shutdown();
|
||||||
|
ASSERT(result == TRUE);
|
||||||
|
ASSERT(mouse_is_initialized() == FALSE);
|
||||||
|
|
||||||
|
gotoxy(0, 23);
|
||||||
|
printf("Press a key to continue...\n");
|
||||||
|
|
||||||
|
getch();
|
||||||
|
}
|
||||||
|
|
7
TEST/MOUSE.H
Normal file
7
TEST/MOUSE.H
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
#ifndef DGL_TEST_MOUSE_H_INCLUDED
|
||||||
|
#define DGL_TEST_MOUSE_H_INCLUDED
|
||||||
|
|
||||||
|
void test_mouse(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
18
TEST/TEST.C
18
TEST/TEST.C
|
@ -3,16 +3,18 @@
|
||||||
#include "dgl.h"
|
#include "dgl.h"
|
||||||
#include "helpers.h"
|
#include "helpers.h"
|
||||||
|
|
||||||
#include "fixed.h"
|
|
||||||
#include "vector2.h"
|
|
||||||
#include "surface.h"
|
|
||||||
#include "pset.h"
|
|
||||||
#include "line.h"
|
|
||||||
#include "rect.h"
|
|
||||||
#include "blit.h"
|
#include "blit.h"
|
||||||
#include "text.h"
|
#include "fixed.h"
|
||||||
|
#include "kbrd.h"
|
||||||
|
#include "line.h"
|
||||||
|
#include "mouse.h"
|
||||||
#include "pal.h"
|
#include "pal.h"
|
||||||
#include "pcx.h"
|
#include "pcx.h"
|
||||||
|
#include "pset.h"
|
||||||
|
#include "rect.h"
|
||||||
|
#include "surface.h"
|
||||||
|
#include "text.h"
|
||||||
|
#include "vector2.h"
|
||||||
|
|
||||||
SURFACE *backbuffer = NULL;
|
SURFACE *backbuffer = NULL;
|
||||||
|
|
||||||
|
@ -39,6 +41,8 @@ int main(void) {
|
||||||
ASSERT(backbuffer != NULL);
|
ASSERT(backbuffer != NULL);
|
||||||
ASSERT(backbuffer->width == 320 && backbuffer->height == 200);
|
ASSERT(backbuffer->width == 320 && backbuffer->height == 200);
|
||||||
|
|
||||||
|
test_keyboard();
|
||||||
|
test_mouse();
|
||||||
test_fixed();
|
test_fixed();
|
||||||
test_vector2i();
|
test_vector2i();
|
||||||
test_vector2f();
|
test_vector2f();
|
||||||
|
|
Loading…
Reference in a new issue