799900f45a
latest version of musashi engine includes floating point emulation (plus a few patches to add in missing opcodes needed by ack - see tags JFF & TBB) added a few missing linux syscalls in sim.c pascal now runs pretty well quick test with modula2 passes c gets the floating point numbers wrong, so more work needed here other languages untested plat/linux68k/emu/build.lua is probably not quite right - the softfloat directory is compiled in the wrong place
47 lines
759 B
C
47 lines
759 B
C
#include <stdio.h>
|
|
#include <termios.h>
|
|
#include <unistd.h>
|
|
#include <sys/types.h>
|
|
#include <sys/time.h>
|
|
|
|
void changemode(int dir)
|
|
{
|
|
static struct termios oldt, newt;
|
|
|
|
if ( dir == 1 )
|
|
{
|
|
tcgetattr( STDIN_FILENO, &oldt);
|
|
newt = oldt;
|
|
newt.c_lflag &= ~( ICANON | ECHO );
|
|
tcsetattr( STDIN_FILENO, TCSANOW, &newt);
|
|
}
|
|
else
|
|
tcsetattr( STDIN_FILENO, TCSANOW, &oldt);
|
|
}
|
|
|
|
int kbhit (void)
|
|
{
|
|
struct timeval tv;
|
|
fd_set rdfs;
|
|
|
|
tv.tv_sec = 0;
|
|
tv.tv_usec = 0;
|
|
|
|
FD_ZERO(&rdfs);
|
|
FD_SET (STDIN_FILENO, &rdfs);
|
|
|
|
select(STDIN_FILENO+1, &rdfs, NULL, NULL, &tv);
|
|
return FD_ISSET(STDIN_FILENO, &rdfs);
|
|
|
|
}
|
|
|
|
int osd_get_char() {
|
|
changemode(1);
|
|
int ch = -1;
|
|
while(kbhit())
|
|
ch = getchar();
|
|
changemode(0);
|
|
return ch;
|
|
}
|
|
|