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
		
			
				
	
	
		
			46 lines
		
	
	
	
		
			759 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			46 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;
 | |
| }
 | |
| 
 |